相信大家把博客部署到服務器都是爲了加快訪問速度,這裏就不囉嗦了。
我的服務器
-
系統
CentOS 7.5 64bit
-
配置
標準型S2/1核/2GB/1Mbps
服務器需要的環境
- 環境:
git
,Nginx
- 使用
git
自動化部署發佈
打開騰訊雲,進入【雲服務器】→【登錄】
初始密碼在右上角消息裏面有
1】Git安裝及配置
一、安裝依賴庫和編譯工具
- 安裝依賴庫:
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
然後會出現:
Is this ok [y/d/N]:
輸入y
繼續安裝,後面也一樣。
- 安裝編譯工具:
yum install gcc perl-ExtUtils-MakeMaker package
二、下載 git並解壓編譯安裝
- 查看服務器已有的git版本
git --version
然後會看到:
git version 1.8.3.1
但是官網版本已經更新了,因爲yum倉庫的Git版本更新的時間會存在延時,我們這裏採用源碼包安裝方式安裝。
- 將陳舊版本的git刪除
yum remove git
- 選擇一個目錄來存放下載下來的 git 安裝包。這裏選擇了
/usr/local/src
目錄
cd /usr/local/src
- 下載最新版git到
/usr/local/src
,可以在官網找到版本,目前最新版本是2.26.0。
wget http://ftp.ntu.edu.tw/software/scm/git/git-2.26.0.tar.gz
- 解壓到當前目錄
tar -zvxf git-2.26.0.tar.gz
- 進入
git-2.26.0.tar.gz
目錄下
cd git-2.26.0
- 執行編譯
make prefix=/usr/local/git all
- 安裝 git 到 /usr/local/git 目錄下
make prefix=/usr/local/git install
三、配置 git 環境變量
- 打開環境變量配置文件
vim /etc/profile
按i進入編輯模式,按向下鍵到底部,添加下面兩行命令:
PATH=$PATH:/usr/local/git/bin # git 的目錄
export PATH
按esc
退出,按:wq
保存編輯。(注意是先:
再是wq
)
- 使 git 環境變量生效
source /etc/profile
- 驗證安裝完成,查看 git 的版本號
git --version
這時候我們的git版本已經變成了:
git version 2.26.0
四、創建 git 用戶
- 創建git用戶
adduser git
- 獲取權限
chmod 740 /etc/sudoers
vim /etc/sudoers
按 i
鍵進入文件的編輯模式,按向下鍵找到如下字段
root ALL=(ALL) ALL
在其後面增加一句:
git ALL=(ALL) ALL
按 Esc
鍵退出編輯模式,輸入:wq
保存退出。(先輸入:
,然後輸入wq
回車)
- 退回權限
chmod 400 /etc/sudoers
五、配置密鑰
- 創建密鑰
來到這裏的小夥伴應該都已經有了自己的hexo博客,那麼肯定已經創建過自己的密鑰,一般存放在c/用戶/.ssh
下。
如果沒有自己的密鑰,可以移步我之前的教程,裏面有密鑰創建步驟
- 將密鑰保存在服務器(之前有密鑰的直接複製就可以)
將id_rsa.pub
裏面的密鑰複製,在服務器運行下面命令,創建.ssh文件夾
su git
mkdir ~/.ssh
創建.ssh/authorized_keys文件,打開authorized_keys文件並將剛纔在本地機器複製的內容拷貝其中並保存
vim ~/.ssh/authorized_keys
按i
進入編輯模式粘貼完按 Esc
鍵退出編輯模式,輸入:wq
保存退出。(先輸入:
,然後輸入wq
回車)
- 修改權限
chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
-
測試本地連接服務器
在本地電腦git bash here
//yourIp爲遠程服務器的ip地址
ssh -v git@yourIp //yourIp爲你的服務器ip
如圖則證明本地機器與遠程機器已經接通
六、創建git倉庫
- 切換到root用戶,創建一個目錄用於存儲網站的根目錄
su root
- 創建網站的根目錄
mkdir /home/hexo
- 給予權限
chown git:git -R /home/hexo
2】安裝Nginx
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務
一、安裝配置Nginx
- 安裝Nginx
yum install -y nginx
- 配置Nginx
nginx -t
使用vim打開nginx.conf文件
vim /etc/nginx/nginx.conf
按i
進入編輯模式粘貼完按 Esc
鍵退出編輯模式,輸入:wq
保存退出。(先輸入:
,然後輸入wq
回車)
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.muyiio.com; //你的博客域名
root /home/hexo; //git倉庫目錄
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
j
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
- 啓動Nginx
systemctl start nginx.service
- 重啓Nginx
systemctl restart nginx.service
二、自動化部署
- 獲取root權限
su root
- 建立git倉庫
cd /home/git
git init --bare blog.git
- 修改blog.gi權限
chown git:git -R blog.git
- 在
/home/hexo/blog.git
下,有一個自動生成的hooks
文件夾,我們創建一個新的git
鉤子post-receive
,用於自動部署。
im blog.git/hooks/post-receive
- 按
i
鍵進入文件的編輯模式,在該文件中添加兩行代碼(將下邊的代碼粘貼進去),指定 Git 的工作樹(源代碼)和 Git 目錄
#!/bin/bash
git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f
按 Esc
鍵退出編輯模式,輸入:wq
保存退出。(先輸入:
,然後輸入wq
回車)
- 修改文件權限,使得其可執行。
chmod +x /home/git/blog.git/hooks/post-receive
3】配置本地Hexo
- 博客根目錄_config下增加
deploy:
type: git
repo: root@***(服務器ip,內網外網都行):/home/git/blog.git #倉庫地址
branch: master #分支
- 部署
hexo clean
hexo g
hexo d
- 輸入
hexo d
的時候,會要求你輸入自己的服務器密碼
Branch 'master' set up to track remote branch 'master' from 'https://e.coding.net/godxiaolon/godxiaolon.git'.
On branch master
nothing to commit, working tree clean
root@119.25.56.82's password:
Enumerating objects: 182, done.
Counting objects: 100% (182/182), done.
Delta compression using up to 12 threads
Compressing objects: 100% (61/61), done.
Writing objects: 100% (95/95), 73.08 KiB | 3.18 MiB/s, done.
Total 95 (delta 45), reused 0 (delta 0)
remote: hooks/post-receive: line 1: t: command not found
To 118.25.27.52:/home/git/hexoBlog.git
8df3691..7d63b39 HEAD -> master
Branch 'master' set up to track remote branch 'master' from '[email protected]:/home/git/hexoBlog.git'.
INFO Deploy done: git
輸入密碼不會有顯示,輸完回車就可以
- 如果出現
bash: git-receive-pack: command not found
,則運行:
sudo ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
- 訪問服務器ip,看看有沒有成功
最後,發現其實挺簡單的,快去訪問你的服務器ip
看看有沒有部署成功吧