Hexo部署到云服务器
以下是我在部署Hexo项目到云服务器的步骤,以及所遇到的一些问题和解决方法。
git 的安装(压缩包安装)
当我们需要将 Hexo 项目代码上传到服务器时,我们可以借助Git工具,下面是以编译的方式安装git的过程。当然,我们也可以使用 **yum install git**命令进行直接安装,但这样的方式安装的版本低。
- 访问 https://git-scm.com/download/linux 查看git的最新版本,这里是  
- 可先将文件下载到本地后,再上传到服务器中,也可以在服务器中使用 wget 命令进行下载 - 1 
 2- yum remove git -y # 删除旧版的git 
 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.39.0.tar.gz --no-check-certificate
- 将下载好的压缩文件解压 - 1 - tar -zxf git-2.39.0.tar.gz 
- 切换到解压后的 git-2.39.0 文件夹中,并使用 make 命令进行编译 - 1 
 2
 3
 4
 5
 6- 进行编译前需要安装以下开发包,否则会报错 
 sudo yum install -y openssl-devel
 sudo yum install -y curl-devel
 sudo yum install -y expat-devel
 已安装以上开发包的,执行下面命令进行编译
 make all prefix=/usr/local/git
- 将 git 安装到 /usr/local/git 中 - 1 - make install prefix=/usr/local/git 
- 配置 git 环境变量,vim 编辑器打开 /etc/bashrc,并写入 git 的 bin 目录 - 1 - export PATH=$PATH:/usr/local/git/bin 
- 刷新配置,使其生效 - 1 - source /etc/bashrc 
- 完成以上步骤后,可查看版本号以验证是否安装成功 - 1 - git --version # 查看 git 版本 
创建用户,并配置 SSH 免密登录
服务器 ssh 密钥配置
- 服务器端创建用户和密码(用户名和密码自定义,这里我以 gituser 账号为例) - 1 
 2- adduser gituser # 创建用户 
 passwd gituser # 设置密码
- 将用户添加到 wheel 用户组 - 1 - usermod -G wheel gituser 
- 变更 sudoers 权限 - 1 - chmod 740 /etc/sudoers 
- vi 打开 sudoers 配置 - 1 - vi /etc/sudoers 
- 在 root ALL=(ALL) ALL下添加以下内容,保存并退出 - 1 - gituser ALL=(ALL) ALL 
- 将 sudoers 文件权限修改为只读 - 1 - chmod 400 /etc/sudoers 
本地生成 SSH 密钥
- 本地下载安装好 git ,在 https://git-scm.com/ 下载对应版本的安装包进行安装 
- 安装好 git 后,桌面右键点击 Git Bash Here 打开 git 终端,输入: - 1 - ssh-keygen -t rsa # 直接一直回车即可 
- 将 .ssh 目录下的 生成的.pub 文件中的内容进行复制 
服务器端配置公钥
- 切换到刚刚创建的用户 - 1 - su gituser 
- 创建 .ssh 文件夹,创建 authorized_keys文件,并写入刚刚复制的公钥内容 - 1 
 2
 3
 4- mkdir ~/.ssh 
 vim ~/.ssh/authorized_keys
 chmod 600 ~/.ssh/authorized_keys
 chmod 700 ~/.ssh
nginx 配置(手动安装配置)
- 创建网站目录 hexo ,并修改其权限 - 1 
 2
 3- mkdir /var/hexo 
 chown -R gituser:gituser /var/hexo/
 chmod -R 755 /var/hexo/
- 安装 nginx - 1 - yum install -y nginx 
- 启动 nginx - 1 - systemctl start nginx.service 
- 查看 nginx 服务状态 - 1 - systemctl status nginx.service 
- 修改 nginx 转发配置 - vim /usr/local/nginx/conf/nginx.conf,在 server 里写入以下内容- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- server{ 
 listen 80
 root /var/hexo; # 改为创建的目录路径
 server_name [域名或 IP 地址];
 include /etc/nginx/default.d/*.conf;
 location / {
 }
 error_page 404 /404.html;
 location = /40x.html {
 }
 }
- 重启 nginx - 1 - systemctl restart nginx.service - 在搭建的时候发现一个错误,当我把网站目录所有权设置为 git 用户时,nginx 出现 403 权限问题,后来使用 - ps aux|grep nginx查看当前 nginx 的启动权限时发现 nginx 的启动权限为 www 用户,因此将其改变为 git 用户或者 root 用户权限,即可解决问题(修改权限后记得重启 nginx 服务)。
配置远程 git 仓库
- 切换到 root 用户,在 var 目录下创建 git 目录,并赋予其权限 - 1 
 2
 3
 4- exit 
 cd /var
 chown -R gituser:gituser /var/git/ # 修改目录所有权
 chmod -R 755 /var/git/ # 修改用户权限
- 进入 git 目录,创建 git 仓库,并修改权限 - 1 
 2
 3- cd /var/git/ 
 git init --bare hexoblog.git
 chown gituser:gituser -R hexoblog.git
- 创建钩子文件 - 1 - vim /var/git/hexoblog.git/hooks/post-receive 
- 进入编辑文件,写入以下代码(以下代码要看自己设置的路径为主) - 1 
 2- #!/bin/bash 
 git --work-tree=/var/hexo --git-dir=/var/git/hexoblog.git checkout -f
- 保存文件,并修改文件权限 - 1 - chmod +x /var/git/hexoblog.git/hooks/post-receive 
修改 hexo 站点配置文件
- 打开本地 hexo 项目的 _config.yml 文件,修改以下内容 - 1 
 2
 3
 4
 5
 6- deploy: 
 type: git
 repo: 'gituser@[服务器IP]:/var/git/hexoblog.git'
 # 当我们修改SSH端口时,需要指定端口,如SSH端口为 5234,则repo修改如下:
 # repo: 'ssh://gituser@[服务器IP]:5234/usr/local/nginx/git/hexoblog.git'
 branch: master
- 安装 hexo 自动部署工具 - 1 - npm install hexo-deployer-git --save 
- 保存配置后,重新构建和部署项目 - 1 
 2
 3- hexo clean # 清理缓存 
 hexo g # 生成项目文件
 hexo d # 上传到服务器
若在使用 hexo d 提交项目文件时,出现以下错误:
| 1 | On branch master | 
排查错误发现,之前安装git时,将其安装在了/usr/local/git中,所以需要创建软连接
| 1 | ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack | 



