1. 程式人生 > >Hexo 博客 之 騰訊雲部署過程

Hexo 博客 之 騰訊雲部署過程

自動部署 url 模式 配置文件 hex spa 網站 tab .org

寫在前面

Hexo 博客搭好了有差不多兩周時間了,這期間走了很多彎路,跳了很多坑。一些坑自己 bing 到了答案,找到了解決方法,一些坑則是自己摸索出來的解決方法。現在準備寫幾篇關於搭建流程、搭建過程中遇到的問題和解決方法。俗話說得好,好記性不如爛鍵盤嘛。

暫時準備寫三篇關於 Hexo 博客搭建的博文:

  • 關於 Hexo 博客 騰訊雲部署過程
  • 關於 Hexo 博客 NexT 主題的美化插件設置 點擊這裏
  • 關於 Hexo 博客 添加域名映射和 https 點擊這裏

本文介紹

本博客是關於 Hexo 博客搭建的第一篇,通過三步簡述如何將 hexo 博客部署到騰訊雲的服務器上。

  1. 雲服務器端 git 的配置
  2. Nginx 的配置
  3. 本地端 hexo 的設置更改

前期準備:

  1. 一個騰訊雲服務器
  2. hexo 本地博客

本博客中所有操作使用的服務器環境

操作系統CPU內存帶寬
CentOS 7.2 64位 1核 2GB 1Mbps

雲服務器操作

  1. 登錄 騰訊雲控制臺
  2. 在菜單選擇雲主機,然後找到你的服務器,並登錄。
技術分享圖片
  1. 輸入密碼,進入 雲服務器 CentOS中。(初始密碼在控制臺右上角的消息列表中)
技術分享圖片 技術分享圖片

雲服務器端配置 git

  1. 安裝依賴庫和編譯工具

    • 安裝依賴庫:
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
    
    • 安裝編譯工具:
    yum install gcc perl-ExtUtils-MakeMaker package
    
  2. 下載 git

    • 選擇一個目錄來存放下載下來的 git 安裝包。這裏選擇了/usr/local/src 目錄
    cd /usr/local/src
    
    • 到官網找一個新版穩定的源碼包下載到 /usr/local/src 文件夾裏
    wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz
    
  3. 解壓編譯 git

    • 在當前目錄下解壓 git-2.16.2.tar.gz
    tar -zvxf git-2.16.2.tar.gz
    
    • 進入 git-2.16.2.tar.gz 目錄下
    cd git-2.16.2
    
    • 執行編譯
    make all prefix=/usr/local/git
    
    • 安裝 git 到 /usr/local/git 目錄下
    make install prefix=/usr/local/git
    
  4. 配置 git 環境變量

    • 將 git 加入 PATH 目錄中
    echo ‘export PATH=$PATH:/usr/local/git/bin‘ >> /etc/bashrc
    
    • 使 git 環境變量生效
    source /etc/bashrc
    
  5. 查看 git 版本

git --version

如果此時能查看到 git 的版本號,說明我們已經安裝成功了。

  1. 創建 git 倉庫,用於存放博客網站資源。
  • home/git 的目錄下,創建一個名為hexoBlog的裸倉庫。
    如果沒有 home/git 目錄,需要先創建;然後修改目錄的所有權和用戶權限。
mkdir /home/git/
chown -R $USER:$USER /home/git/
chmod -R 755 /home/git/

然後,執行如下命令:

cd /home/git/
git init --bare hexoBlog.git

剛才這一步主要創建一個裸的 git 倉庫。

  1. 創建一個新的 git 鉤子,用於自動部署。

    • /home/git/hexoBlog.git 下,有一個自動生成的 hooks 文件夾。我們需要在裏邊新建一個新的鉤子文件 post-receive
    vim /home/git/hexoBlog.git/hooks/post-receive
    
    • i 鍵進入文件的編輯模式,在該文件中添加兩行代碼(將下邊的代碼粘貼進去),指定 Git 的工作樹(源代碼)和 Git 目錄(配置文件等)。
    #!/bin/bash
    git --work-tree=/home/hexoBlog --git-dir=/home/git/hexoBlog.git checkout -f
    

    然後,按 Esc 鍵退出編輯模式,輸入:wq 保存退出。

    • 修改文件權限,使得其可執行。
    chmod +x /home/git/hexoBlog.git/hooks/post-receive
    

到一步為止,git 倉庫完全搭建好了。下面進行 Nginx 的配置。

雲服務器端配置 Nginx

  1. 安裝 Nginx
yum install -y nginx
  1. 啟動 Nginx
service nginx start
  1. 測試 Nginx 服務器
wget http://127.0.0.1

能夠正常獲取以下歡迎頁面說明Nginx安裝成功。

Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43704 (43K) [text/html]
Saving to: ‘index.html’

100%[=======================================>] 43,704      --.-K/s   in 0s

2018-07-12 11:04:09 (487 MB/s) - ‘index.html’ saved [43704/43704]
  1. 測試網頁是否能打開
    在瀏覽器中輸入服務器 ip 地址,就是服務器的公網 ip。

  2. 配置 Nginx 托管文件目錄

    • 接下來,創建 /home/hexoBlog目錄,用於 Nginx 托管。
    mkdir /home/hexoBlog/
    chown -R $USER:$USER /home/hexoBlog/
    chmod -R 755 /home/hexoBlog/
    
    • 查看 Nginx 的默認配置的安裝位置
    nginx -t
    
    • 修改Nginx的默認配置,其中 cd 後邊就是剛才查到的安裝位置
    vim /etc/nginx/nginx.conf
    
    • 按方向鍵,找到如下位置
    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /home/hexoBlog;    #需要修改
    
        server_name evenyao.com; #博主的域名,需要修改成對應的域名
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
    

    i鍵進入插入模式,將其中的 root 值改為 /home/hexoBlog (剛才創建的托管倉庫目錄)。
    將 server_name 值改成自己相應的域名地址

    1. 重啟 Nginx 服務
    service nginx restart
    

到這一步為止,服務器端配置就結束了。接下來,就只剩本地 hexo 的配置了。

修改 hexo 站點配置文件 git 相關設置

  1. 設置 hexo 配置文件
    打開你本地的 hexo 博客所在文件,打開站點配置文件(不是主題配置文件),做以下修改。
deploy:
  type: git
  repo: root@xx.xx.xx.xx:/home/git/hexoBlog  //xx.xx.xx.xx為服務器地址
  branch: master
  1. 在 hexo 目錄下執行部署
cd 你的 hexo 目錄
hexo clean
hexo generate
hexo deploy
  1. 用公網 IP 訪問 hexo 博客

技術分享圖片



其他可能出現的問題

若出現如下報錯,為 git 沒有設置SSH key,創建SSH key之後重新 hexo d即可

Error: ssh: Could not resolve hostname cvm XX.XX.XX.XX : nodename nor servname provided, or not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

at ChildProcess.<anonymous> (/Users/Yao/Desktop/hexoBlog/node_modules/hexo-util/lib/spawn.js:37:17)
at ChildProcess.emit (events.js:182:13)
at maybeClose (internal/child_process.js:961:16)
at Socket.stream.socket.on (internal/child_process.js:380:11)
at Socket.emit (events.js:182:13)
at Pipe._handle.close (net.js:595:12)

參考

Hexo 博客部署到騰訊雲教程

Hexo 博客 之 騰訊雲部署過程