都2120年了,还有人想搭建自己的博客,不会吧不会吧🤡🤡🤡

鸣谢

✍️ Gridea 一个静态博客写作客户端。你可以用它来记录你的生活、心情、知识、笔记、创意... ...
Github
Gridea 主页
示例网站

1.获取一台vps服务器,并拥有root权限,并安装网页代理软件Nginx

vps可自行购买,这里不做任何推广,并根据厂商指引,获取您vps的root权限。
为能够实现网页服务,我们需要在vps上搭建网页代理软件,常用的软件有Nginx, Apache, Tomcat等等,这里本文将以Nginx为例实现博客的搭建。
👉安装Nginx
假设您vps服务器的系统是CentOS,并且防火墙已经开放了80+443端口,以及公网ip地址为233.233.233.233,那么在root权限下输入如下指令:

yum install nginx -y

等待安装完成即可;

开启Nginx服务并检查开启状态:

systemctl start nginx && systemctl status nginx

如若返回值里有"Active: active (running)"字样,那么则代表Nginx服务已经启动成功。如若您按照前文所说,防火墙开放了80+443端口,那么在浏览器键入http://233.233.233.233,应当可以访问到CentOS下的Nginx的欢迎界面。


设置Nginx开机自启:

systemctl enable nginx

2. 域名解析+配置Nginx以及其主要参数说明

域名解析

假设您已经拥有域名sbdj.com,则您需要将该域名解析到您的vps上,具体如何进入解析界面则需要根据您的域名购买托管商界面选择,不会就去百度🙄;

  • "记录类型"需要选择"A记录"
  • "主机记录"一栏,应当填写您需要解析的二级域名名称,这里我们希望最终vps的访问网页为www.sbdj.com,那么这里"主机记录"就要填写www
  • "记录值"一栏填入您vps的公网ip地址,在本文中我们设置为233.233.233.233
  • 其他的选项默认即可
    随后,等待1-10分钟,然后在随便一个联网的机器中的终端里键入指令
ping www.sbdj.com

若是能够返回ip地址233.233.233.233,那么就代表您已经成功解析了域名。

配置Nginx

Nginx的默认配置文件路径: "/etc/nginx/nginx.conf",查看该文件,找到大括号server{......},这里面便包含了nginx网页路径的配置,

  • 其中"root /usr/share/nginx/html"则是yum/apt-get 安装的Nginx的默认网页路径,该路径下的index.html将会显示在您http://233.233.233.233下
  • "index index.html"选项则代表了网页默认索引,即访问http://233.233.233.233即可访问目录下的index.html,而假如您目录下有另外一个html文件,名称是test.html,若想访问该文件,则需要http://233.233.233.233/test.html,当然您可把index设置为"index test.html",那么在浏览器访问时候便可不需要带test.html后缀了。
  • "listen 80"或者"listen 443 ssl"则代表了nginx服务所使用的端口,80对应http协议的默认端口,443对应https协议的默认端口。在这里我们先设置为80,后续配置ssl时候再讲如何设置443.
  • server_name 这里是您域名的解析信息,如您的域名为www.sbdj.com,那么外部使用http://www.sbdj.com进行访问时候,则会载入server{......}的配置。
  • ssl_certificate 为设置443端口的https协议时候ssl的证书路径
  • ssl_certificate_key 为设置443端口的https协议时候ssl的公钥路径

所以,综上所述:
👉我们修改server_name为 www.sbdj.com,listen端口先设置为80,网页路径如若有需要可自行修改,本文中将采用nginx默认路径"/usr/share/nginx/html/"作为讲解依据。修改nginx.conf文件完成后,重启nginx服务:

systemctl restart nginx

👉在浏览器键入http://www.sbdj.com,可以正常访问,代表此步骤已经完美成功。

3.下载Gridea,并配置其远程vps的路径

  1. Github_Releases 中选择您的操作系统的Gridea下载。
  2. 打开Gridea,选择其左侧的"server"按钮,如下图:

    其中有说明价值的是:
    • Port, 端口号,这里应当是您vps的ssh端口,默认为22,如您自己修改过,请在这里保持一致
    • Username, 用户名,这里因为操作的远程路径是root所属,所以我们需要root权限
    • Remote Path, 远程路径,正如上文所说,这里我们使用nginx默认路径"/usr/share/nginx/html"

😎至此,vps上Gridea+Nginx的http协议博客已经搭建完毕,您可以直接在Gridea客户端写markdown语法的文章,然后点击客户端左侧下方的"同步",即可实时同步到远程vps端便大家访问。

4.使用acme.sh脚本配置网站自动续签https ssl证书

👉注意:这里的操作均需要使用root,并且nginx等东西的配置已经像上文所述配置完成并成功运行Gridea+nginx

  1. 下载acme.sh并安装
    curl https://get.acme.sh | sh
    
  2. 刷新环境变量
    source /root/.bashrc
    
  3. 修改默认CA为 LetsEncrypt
    acme.sh --set-default-ca --server letsencrypt
    
  4. 为示例域名www.sbdj.com申请ssl证书
    acme.sh --issue -d www.sbdj.com --webroot /usr/share/nginx/html/
    
  5. 安装证书到指定位置
    acme.sh --install-cert -d www.sbdj.com \
     --key-file       /usr/local/nginx/www.sbdj.com.key  \
     --fullchain-file /usr/local/nginx/www.sbdj.com.crt
    
  6. 配置/etc/nginx/nginx.conf文件
    根据上一步中证书安装的路径,
    • 配置ssl_certificate 后的证书路径为 "/usr/local/nginx/www.sbdj.com.crt"
    • 配置ssl_cerfificate_key后的证书公钥路径为"/usr/local/nginx/www.sbdj.com.key"
  7. 重启nginx
    systemctl restart nginx
    

事实上,acme.sh所申请的证书时效只有三个月,所以时间到了还需要续签申领🙃,好在acme.sh已经为我们写好了定时申领程序😝
👉使用指令

crontab -l
37 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

从返回的结果中可以看到,acme.sh已经自动写入了定时更新申领ssl证书的的任务,该crontab意为每小时的第37分钟执行acme.sh脚本。

😎至此,acme.sh申请免费ssl证书的教程结束。

5. 本教程nginx.conf示例模板文件下载

😋😋😋配有贴心注释的Nginx模板dj_nginx.conf下载地址: 点我