最近更换了服务器,须要把本身的Hexo Next从新部署到新服务器上,本文记录一下在vps上搭建hexo博客的过程。html
在vps上搭建hexo博客须要下面这些工具:nginx
本文服务器环境为CentOS 7.6git
<!-- more -->shell
总体流程为:vim
想要完成Git推送,首先得设置SSH登陆。过程以下:服务器
# 添加hexo用户 adduser hexo # 切换到hexo用户 su hexo # 切换到hexo用户目录 cd /home/hexo # 建立.ssh文件夹 mkdir .ssh # 建立authorized_keys文件并编辑 vim .ssh/authorized_keys # 若是你尚未生成公钥,那么首先在本地电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy生成公钥 # 再将公钥复制粘贴到authorized_keys # 保存关闭authorized_keys后,修改相应权限 chmod 600 .ssh/authorized_keys chmod 700 .ssh
测试是否设置成功:hexo
ssh -v hexo@服务器ip
yum install git
Git的钩子脚本位于版本库.git/hooks目录下,当Git执行特定操做时会调用特定的钩子脚本。当版本库经过git init或者git clone建立时,会在.git/hooks目录下建立示例脚本,用户能够参照示例脚本的写法开发适合的钩子脚本。ssh
钩子脚本要设置为可运行,并使用特定的名称。Git提供的示例脚本都带有.sample扩展名,是为了防止被意外运行。若是须要启用相应的钩子脚本,须要对其重命名(去掉.sample扩展名)。工具
post-update 该钩子脚本由远程版本库的git receive-pack命令调用。当从本地版本库完成一个推送以后,即当全部引用都更新完毕后,在远程服务器上该钩子脚本被触发执行。post
所以咱们须要配置post-update钩子以即可以及时更新咱们在VPS上存放Hexo 静态文件的目录。
# 回到hexo目录 cd /home/hexo # 变成hexo用户 su hexo # 新建blog目录存放hexo静态文件 mkdir /home/hexo/blog # 使用hexo用户建立git裸仓库,以blog.git为例 git init --bare blog.git # 进入钩子文件夹hooks cd blog.git/hooks/ # 启用post-update mv post-update.sample post-update # 添加执行权限 chmod +x post-update # 配置post-update vim post-update
exec git update-server-info
git --work-tree="静态文件VPS存放目录" --git-dir="刚才新建的VPS git地址" checkout -f 例: git --work-tree=/home/hexo/blog --git-dir=/home/hexo/blog.git checkout -f
例:
yum install nginx
使用nginx -v
查看,显示版本号则安装成功。
server { # 默认80端口 listen 80 default_server; listen [::]:80 default_server; # 修改server_name为本身以前注册好的域名,没有就不用更改 server_name morethink.cn; # 修改网站根目录,在这里存放你的Hexo静态文件,请自行选择或建立目录 root /home/hexo/blog; # 其余保持不变 # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
找到本地Hexo博客的站点配置文件_config.yml
,找到如下内容并修改:
deploy: type: git repo: hexo@你的服务器IP:/home/git/blog.git branch: master
而后在根目录执行如下命令:
hexo clean hexo g -d
nginx root 403
问题: 在我配置nginx碰到一个403问题,改了文件权限仍是403,后来发现是nginx.conf中 user默认设置错了,把 user nginx
改为user root
就行了。systemctl status nginx.service -l
查看详细错误)参考文档: