Hexo 博客 之 騰訊雲部署過程
阿新 • • 發佈:2018-08-10
自動部署 url 模式 配置文件 hex spa 網站 tab .org
寫在前面
Hexo 博客搭好了有差不多兩周時間了,這期間走了很多彎路,跳了很多坑。一些坑自己 bing 到了答案,找到了解決方法,一些坑則是自己摸索出來的解決方法。現在準備寫幾篇關於搭建流程、搭建過程中遇到的問題和解決方法。俗話說得好,好記性不如爛鍵盤嘛。
暫時準備寫三篇關於 Hexo 博客搭建的博文:
- 關於 Hexo 博客 騰訊雲部署過程
- 關於 Hexo 博客 NexT 主題的美化插件設置 點擊這裏
- 關於 Hexo 博客 添加域名映射和 https 點擊這裏
本文介紹
本博客是關於 Hexo 博客搭建的第一篇,通過三步簡述如何將 hexo 博客部署到騰訊雲的服務器上。
- 雲服務器端 git 的配置
- Nginx 的配置
- 本地端 hexo 的設置更改
前期準備:
- 一個騰訊雲服務器
- hexo 本地博客
本博客中所有操作使用的服務器環境
操作系統 | CPU | 內存 | 帶寬 |
---|---|---|---|
CentOS 7.2 64位 | 1核 | 2GB | 1Mbps |
雲服務器操作
- 登錄 騰訊雲控制臺
- 在菜單選擇雲主機,然後找到你的服務器,並登錄。
- 輸入密碼,進入 雲服務器 CentOS中。(初始密碼在控制臺右上角的消息列表中)
雲服務器端配置 git
-
安裝依賴庫和編譯工具
- 安裝依賴庫:
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
- 安裝編譯工具:
yum install gcc perl-ExtUtils-MakeMaker package
-
下載 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
- 選擇一個目錄來存放下載下來的 git 安裝包。這裏選擇了
-
解壓編譯 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
- 在當前目錄下解壓
-
配置 git 環境變量
- 將 git 加入 PATH 目錄中
echo ‘export PATH=$PATH:/usr/local/git/bin‘ >> /etc/bashrc
- 使 git 環境變量生效
source /etc/bashrc
-
查看 git 版本
git --version
如果此時能查看到 git 的版本號,說明我們已經安裝成功了。
- 創建 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 倉庫。
-
創建一個新的 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
- 安裝 Nginx
yum install -y nginx
- 啟動 Nginx
service nginx start
- 測試 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]
-
測試網頁是否能打開
在瀏覽器中輸入服務器 ip 地址,就是服務器的公網 ip。 -
配置 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 值改成自己相應的域名地址
。- 重啟 Nginx 服務
service nginx restart
- 接下來,創建
到這一步為止,服務器端配置就結束了。接下來,就只剩本地 hexo 的配置了。
修改 hexo 站點配置文件 git 相關設置
- 設置 hexo 配置文件
打開你本地的 hexo 博客所在文件,打開站點配置文件(不是主題配置文件),做以下修改。
deploy:
type: git
repo: root@xx.xx.xx.xx:/home/git/hexoBlog //xx.xx.xx.xx為服務器地址
branch: master
- 在 hexo 目錄下執行部署
cd 你的 hexo 目錄
hexo clean
hexo generate
hexo deploy
- 用公網 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 博客 之 騰訊雲部署過程