部署网站踩的坑

通过Hexo部署网站

已配置公钥,本地git连接服务器需要输入密码

服务器公钥配置错误。本地的id_psa为两行,复制到服务器时默认为一行,不需要修改,没有问题。

本地Hexo部署到服务器,提示无法连接远程仓库

建议将部署地址更改为公网IP再次尝试。原因为域名指向的地址为github.io,所以无法访问指定目录。需要使用nginx来定向,nginx未生效就无法部署到服务器。

网站无法访问

确认域名解析地址是否为服务器地址。

404 配置SSL解析

公网访问,建议通过宝塔申请免费SSL证书,宝塔会自动修改配置文件。

ERR_EMPTY_RESPONSE

检查是否开启了SSL验证

启动Nginx时报错:nginx: bind() to 0.0.0.0:443 failed (443: Address already in use)

443接口被占用

lsof -i:443 查看被谁占用

kill -9 pid

403 Forbidden

检查nginx的用户有没有访问网站目录的权限
假设www-data为nginx使用的用户
sudo chown -R www:www /www/hexo
sudo chmod -R 755 /www/hexo

  1. 该用户可通过ps -eo pid,user,comm | grep nginx命令查询(不是root用户)
  2. 设置之后,可能会使git用户失去修改权限,建议将git用户与Nginx用户放入同一个用户组。

git提交后网站变为403 Forbidden

git自动修正了网站目录的权限

执行:sudo vim /www/repo/hexo.git/hooks/post-receive

添加如下代码

TARGET_DIR="/www/hexo"
# 修正文件和目录权限
chown -R git:www-data "$TARGET_DIR"
chmod -R 755 "$TARGET_DIR"

然后执行

sudo chmod +x /www/repo/hexo.git/hooks/post-receive


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。