众所周知,使用 GitHub Page 的访问速度令人发指,当然也有很多人选择部署到 Vercel,这便是我之前的选择,免费,同时还有着更快的速度。但说到底,云服务器往往是更好的选择,只要钱到位 😑。
使用宝塔面板可以比较方便快速的进行部署,不过我更想自己实际动手操作,也一边学习 Linux,就不使用了。
本文假设你拥有 Hexo 建站相关的知识,相关的问题不再赘述,你也可以点击这里查看 Hexo 建站相关的知识。
在阅读本文之前,你需要做好以下准备:
推荐腾讯云,作为云服务的大厂还是非常靠谱的,唯一制约我们操作的就是昂贵的价格了。日常价对于学生党来说真心太贵,推荐在打折、活动时购买,很多时候首年和首月往往还是便宜的,续费就搞不起了,所以还是尽可能优惠的时候买长点吧。对个人博客而言,最基础的 1 核 2G 就足够使用了,也能让你在部署博客以外实现许多想法。
你可以在腾讯云等域名供应商中购买域名,总而言之域名还是挺便宜的,一年只需要几块钱。
以下操作以 Ubuntu 20.04 为例,其他的系统类似。
打开任意一个终端,使用 SSH 连接到云服务器
ssh username@你的服务器公网ip
一般用户名是 root
,之后输入密码即可。
apt-get install git
选个位置创建仓库:
cd /home
mkdir git
cd git
git init --bare blog.git
mkdir blog
其中,blog.git
是 git 仓库,blog
用于存放内容。
Git 钩子(hooks)是在 Git 仓库中特定事件(certain points)触发后被调用的脚本。通过钩子可以自定义 Git 内部的相关(如 git push)行为,在开发周期中的关键点触发自定义的行为。
我们在本地的项目文件 push 到服务器时,只是提交到了创建的 Git 服务器创建的裸仓库中。还需要进入服务器的 web 运行目录,通过 git pull 命令拉取到 web 目录。为了实现过程的自动化,可以使用 Git 中的钩子来解决该问题。
服务端钩子就是你 push 之后的事情服务器要运行的脚步,有用推的步骤只有一个,所以钩子只有四个 pre-receive 接受之前 update 更新之前 post-update 更新之后 post-receive 接受之后
在 /home/git/blog.git/hooks
目录下新建 post-receive
vim /home/git/blog.git/hooks/post-receive
写入以下文本:
git --work-tree=/home/git/blog --git-dir=/home/git/blog.git checkout -f
赋予执行权限:
chmod +x /home/git/blog.git/hooks/post-receive
apt-get install nginx
Nginx 安装完成之后启动调试
service nginx start
访问云服务器的公网 ip,查看是否有 Nginx 搭建成功的字样。
然后修改 Nginx 的配置文件:
rm -rf /etc/nginx/sites-available/default
vim /etc/nginx/sites-available/emoryhuang.cn
删除默认配置文件,并在同个目录下新建 emoryhuang.cn
写入类似如下的内容:
server {
listen 80;
server_name emoryhuang.cn www.emoryhuang.cn; # 你的域名
root /home/git/blog; # 网站根目录
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 你也可以根据需要配置 ssl
# listen 443 ssl;
# ssl_certificate /etc/nginx/conf/ssl/emoryhuang.cn.pem;
# ssl_certificate_key /etc/nginx/conf/ssl/emoryhuang.cn.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_protocols TLSv1.2;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
}
只有在 sites-enabled
目录下的配置文件才能够真正被访问,但是可以将文件放在 sites-available
目录下用来存档或生成链接:
ln -s /etc/nginx/sites-available/emoryhuang.cn /etc/nginx/sites-enabled/emoryhuang.cn
之后重新加载配置文件,启动 Nginx
nginx -t # debug
service nginx reload
service nginx restart
配置 hexo 根目录的 _config.yml
文件的 deploy
选项
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
- type: git
repo:
github: git@github.com:xxxxxxx/xxxxxxx.github.io.git
coding: git@e.coding.net:xxxxxxx/xxxxxxx/xxxxxxx.git
blog: 用户名@你的云服务器公网ip:/home/git/blog # add
branch: master
然后三连
hexo clean
hexo g
hexo d
按照提示输入密码。
之后访问你的公网 ip,就会发现你的博客已经部署上去了
在你的域名解析服务中添加记录:
主机记录 | 记录类型 | 解析路线 | 记录值 |
---|---|---|---|
@ | A | 默认 | 你的云服务器公网 ip |
之后你就可以输入你的域名范访问博客。
注意:这里用云服务器的 80 端口,使用 http 访问,如果需要 https 访问,还需要 SSL 证书