Hexo博客部署到云服务器
本地搭建hexo
本地搭建hexo过程详见hexo官网,步骤比较详细,按照步骤搭建即可
hexo主题
我使用的Butterfly主题,主题配置请查看Butterfly安装文档
部署到云服务器
服务器环境 nginx 搭建
使用云服务商提供的远程登陆登录进云服务器,可以现在服务商设置中设置 root 用户的密码以提高安全性。
使用 root 用户,安装nginx。
1 | yum install -y nginx |
启动nginx
1 | systemctl start nginx |
修改配置文件
1 | # 进入路径 |
输入 i 进入 insert 模式,并进行如下修改:
- 将最上方 user 改为 root(或者创建名为nginx的用户并给予权限)
- 在 server 中更改 root 指向的路径,我这里选择 /home/blog ,此时我们还没有创建这个文件夹。
- 如果有域名的话,将域名写到server_name上。
按 esc 键,输入 :wq 回车退出vim编辑器并保存文件。安装 Node.js 和 Git
安装 Node.js
1 | curl -sL https://rpm.nodesource.com/setup_14.x | bash - |
安装完成之后,可以执行命令查看是否安装成功
1 | node -v |
安装 Git 以及配置仓库
主要是让我们的PC可以通过ssh的方式连接到云服务器,然后可以通过 deploy 的方式将我们的博客推到服务器上
安装 Git
1 | yum install git |
安装结束后配置 git 用户
1 | adduser git |
修改用户的权限
1 | chmod 740 /etc/sudoers |
在 sudoers 文件中添加
1 | git ALL=(ALL) ALL |
保存退出后将 sudoers 文件的权限改回
1 | chmod 400 /etc/sudoers |
设置 git 用户的密码
1 | passwd git |
切换到 git 用户,并创建 .ssh 文件夹和公钥密钥文件
1 | # 切换到 git 用户 |
接下来在我们自己的本地,打开 cmd,尝试使用 ssh 方式连接到我们的云服务器。
1 | ssh -v git@云服务器的公网IP地址 |
提示:第一次登录,服务器会让你确认是否连接,输入 yes 进入下一步,然后服务器会让你输入 git 用户的密码,输完密码后回车即可。
当然这里也可以用其他方法,让服务器与 PC 建立 ssh 信任关系,这样就不需要输入密码了。
如果为了安全起见,还可以将 git 用户的 shell 登录权限禁用。
出现 Welcome to Alibaba Cloud Elastic Compute Service ! 或其他类似的语句,就说明登录成功了。
接下来需要创建一个新的 git 仓库,并且新建一个 post-update 文件(有些 git 版本可能是 post-receive ,注意分辨即可)。
1 | cd ~ |
在post-update文件添加以下内容
—work-tree路径和nginx配置文件中root路径保持一致
1 | git --work-tree=/home/blog --git-dir=/home/git/blog.git checkout -f |
添加结束后修改权限
1 | chmod +x ~/home/git/blog.git/hooks/post-update |
在本地完成推送部署
找到项目中hexo 的配置文件 _config.yml,找到deploy配置,进行修改
1 | deploy: |
发布到服务器
1 | hexo clean |
然后我们就可以在本地主机浏览器上输入域名或者公网IP访问我们的博客了。
常见问题
Q:部署到云服务器,出现了 403 界面怎么办?
A: 403 为禁止访问,nginx 服务器没有获得你的路径的读取的权限,检查是否给予了 post-update 权限 chmod +x ~/home/git/blog.git/hooks/post-update。如果还不行可以尝试使用 chmod -R 777 /home/blog。