部署hexo(二):服務(wù)器實(shí)例配置

前言

hexo 部署服務(wù)器的原理:將代碼上傳至 git 庫 -> 觸發(fā) git push 鉤子函數(shù) -> 鉤子函數(shù)將代碼拷貝到 www 文件夾下


hexo-deploy-原理.jpg

連接遠(yuǎn)端服務(wù)器

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 # 創(chuàng)建 git 用戶
chmod 740 /etc/sudoers # 修改 git 用戶的權(quán)限
vim /etc/sudoers # 打開文件

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

chmod 400 /etc/sudoers

設(shè)置 git 用戶密碼

sudo passwd git

這樣就可以使用 git 用戶遠(yuǎn)程登錄阿里云服務(wù)器了

為 hexo 創(chuàng)建部署目錄
mkdir -p /var/www/hexo
新建 git 倉庫
mkdir /var/repo
cd /var/repo
git init --bare blog.git

添加核心鉤子函數(shù)

vim /var/repo/blog.git

輸入

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

然后授權(quán)鉤子文件可執(zhí)行權(quán)限,讓它可以將文件拷貝到部署目錄

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 配置(保持默認(rèn)配置)

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

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf; #這句是重點(diǎn)

        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;
        }
    }
}

這里之所以重新創(chuàng)建一個(gè) .conf 文件是因?yàn)橐慌_(tái)機(jī)器上往往會(huì)有多個(gè)站點(diǎn),每個(gè)站點(diǎn)都有一個(gè)單獨(dú)的 conf 文件更方便維護(hù),出錯(cuò)了也容易排查( nginx 經(jīng)常一個(gè)配置出問題就全部罷工)討論詳情

啟動(dòng)nginx并設(shè)置開機(jī)自啟

service nginx start
systemctl enable nginx

更改 nginx 文件并重啟 nginx 服務(wù),可以使用 niginx -s reload 命令

hexo 項(xiàng)目修改 _config.xml

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

執(zhí)行 hexo deploy 即可發(fā)布到服務(wù)器
注意:hexo deploy要在 git bash下執(zhí)行,否則會(huì)報(bào)錯(cuò)

hexo-deploy-報(bào)錯(cuò).png

如果用 git bash 依舊部署依舊報(bào)錯(cuò),且本機(jī)可以通過 ssh 連上遠(yuǎn)端服務(wù)器,首先考慮是不是 .deploy_git 緩存導(dǎo)致的,先清除 .deploy_git 和 node_modules 再嘗試。

常見問題

部署后訪問網(wǎng)站,網(wǎng)站報(bào)錯(cuò)”拒絕連接“,查看是不是 nginx 出了問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容