部署hexo(二):服务器实例配置

前言

hexo 部署服务器的原理:将代码上传至 git 库 -> 触发 git push 钩子函数 -> 钩子函数将代码拷贝到 www 文件夹下


hexo-deploy-原理.jpg

连接远端服务器

ssh 用户名@ip

安装 git、node、nginx

  • 安装 git
yum install git

检测是否安装成功 git --version

  • 安装 nodejs
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs

检查是否安装成功 node -vnpm -v

  • 安装 nginx
yum install -y nginx

新建用户、git 仓库

新建用户
adduser git # 创建 git 用户
chmod 740 /etc/sudoers # 修改 git 用户的权限
vim /etc/sudoers # 打开文件

找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL
保存退出后改回权限

chmod 400 /etc/sudoers

设置 git 用户密码

sudo passwd git

这样就可以使用 git 用户远程登录阿里云服务器了

为 hexo 创建部署目录
mkdir -p /var/www/hexo
新建 git 仓库
mkdir /var/repo
cd /var/repo
git init --bare blog.git

添加核心钩子函数

vim /var/repo/blog.git

输入

git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

然后授权钩子文件可执行权限,让它可以将文件拷贝到部署目录

chmod +x /var/repo/blog.git/hooks/post-receive
sudo chmod -R 777 /var/www/hexo

改变 blog.git 目录的拥有者为 git 用户(这一步是确保安全性)

chown -R git:git blog.git

配置 Nginx

/etc/nginx/nginx.conf 配置(保持默认配置)

 server {
        listen       80;
        server_name  _;
        root         /var/www/hexo;

        # 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 {
        }
    }

/etc/nginx/conf.d下新建 hexo.conf,并添加配置

server {
    listen         80;
    root /var/www/hexo;
    server_name *.xxx.com;
    access_log  /var/log/nginx/hexo_access.log;
    error_log   /var/log/nginx/hexo_error.log;
    location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
            root /var/www/hexo;
            access_log   off;
            expires      30s;
    }
    location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
        root /var/www/hexo;
        access_log   off;
        expires      30s;
    }
    location / {
        root /var/www/hexo;
        if (-f $request_filename) {
            rewrite ^/(.*)$  /$1 break;
        }
    }
}

这里之所以重新创建一个 .conf 文件是因为一台机器上往往会有多个站点,每个站点都有一个单独的 conf 文件更方便维护,出错了也容易排查( nginx 经常一个配置出问题就全部罢工)讨论详情

启动nginx并设置开机自启

service nginx start
systemctl enable nginx

更改 nginx 文件并重启 nginx 服务,可以使用 niginx -s reload 命令

hexo 项目修改 _config.xml

deploy:
  - type: git
    repo: git@XXX:/var/repo/blog.git
    branch: master
    message: "commit_message"

执行 hexo deploy 即可发布到服务器
注意:hexo deploy要在 git bash下执行,否则会报错

hexo-deploy-报错.png

如果用 git bash 依旧部署依旧报错,且本机可以通过 ssh 连上远端服务器,首先考虑是不是 .deploy_git 缓存导致的,先清除 .deploy_git 和 node_modules 再尝试。

常见问题

部署后访问网站,网站报错”拒绝连接“,查看是不是 nginx 出了问题。

你可能感兴趣的:(部署hexo(二):服务器实例配置)