文章内容可能不全面和详细,还需要各位看官多动手百度

博客原文地址:Hugo博客部署到腾讯云轻量级服务器

一.前置条件

1. 购买服务器和服务器

我买的服务器是腾讯云的轻量级服务器,双十一的时候打折买的,3年144元,还有一个域名3年89元,如果是学生或者经济紧张可以考虑节日的时候买。

性能:1核2GB,每月500GB流量,固定50GB的硬盘空间,选择的镜像为Centos操作系统,如果博客访问量不是特别大,这种性能对于搭建博客还是比较合适。

2. 搭建hugo博客

参考我的这篇文章:Hugo博客搭建,或者是百度。

3. 域名备案

如果hugo博客部署到github,那么可以不需要备案,因为github属于国外的服务器,但是如果自己用大陆服务器搭建就需要备案,否则用域名打开网页后会提示网站需要备案,备案请点击这里:腾讯云域名备案

域名备案要个把月时间,所以请先备案好域名,不然只能用ip地址访问博客了。

二.服务器下载nginx

进入腾讯云控制台登录服务器,先确保Centos有sudo权限

sudo -l

确保80端口(http)和443端口(https)没有被占用,如果没有显示任何结果则说明没有被占用

sudo netstat -tulpn | grep :80
sudo netstat -tulpn | grep :443

安装nginx

sudo yum install -y nginx

设置开机启动nginx

sudo systemctl enable nginx

启动nginx

sudo systemctl start nginx

查看是否启动nginx

sudo systemctl status nginx

在浏览器搜索框输入您的服务器公网ip地址,如果会出现nginx的页面,说明可以导航到您的服务器,即nginx安装成功

三.防火墙设置

为了使外部用户可以访问web服务器,需要开放防火墙,主要是80端口和443端口,可以在服务器的控制台手动设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qH8TStrd-1639634355045)(3.png)]

也可以在服务器终端输入命令

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

四.将静态网页传送到服务器

hugo通过hugo命令可以生成一个public文件夹,这里面就是网页上展示的东西

现在要做的事情就是把public文件夹里面的内容传送到服务器上,不过要先在服务器里面建一个public文件夹,我选择的位置是建在 home 文件夹里面

上传文件,我采用的方法是rsync的方式,命令如下

注意:执行这条命令时要在终端把位置调到博客目录下,但是不要进public文件里,因为public后面的/表示public文件夹里面的内容

rsync -avuz --progress --delete public/ root@ip地址:/home/public/

执行这条命令后终端会提示要输入服务器的登录密码,如果之前没有设置密码需要在服务器的控制台设置好

上述命令-avuz表示的意思可以看这篇文章rsync的选项说明--progress表示显示执行过程,--delete表示删除服务器上public里原先的文件,然后上传新的文件,这个命令可以根据自己的需要选择加上与否

输完命令后看看服务器的/home/public/里面有没有对于的文件就可以了

五.申请ssl证书

为了让网站更安全,首先申请一下https的ssl证书,腾讯云会送一个一年免费的,不过要先申请,然后下载这个证书。也可以通过Let’s encrypt网站申请免费的。不过我用的暂时是腾讯云的。

会得到如下文件

我们只需要Nginx文件夹里面的秘钥对文件,因为在nginx的配置文件里面配置https的时候需要用到,把这两个公秘钥文件上传到服务器。

我是传到了服务器的/etc/nginx目录里,因为我的nginx配置文件也在这个目录下,所以把公秘钥也放在这个目录下,方便调用。先在终端把目录定位到与Nginx文件夹同一层级的地方,命令如下

注意这里不能加上--delete,否则会把里面的文件都删掉,我就踩了这个坑,导致要重新安装nginx

rsync -avuz --progress Nginx/ root@ip地址:/etc/nginx/

于是在/etc/nginx下多了两个文件如下

六.配置nginx的nginx.conf文件

上面讲了我的nginx.conf在/etc/nginx目录下,所以把目录定位到这里,然后输入sudo vim nginx.conf/

下面是我的配置文件里面的内容,标出了要配置的几个地方,其他一般是文件之前默认生成的,若有不懂的地方请百度

# 要配置的第一个地方,这里的用户要改成root,不然可能会没有权限
user root;

worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;
    
    # 配置http
    server {
        # 要配置的第二个地方,80访问端口
        listen       80 default_server; 
        listen       [::]:80 default_server;
        
        # 要配置的第三个地方,域名
        server_name www.sulvblog.cn;
        rewrite ^(.*) https://$server_name$1 permanent; #自动从http跳转到https
        # 要配置的第四个地方,这里指向public文件夹
        root /home/public;

        include /etc/nginx/default.d/*.conf;
        
        # 要配置的第五个地方
        location / {
            root /home/public;
            index  index.html index.htm;
        }
        
        # 要配置的第六个地方
        error_page 404 /404.html;
        location = /40x.html {
            root   /home/public;
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    
    # 配置https
     server {
         listen 443 ssl;
         # 要配置的第七个地方
         server_name www.sulvblog.cn;
         root /home/public;
         
         # 要配置的第八个地方
         ssl_certificate /etc/nginx/1_sulvblog.cn_bundle.crt;
         ssl_certificate_key /etc/nginx/2_sulvblog.cn.key;
         
         # 要配置的第九个地方,可以按照我的写法
         ssl_session_timeout 10m;
         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         
         # 要配置的第十个地方
         error_page 404 /404.html;
         location = /404.html {
              root /home/public;
         }

         include /etc/nginx/default.d/*.conf;
     }

}

其中端口 80 用于配置 http 服务,端口 443 用于配置 https 服务,这样就完成了nginx 的配置

修改完成后重加载配置文件

sudo nginx -s reload

检查 nginx 服务的运行情况

sudo systemctl status nginx

重启 nginx 服务

sudo systemctl restart nginx

通过域名访问网站,如果出现博客首页,说明配置成功了,如果域名还没有备案成功,用ip地址访问也可以跳转到博客首页

七.后续发布文章

文章在本地写好后,生成public文件,用rsync上传到服务器就可以了。

到这里就结束了,我也是收集了不少资料,踩了不少坑,毕竟也是第一次弄,有什么问题请留言,一起探讨💦。

更多推荐