• CentOS 7.6基于Nginx静态服务器搭建个人网站


    1 前言

    之前文章 建站过程中的踩坑记录:自定义域名、百度收录与备案 中提到,我将会把个人网站从 GitHub Pages 迁移到腾讯云服务器,本文就针对这个过程做个笔记。

    备注:我的个人网站是使用 VuePress 生成的静态网页。

    2 安装 Nginx

    在安装 Nginx 之前,先看看 yum 的源,执行以下命令:

    cat /etc/yum.repos.d/CentOS-Base.repo
    
    • 1

    输出结果如下:

    [extras]
    gpgcheck=1
    gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
    enabled=1
    baseurl=http://mirrors.tencentyun.com/centos/$releasever/extras/$basearch/
    name=Qcloud centos extras - $basearch
    [os]
    gpgcheck=1
    gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
    enabled=1
    baseurl=http://mirrors.tencentyun.com/centos/$releasever/os/$basearch/
    name=Qcloud centos os - $basearch
    [updates]
    gpgcheck=1
    gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
    enabled=1
    baseurl=http://mirrors.tencentyun.com/centos/$releasever/updates/$basearch/
    name=Qcloud centos updates - $basearch
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    可以看到由于我买的是腾讯云服务器,所以yum源默认为腾讯源,国内的源比较快,就不用修改了。

    备注:如果源不是国内的话,就自己改一下吧,注意改之前先备份,避免出问题。

    接下来执行以下命令安装 Nginx:

    yum install nginx
    
    • 1

    3 启动 Nginx

    安装好后,我们先启动 Nginx 看看效果,命令如下:

    nginx
    
    • 1

    可以执行以下命令在应用程序中看看 Nginx 有没有启动成功:

    top -d 1
    
    • 1

    接下来我们直接访问一下服务器的公网 ip 看看,比如我这里的是:119.29.8.163,可以看到以下界面,表示 Nginx 服务器启动成功:

    在这里插入图片描述

    4 配置 Nginx

    启动 Nginx 之后会显示默认网站,如果想要它显示指定的静态网站,需要手动配置。

    1. 首先,我们先把静态网站上传到服务器,比如此处我将静态的 HTML 文件放在 /opt/site 目录中。

    2. 进入 Nginx 安装目录:

    cd /etc/nginx
    
    • 1
    1. 编辑 nginx.conf 文件和 nginx.conf.default 文件,将 http.server.location /root 指向云服务器中的静态网站文件夹,此处为 /opt/site
    http {
        server {
            location / {
                root   /opt/site;            # 静态html文件存放目录
                index  index.html index.htm; # 默认首页
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 配置好后,重启 Nginx
    nginx -s reload
    
    • 1

    重启完成后,刷新 119.29.8.163 页面应该就能看到部署的网站了。

    5 配置 HTTPS 服务

    5.1 申请 SSL 证书

    我用的是腾讯云服务器,所以可以直接在腾讯云中申请的 SSL 证书,打开腾讯云控制台的 SSL 证书页面,申请免费证书:

    注意:

    • 免费证书有效期是一年,一年后手动重新申请即可;
    • 申请 SSL 证书的域名需要备案。

    在这里插入图片描述

    填写好资料后,提交申请即可:

    在这里插入图片描述

    5.2 下载 SSL 证书

    申请通过后,可以在腾讯云控制台的 SSL 证书页面 找到对应的证书并下载(注意:下载 Nginx 类型的证书):

    在这里插入图片描述

    下载完成后,得到 liuyuxin.site_nginx.zip 压缩包,解压后目录结构如下:

    在这里插入图片描述

    5.3 使用 SSL 证书

    首先,我们现在腾讯云控制台的 DNS 解析 DNSPod 页面,将域名解析到云服务器 IP,这样通过域名就可以访问个人网站了。

    接着开始配置 SSL 证书,需要上传到 Nginx 服务器的文件如下:

    文件说明
    liuyuxin.site_bundle.crt证书文件
    liuyuxin.site.key私钥文件

    将这两个文件放到云服务器的 Nginx 安装目录(/etc/nginx)中的 ssl 文件夹中,这个路径可自定义,后续可以在配置文件中指定。

    编辑 /etc/nginx/nginx.conf 文件,开启 HTTPS 默认端口 443:

    http {
        server {
            # SSL 默认访问端口号为 443
            listen 443 ssl; 
            # 配置绑定证书的域名
            server_name liuyuxin.site; 
            # 配置证书文件的相对路径或绝对路径
            ssl_certificate "/etc/nginx/ssl/liuyuxin.site_bundle.crt";
            # 配置私钥文件的相对路径或绝对路径
            ssl_certificate_key "/etc/nginx/ssl/liuyuxin.site.key"; 
            ssl_session_timeout 5m;
            # 配置协议
            ssl_protocols TLSv1.2 TLSv1.3; 
            # 配置加密套件,写法遵循 openssl 标准
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
            ssl_prefer_server_ciphers on;
            location / {
                # 网站主页路径
                root   /opt/site;
                index  index.html index.htm;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    配置好后,执行以下命令验证配置文件问题,返回 ok 则表示配置文件可正常运行:

    nginx -t
    
    • 1

    重启 Nginx 服务:

    nginx -s reload
    
    • 1

    此时,我们可以通过 HTTPS 协议访问网页了:https://liuyuxin.site/

    5.4 HTTP 自动跳转 HTTPS

    为保证数据安全,我这里将 HTTP 请求自动重定向到了 HTTPS,编辑 /etc/nginx/nginx.conf 文件,新增重定向配置:

    http {
        server {
            # SSL 默认访问端口号为 443
            listen 443 ssl; 
            # 配置绑定证书的域名
            server_name liuyuxin.site; 
            # 配置证书文件的相对路径或绝对路径
            ssl_certificate "/etc/nginx/ssl/liuyuxin.site_bundle.crt";
            # 配置私钥文件的相对路径或绝对路径
            ssl_certificate_key "/etc/nginx/ssl/liuyuxin.site.key"; 
            ssl_session_timeout 5m;
            # 配置协议
            ssl_protocols TLSv1.2 TLSv1.3; 
            # 配置加密套件,写法遵循 openssl 标准
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
            ssl_prefer_server_ciphers on;
            location / {
                # 网站主页路径
                root   /opt/site;
                index  index.html index.htm;
            }
        }
        server {
            listen 80;
            # 配置绑定证书的域名
            server_name liuyuxin.site; 
            # 把 http 的域名请求转成 https
            return 301 https://$host$request_uri; 
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    配置好后,执行以下命令验证配置文件,并重启 Nginx 服务:

    nginx -t
    nginx -s reload
    
    • 1
    • 2

    6 自动部署

    由于手动更新云服务器上的静态网站文件比较麻烦,因此这里我写了一个 shell 脚本自动部署网站,其原理很简单,就是通过 ssh 把 Vuepress 编译生成的静态网页上传到云服务器的指定目录,代码如下:

    # 确保脚本抛出遇到的错误
    set -e
    
    # 生成静态网站
    npm run docs:build
    echo "==================== build html done ===================="
    
    # 清除服务器上的静态网站
    ssh root@119.29.8.163 "rm -rf /opt/site"
    echo "==================== clear html done ===================="
    
    # 将静态网站部署到服务器
    scp -r ./site root@119.29.8.163:/opt
    echo "==================== deploy html done ===================="
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:该脚本会先清除服务器上原来的网站,再部署新的网站,因此需要输入两次密码。

  • 相关阅读:
    后台管理系统加水印(react)
    设计模式——行为型模式
    基于虚拟阻抗的下垂控制——孤岛双机并联Simulink仿真
    Centos 7 使用国内镜像源更新内核
    卡尔曼家族从零解剖-(05)卡尔曼滤波→公式推导,应用通俗讲解,c++代码示例
    第一章 基础算法(二)
    Js获取url里面的参数
    Spring Boot
    协议-http协议-基础概念04-长短连接-重定向-cookie-缓存-代理
    【Transformers】第 7 章:文本表示
  • 原文地址:https://blog.csdn.net/weixin_40026797/article/details/126919886