在vps上搭建hexo博客

最近更換了服務器,須要把本身的Hexo Next從新部署到新服務器上,本文記錄一下在vps上搭建hexo博客的過程。html

在vps上搭建hexo博客須要下面這些工具:nginx

  1. Nginx: 用於博客展現
  2. SSH:用於Git 推送
  3. Git: 用於將生成的靜態文件推送到vps上

本文服務器環境爲CentOS 7.6git

總體流程爲:shell

總體流程
總體流程

設置SSH登陸

想要完成Git推送,首先得設置SSH登陸。過程以下:vim

# 添加hexo用戶
adduser 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/authorzied_keys
chmod 700 .ssh
複製代碼

測試是否設置成功:bash

ssh -v hexo@服務器ip
複製代碼

Git

安裝Git

yum install git
複製代碼

配置post-update鉤子

Git的鉤子腳本位於版本庫.git/hooks目錄下,當Git執行特定操做時會調用特定的鉤子腳本。當版本庫經過git init或者git clone建立時,會在.git/hooks目錄下建立示例腳本,用戶能夠參照示例腳本的寫法開發適合的鉤子腳本。服務器

鉤子腳本要設置爲可運行,並使用特定的名稱。Git提供的示例腳本都帶有.sample擴展名,是爲了防止被意外運行。若是須要啓用相應的鉤子腳本,須要對其重命名(去掉.sample擴展名)。hexo

post-update 該鉤子腳本由遠程版本庫的git receive-pack命令調用。當從本地版本庫完成一個推送以後,即當全部引用都更新完畢後,在遠程服務器上該鉤子腳本被觸發執行。ssh

所以咱們須要配置post-update鉤子以即可以及時更新咱們在VPS上存放Hexo 靜態文件的目錄。工具

# 回到hexo目錄
cd /home/hexo
# 變成hexo用戶
su hexo
# 使用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
複製代碼
  1. 註釋以下行:
exec git update-server-info
複製代碼
  1. 添加以下代碼:
git --work-tree="靜態文件VPS存放目錄" --git-dir="剛纔新建的VPS git地址" checkout -f
例:
git --work-tree=/home/hexo/blog --git-dir=/home/hexo/blog.git checkout -f
複製代碼

例:

post-update
post-update

Nginx

安裝Nginx

yum install nginx
複製代碼

使用nginx -v查看,顯示版本號則安裝成功。

Nginx配置

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

找到本地Hexo博客的站點配置文件_config.yml,找到如下內容並修改:

deploy:
  type: git
  repo: hexo@你的服務器IP:/home/git/blog.git
  branch: master
複製代碼

而後在根目錄執行如下命令:

hexo clean
hexo g -d
複製代碼

大功告成
大功告成

遇到的問題總結

  1. 若是沒法推送到vps,請檢查hexo用戶是否有權限操做所需目錄
  2. 關於nginx root 403 問題: 在我配置nginx碰到一個403問題,改了文件權限仍是403,後來發現是nginx.conf中 user默認設置錯了,把 user nginx改爲user root 就行了。
  3. deploy成功以後沒法訪問
    1. 查看vps靜態目錄是否有html文件,沒有就是Git推送問題
    2. 查看Nginx配置是否成功

參考文檔:

  1. www.worldhello.net/gotgit/08-g…
相關文章
相關標籤/搜索