Hugo博客部署到阿里云服务器
一、安装前准备
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 /etc/nginx/conf.d/default.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;
}
}
完成以上配置后执行systemctl restart nginx.service
重启 Nginx 服务,分别以http
和https
方式访问个人域名测试!