Ubuntu环境下nginx部署hexo博客
Ubuntu环境下nginx部署hexo博客
之前我的hexo博客都是部署在github的pages上的,使用域名是touhouxingchen.github.io,但是弊端是这个域名是在国外的,很不方便其他人在国内访问,gitee的pages服务也暂停了(疑似永久暂停),腾讯云的EdgeOne pages用过一段时间,尽管能用,但是非常不成熟,经常无法照常更新,有很多bug。索性用了之前为了玩MC买的一个Ubuntu服务器,直接把博客部署到服务器上
核心思路
- Web 服务器托管静态文件:用 Nginx 托管 Hexo 生成的
public
目录。 - Git 仓库 + 钩子实现自动化:服务器创建裸仓库(Bare Repo),通过 Git Hook 在收到
push
时自动同步文件到 Nginx 目录。 - Hexo 本地一键部署:修改 Hexo 配置,直接
hexo d
将博客推送到服务器。
一、nginx的安装与使用
此步骤在服务器上进行
1. nginx的安装
1 |
|
2. nginx运行http服务
在 /etc/nginx/sites-available下创建一个名为my_site的文件
my_site
1 |
|
server_name后面填你的域名,没有域名填IP就行
root后面是你网站的根目录,可以自己创建一个
最好赋予网站根目录读写权限
1 |
|
然后在 /etc/nginx/sites-enabled下面创建一个符号链接到刚刚创建的my_site
1 |
|
完成上述准备后,运行
1 |
|
检查配置文件是否可以正常运行:
如果显示successful就可以重启nginx
1 |
|
再访问你的网址(如果是腾讯云买的服务器,别忘了允许80端口通过)
显示的网站应该是
代表nginx成功运行了http服务
3. nginx运行https服务
https需要申请SSL证书,我这里用的腾讯云的免费证书(当然可以有别的方案,例如 Let’s Encrypt等)
下载证书
创建/etc/nginx/ssl,把crt文件和key文件放进里面
1 |
|
参考腾讯云官网给的教程配置ssl证书https://cloud.tencent.com/document/product/400/35244
更改my_site中的配置:
1 |
|
重新运行nginx后,可以成功访问网站
二、git环境部署
此步骤在服务器上进行
1. 服务器配置Git仓库
1 |
|
2. 服务器配置Git Hook
创建脚本 ~/hexo-repo.git/hooks/post-receive
post-receive
1 |
|
当然路径要根据实际情况填写
赋予脚本执行权限
1 |
|
3. 上传公钥到服务器
本地生成密钥
1 |
|
用git bash运行(不能用windows的命令行,没这个命令)
1 |
|
然后ssh测试,理论来说上传公钥之后不需要输入密码就可以ssh进去
三、hexo配置修改
本文默认已经安装过了hexo并成功在github的pages上部署。如果这一步没做好可以参考我朋友写的这篇hexo搭建博客,或者是在csdn上找一篇
先把服务器上 /var/www/html文件夹清空
1 |
|
在source文件夹里创建CNAME文件,内容是你的域名(我的是touhouxingchen.fun)
1. _config.yml更改
url改成服务器的域名
git deploy改成:用户名@域名:/home/username/hexo-repo.git
2. 备案号悬挂
如果是自己买的国内的域名,是需要备案的,其中要求悬挂备案号。
在 ${Blog_root}/node_modules/hexo-theme-butterfly/layout/includes/footer.pug下作如下改动:(Blog_root指你博客的目录)
3. deploy测试
1 |
|