hexo部署到centos服务器
服务器环境:Centos 8 x64
本地环境:Win10 x64
本地操作
安装 Git 和 Node.js
安装完git后还要配置环境变量:
右键我的电脑 –> 属性,然后点击高级系统设置 –> 环境变量 –> 选择用户变量或系统变量中的Path,点击编辑;找到Git安装目录,添加以下地址:
1 | D:\Program Files\Git\bin |
配置SSH 公钥
Windows 上安装 Git for Windows 之后在开始菜单里打开 Git Bash 输入:
1 | git config --global user.name "你的用户名" |
1 | cd ~ |
在系统当前用户文件夹下生成了私钥 id_rsa
和公钥 id_rsa.pub
。
初始化 Hexo
在电脑任意目录新建一个文件夹 hexo
,进入文件夹,在空白处点击右键选择 Git Bash,输入:
1 | npm install -g hexo-cli |
这样便在本地初始化了 Hexo 文件夹,然后输入:hexo new post "第一篇文章"
即可新建一篇文章,用文本编辑器打开 hexo/source/_post/第一篇文章.md
可以快速开始写作。其余使用方法和配置按照 Hexo 官网操作即可。推荐编辑器**hexo-editor**
2020/4/27更新: hexo-editor速度太慢,改用Typora
修改 deploy 参数
打开位于 hexo
文件夹下的 _config.yml
,修改 deploy 参数:
1 | deploy: |
提交到github
1 | deploy: |
github、coding双线部署
1 | deploy: |
github、coding、服务器三线线部署
1 | deploy: |
服务器操作
首先,在 服务器 上安装 Git 和 nginx。
1 | yum update -y |
如果是centos 7,先要安装安装epel:yum install epel-release
,才能安装nginx。
Nginx 安装完成后需要手动启动,启动Nginx并设置开机自启:
1 | systemctl start nginx |
如果开启了防火墙,记得添加 HTTP 和 HTTPS 端口到防火墙允许列表。
1 | firewall-cmd --permanent --zone=public --add-service=http |
或者直接关闭防火墙:
1 | systemctl stop firewalld.service |
如果提示”Failed to get properties: Access denied“,执行
1 | kill -TERM 1 |
配置完成后,访问使用浏览器服务器 ip ,如果能看到以下界面,表示运行成功。
配置用户
然后新增一个名为 git 的用户,过程中需要设置登录密码,输入两次密码即可。
1 | adduser git |
给用户 git
赋予无需密码操作的权限(否则到后面 Hexo 部署的时候会提示无权限)
1 | chmod 740 /etc/sudoers |
在图示位置root ALL=(ALL:ALL) ALL
的下方添加
1 | git ALL=(ALL:ALL) ALL |
然后保存。然后更改读写权限。
1 | chmod 440 /etc/sudoers |
上传 SSH 公钥
接下来要把本地的 ssh 公钥上传到 服务器 。执行
1 | su git |
现在要打开本地的 Git Bash
,输入vi ~/.ssh/id_rsa.pub
,把里面的内容复制下来粘贴到上面打开的文件里。
接着把ssh目录设置为只有属主有读、写、执行权限。代码如下:
1 | chmod 600 ~/.ssh/authorized_keys |
然后建立放部署的网页的 Git 库。
1 | cd ~ |
测试一下,如果在 Git Bash 中输入 ssh git@服务器的IP地址
能够远程登录的话,则表示设置成功了。如果你的服务器端口不是22。参考:上传SSH公钥。
ps: 如果配置完成还是提示要输入密码,可以使用 ssh-copy-id
,在本地打开 Git Bash 输入:
1 | ssh-copy-id -i ~/.ssh/id_rsa.pub git@服务器ip地址 |
登录成功会提示:
1 | $ ssh git@104.224.191.88 |
用户授权
接下来要给用户 git 授予操作 nginx 放网页的地方的权限:
1 | su |
1 | mkdir -p /var/www/hexo |
配置钩子
现在就要向 Git Hooks 操作,配置好钩子:
1 | su git |
输入内容并保存:(里面的路径看着换吧,上面的命令没改的话也不用换)
1 |
|
赋予可执行权限:
1 | chmod +x post-receive |
配置 nginx
然后是配置 nginx。执行
1 | su |
1 | vi /etc/nginx/conf.d/hexo.conf |
1 | server { |
因为放中文进去会乱码所以就不在里面注释了。代码里面配置了默认的根目录,绑定了域名,并且自定义了 404 页面的路径。
最后就重启 nginx 服务器:
1 | systemctl restart nginx |
如果上传网页后,Nginx 出现 403 Forbidden,执行:
1 | vi /etc/selinux/config |
将SELINUX=enforcing 修改为 SELINUX=disabled 状态。
1 | SELINUX=disabled |
重启生效,reboot。
ps: 最好做一个301跳转,把bore.vip和www.bore.vip
合并,并把之前的域名也一并合并. 有两种实现方法,第一种方法是判断nginx核心变量host(老版本是http_host):
1 | server { |
发布文章
在本地编辑好文章之后使用 hexo g -d
,如果hexo d后, ERROR Deployer not found: git,执行
1 | npm install -- save hexo-deployer-git |