一、安装前准备

1. 购买服务器和域名

我购买的是 阿里云 轻量服务器,2 核-2GB 内存-系统盘 60GB,经过阿里云学生认证 之后一年是 98 元,对于访问量不是特别大的个人博客而言,完全够用。每年的双十一和六一八都会有一些活动,可以考虑在这一时期购买。

域名购买我也是选择的阿里云,一年是 29 元,也相对比较便宜。域名代表服务器的地址,所以需要将域名和虚拟主机绑定 在一起,并将域名解析 到该主机的 IP 地址,这样才能通过域名正常访问该主机上的网站内容。

2. 安装 Hugo 服务

可以参考我写的Hugo个人博客搭建 ,建议采用源码安装方式

3. 网站备案

ICP备案:根据《非经营性互联网信息服务备案管理办法》条例,在中华人民共和国境内提供非经营性互联网信息服务,应当办理备案。对于没有备案的网站将予以罚款或关闭。直接使用阿里云域名备案 服务即可,个人网站相对比较快。

公安备案:网站备案是根据国家法律法规需要网站的所有者向国家有关部门申请的备案,公安局备案是其中一种。公安局备案一般按照各地公安机关指定的地点和方式进行,操作流程会比ICP备案流程简单,主要是以登记为主。有关备案流程大家可以访问全国互联网安全管理服务平台 ,大概两周左右时间就可以备案成功。

以百度官网为例,京公安网备11000002000001是公安备案,京ICP证030173号是ICP备案

二、防火墙设置

点击阿里云的控制台,进入个人的轻量云服务器的防火墙设置,确保 80 端口(http访问)和 443 端口(https访问)开放

三、安装 Nginx

以下命令需以管理员身份运行:

# 安装必要的包
yum install openssl zlib pcre

# Nginx 不在默认的 yum 源中,可以使用 epel 或者官网的 yum 源,下面使用官网的 yum 源。
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

# 安装
yum -y install nginx

# 设置开机启动并启动Nginx服务
systemctl enable nginx
systemctl start nginx

# 启动Nginx
systemctl start nginx.service

# 查看是否启动Nginx
systemctl status nginx

# Nginx重启动服务
systemctl restart nginx.service

访问个人域名,看到如下的图片表示 NGINX 服务启动成功:

四、静态网页生成

下面是我的MyBlog目录结构,其中的public文件夹就是所有静态网页资源存储的位置,是通过进入文件根目录执行hugo -D生成的,接下来要做的事情就是把public文件夹里面的内容传送到服务器上。

五、安装SSL证书

https访问方式相对于http访问更安全,阿里云赠送一年免费的 SSL 证书,按照申请流程 进行。接着阅读阿里云文档如何在Nginx安装证书 ,内容十分详细,按部就班完成即可。

这里我简述一下在NGINX中安装证书过程中nginx.conf配置文件内容,执行sudo vim /usr/local/nginx/conf/nginx.conf,修改证书配置文件,下面是我的配置文件内容。大家在应用到个人服务器的时候主要是修改域名和 public 文件夹路径,SSL证书位置

server {
    listen 443 ssl;
    # 配置HTTPS的默认访问端口为443。
    # 如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    # 如果使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name shaohanyun.top; #需要将yourdomain.com替换成证书绑定的域名。
    root html;
    index index.html index.htm;
    ssl_certificate /etc/nginx/conf.d/cert/123456_www.shaohanyun.top.pem;  # 需要将cert-file-name.pem替换成已上传的证书文件的名称。
    ssl_certificate_key /etc/nginx/conf.d/cert/123456_www.shaohanyun.top.key; # 需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    # 表示使用的加密套件的类型。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # 表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;
    location / {
        root /home/aliyun/MyBlog/public/ ;  # 站点目录设置为之前Hugo生成的public路径即可
        index index.html;
    }
}

# 设置HTTP请求自动跳转HTTPS
server {
    listen 80;
    server_name shaohanyun.top; #需要将yourdomain替换成证书绑定的域名。
    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    location / {
        index index.html index.htm;
    }
}

完成以上配置后执行/bin/systemctl restart nginx.service重启 Nginx 服务,分别以httphttps方式访问个人域名测试!