寫在開始
一開始將自己hexo
部署到github
,結(jié)果發(fā)現(xiàn)打開頁面速度有點慢滞磺,然后又將其同時部署到coding
,實現(xiàn)雙線路訪問升薯,國內(nèi)解析記錄到coding
,國外解析到github
击困,這樣確實網(wǎng)站的速度能提高不少涎劈,但是國內(nèi)訪問因為是經(jīng)過coding
,所以打開網(wǎng)站會有廣告阅茶,這點不能容忍蛛枚,于是想到自己的服務(wù)器也還空閑著,于是想到可以部署到自己的服務(wù)器上脸哀,折騰開始
演示站點
部署總覽
- 個人使用的環(huán)境
- 本地環(huán)境:
Windows10
(64位) - 云主機:阿里云ECS(
CentOS
7.2 64位)
- 本地環(huán)境:
- 整個部署過程
- 本地環(huán)境搭建(
git
蹦浦,NodeJs
,hexo
..) - 云主機環(huán)境搭建(
git
撞蜂,Nginx
) - 設(shè)置解析(
dnspod
) - 使用git自動化部署博客
- 本地環(huán)境搭建(
本地環(huán)境搭建
- 安裝git
- 安裝hexo(這些步驟省略)
- 生成ssh公鑰(之前生成過的也就不用再執(zhí)行了白筹,比如部署在github上填寫過rsa密鑰就不需要再進行這一步了)
- 在命令行終端執(zhí)行如下命令
ssh-keygen -t rsa -C "郵件地址"
- 生成的文件默認在
~/.ssh
目錄中,看到有id_rsa
谅摄,id_rsa.pub
這些文件即可
云主機環(huán)境搭建
- 安裝git及nodejs
yum install git
#安裝NodeJS
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
- 創(chuàng)建git賬戶
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
- 添加內(nèi)容
找到
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
- 添加以下內(nèi)容
git ALL=(ALL) ALL
- 保存退出并改回權(quán)限
chmod 400 /etc/sudoers
- 設(shè)置git賬戶密碼
sudo passwd git
- 切換至
git
用戶徒河,創(chuàng)建~/.ssh
文件夾和~/.ssh/authorized_keys
文件,并賦予相應(yīng)的權(quán)限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后將本地電腦中執(zhí)行 cat ~/.ssh/id_rsa.pub | pbcopy ,將公鑰復(fù)制粘貼到
authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
- 在本地終端中測試是否能免密登錄
git
ssh -v git@SERVER
- 其中
SERVER
為填寫自己的云主機IP
- 創(chuàng)建目錄
# repo 作為為git倉庫目錄
mkdir -R /var/repo
# hexo 作為網(wǎng)站根目錄
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填寫自己的網(wǎng)站根目錄
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 {
}
}
設(shè)置解析
- 在
dnspod
設(shè)置解析記錄洋只,設(shè)置解析A
記錄www
解析到服務(wù)器IP地址
, 解析線路默認 - 設(shè)置
CNAME
解析使www
解析到xxx.github.io
,解析線路國外,這里的xxx
為hexo
部署在github
的倉庫名稱,這樣保證了在國外訪問速度也是極佳的
使用git
自動化部署博客
自動化部署主要用到了git
-hooks
同步
- 服務(wù)器建立裸庫,這里要用
git
用戶登錄植影,確保git
用戶擁有倉庫所有權(quán)
su git
cd /var/repo/
git init --bare blog.git
- 使用 git-hooks 同步網(wǎng)站根目錄
在這里我們使用的是post-update
這個鉤子(也有可能是post-receive
,具體進入文件就知道了)涎永,當git有收發(fā)的時候就會調(diào)用這個鉤子思币。 在/var/repo/blog.git
裸庫的hooks
文件夾中
vim /var/repo/blog.git/hooks/post-update
# 編輯文件鹿响,寫入以下內(nèi)容
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
保存后,要賦予這個文件可執(zhí)行權(quán)限
chmod +x post-update
- 配置
_config.yml
,完成自動化部署
打開_config.yml
, 找到deploy
deploy:
type: git
repo:
github: git@github.com:Finhoo/Finhoo.github.io.git
www: git@www.fayne.cn:/var/repo/blog.git
branch: master
保存后谷饿,即可測試部署
hexo clean && hexo g -d
- 至此惶我,我們已經(jīng)成功部完成,并且訪問自己的服務(wù)器端比訪問
github
快多了博投,國外速度也是很好
常見問題
我在部署過程中绸贡,執(zhí)行 hexo d
發(fā)現(xiàn)部署老是出錯,什么權(quán)限不允許之類的毅哗,這里我們需要檢查我們在上述的git操作部署是否使用了git
用戶操作听怕,若是沒有,需要給相應(yīng)的目錄更改用戶組
使用chown -R git:git /var/repo/
這條命令遞歸的將repo
目錄及其子目錄用戶組設(shè)置為git
虑绵,同時chown -R git:git /var/www/hexo
叉跛,這樣即可解決此類問題