寫在開始 一開始將自己 部署到 ,結果發現打開頁面速度有點慢,然後又將其同時部署到 ,實現雙線路訪問,國內解析記錄到 ,國外解析到 ,這樣確實網站的速度能提高不少,但是國內訪問因為是經過 ,所以打開網站會有廣告,這點不能容忍,於是想到自己的伺服器也還空閑著,於是想到可以部署到自己的伺服器上,折騰開始 ...
寫在開始
一開始將自己hexo
部署到github
,結果發現打開頁面速度有點慢,然後又將其同時部署到coding
,實現雙線路訪問,國內解析記錄到coding
,國外解析到github
,這樣確實網站的速度能提高不少,但是國內訪問因為是經過coding
,所以打開網站會有廣告,這點不能容忍,於是想到自己的伺服器也還空閑著,於是想到可以部署到自己的伺服器上,折騰開始
演示站點
部署總覽
- 個人使用的環境
- 本地環境:
Windows10
(64位) - 雲主機:阿裡雲ECS(
CentOS
7.2 64位) - 整個部署過程
- 本地環境搭建(
git
,NodeJs
,hexo
..) - 雲主機環境搭建(
git
,Nginx
) - 設置解析(
dnspod
) - 使用git自動化部署博客
本地環境搭建
- 安裝git
- 安裝hexo(這些步驟省略)
- 生成ssh公鑰(之前生成過的也就不用再執行了,比如部署在github上填寫過rsa密鑰就不需要再進行這一步了)
- 在命令行終端執行如下命令
ssh-keygen -t rsa -C "郵件地址"
- 生成的文件預設在
~/.ssh
目錄中,看到有id_rsa
,id_rsa.pub
這些文件即可
雲主機環境搭建
- 安裝git及nodejs
bash yum install git #安裝NodeJS curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
- 創建git賬戶
bash adduser git chmod 740 /etc/sudoers vim /etc/sudoers
- 添加內容
找到
## Allow root to run any commands anywhere root ALL=(ALL) ALL
- 添加以下內容
bash git ALL=(ALL) ALL
- 保存退出並改回許可權
bash chmod 400 /etc/sudoers
- 設置git賬戶密碼
bash sudo passwd git
- 切換至
git
用戶,創建~/.ssh
文件夾和~/.ssh/authorized_keys
文件,並賦予相應的許可權
bash su git mkdir ~/.ssh vim ~/.ssh/authorized_keys #然後將本地電腦中執行 cat ~/.ssh/id_rsa.pub | pbcopy ,將公鑰複製粘貼到 authorized_keys chmod 600 ~/.ssh/authorzied_keys chmod 700 ~/.ssh
- 在本地終端中測試是否能免密登錄
git
ssh -v git@SERVER
- 其中
SERVER
為填寫自己的雲主機IP
- 創建目錄
bash # repo 作為為git倉庫目錄 mkdir -R /var/repo # hexo 作為網站根目錄 mkdir -R /var/www/hexo
- 配置
nginx
(當然Apache
也是可以的,nginx
的安裝步驟省略) - 首先輸入
ngixn -t
找到配置文件,我的是在/etc/nginx/nginx.conf
,配置SERVER
server {
listen 80;
# server_name 填寫自己的功能變數名稱
server_name www.fayne.cn;
# 這裡root填寫自己的網站根目錄
root /var/www/hexo;
index index.html index.php index.htm;
#/usr/local/tomcat/webapps/Forum
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
location ~ .php$ {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
設置解析
- 在
dnspod
設置解析記錄,設置解析A
記錄www
解析到伺服器IP地址
, 解析線路預設 - 設置
CNAME
解析使www
解析到xxx.github.io
,解析線路國外,這裡的xxx
為hexo
部署在github
的倉庫名稱,這樣保證了在國外訪問速度也是極佳的
使用git
自動化部署博客
自動化部署主要用到了git
-hooks
同步
- 伺服器建立裸庫,這裡要用
git
用戶登錄,確保git
用戶擁有倉庫所有權
su git cd /var/repo/ git init --bare blog.git
- 使用 git-hooks 同步網站根目錄
在這裡我們使用的是post-update
這個鉤子(也有可能是post-receive
,具體進入文件就知道了),當git有收發的時候就會調用這個鉤子。 在/var/repo/blog.git
裸庫的hooks
文件夾中
vim /var/repo/blog.git/hooks/post-update # 編輯文件,寫入以下內容
#!/bin/sh git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
保存後,要賦予這個文件可執行許可權
chmod +x post-update
- 配置
_config.yml
,完成自動化部署
打開_config.yml
, 找到deploy
deploy: type: git repo: github: [email protected]:Finhoo/Finhoo.github.io.git www: [email protected]:/var/repo/blog.git branch: master
保存後,即可測試部署
hexo clean && hexo g -d
- 至此,我們已經成功部完成,並且訪問自己的伺服器端比訪問
github
快多了,國外速度也是很好
常見問題
我在部署過程中,執行 hexo d
發現部署老是出錯,什麼許可權不允許之類的,這裡我們需要檢查我們在上述的git操作部署是否使用了git
用戶操作,若是沒有,需要給相應的目錄更改用戶組
使用chown -R git:git /var/repo/
這條命令遞歸的將repo
目錄及其子目錄用戶組設置為git
,同時chown -R git:git /var/www/hexo
,這樣即可解決此類問題