hexo部署云服务器的全过程
目錄
- 前言
- 環境
- 本地環境
- 服務器環境
- 本地機器配置
- 配置密鑰
- 使用git bash生成ssh公鑰
- 服務器配置
- 安裝Git,nodejs,Nginx等
- 創建git新用戶及配置
- 創建git新用戶
- 將公鑰配置到服務器上
- 測試git連接
- 創建網站的根目錄
- 安裝以及配置Nginx
- 實現自動化部署
- 建立git裸庫
- 使用 git-hooks 同步網站根目錄
- 本地機器中部署至服務器
- 配置hexo
- 新用戶
- 將公鑰配置到服務器上
- 測試gitd連接
- 創建網站的根目錄
- 實現自動化部署
- 建立git裸庫
- 使用 git-hooks 同步網站根目錄
前言
由于不想部署在github上,因為Github的訪問速度在國內比較慢,所以有了此文。
部署之前先了解一下hexo利于git更新的流程,部署在Github上和部署在云服務器上沒有特別大的本質區別。
整個流程就是本地將 *.md 渲染成靜態文件,然后Git推送到服務器的repository,服務器再通過 git-hooks 同步網站根目錄。再利于nginx托管這些靜態資源,就可以實現快速的訪問。
環境
本地環境
- Windows10(64bit)
- 已經裝好了git,nodejs,hexo
- 已經在本地調試好了hexo靜態網站
服務器環境
- 華為云ECS(1M1核2G,centos7)
- 已經裝好了git,nodejs,以及編譯好了Nginx
本地機器配置
配置密鑰
在本地機器(Windows環境)中進入
使用git bash生成ssh公鑰
# 本地 windows gitBash ssh-keygen -t rsa一路回車,直至如下圖,即可。
在本地服務器中配置好了公鑰,接下來我們需要把這個公鑰交給服務器,相當于本地機器有了一把能訪問服務器的“鑰匙”,所以接下來需要配置服務器。
服務器配置
安裝Git,nodejs,Nginx等
linux下安裝這些非常簡單,直接百度即可。
創建git新用戶及配置
創建git新用戶
adduser git #加入git用戶 passwd git #配置你的密碼 chmod 740 /etc/sudoers #修改權限 r=4 w=2 x=1 rwx=7 r__=4 ___=0,也就是說git的sudo使用權為只讀 vim /etc/sudoers打開suduers,找到以下內容
## Allow root to run any commands anywhere root ALL=(ALL) ALL在他的下面加入以下內容
git ALL=(ALL) ALLwq保存后,需要將權限修改回來
chmod 400 /etc/sudoers將公鑰配置到服務器上
首先你得在你的本地機器上找到你的公鑰,一般在用戶的家目錄下,windows是Administrator目錄,linux是~/.ssh下
我的本地機器是windows,所以在Administrator目錄下。
將該文件的內容復制。
在服務器端,切換至剛剛創建好的git用戶下,創建.ssh文件和authorized_keys文件
su git mkdir ~/.ssh vim ~/.ssh/authorized_keys修改權限
cd ~ chmod 600 .ssh/authorized_keys # 將文件設置為可讀可寫 chmod 700 .ssh #將該文件夾設置為可讀可寫可執行,注意文件夾的可執行是指能訪問測試git連接
切換到本地機器上,在本地機器上測試是否能連接到你的遠程git用戶
ssh -v git@SERVER_IP測試成功
如果你的測試不成功,請查看具體的輸出信息,通常是公鑰沒配置好,可以把原來生成的公鑰刪了,重新配置一遍。
創建網站的根目錄
創建網站的根目錄的目的是為了讓nginx托管這些靜態文件。
創建一個目錄用于作為網站的根目錄。切換成root用戶
su root mkdir /home/hexo # 此目錄為網站的根目錄變更該目錄的所有者
chown git:git -R /home/hexo安裝以及配置Nginx
安裝過程略,具體可百度。編譯好nginx后,進入其配置文件
注意使用 nginx -t 命令檢查配置文件的語法是否出錯。然后使用 systemctl restart nginx.service 或者
在編譯好的nginx目錄下使用sbin/nginx -s reload命令重啟服務即可。
實現自動化部署
建立git裸庫
該裸庫什么版本信息和數據都不保存,單純是為了共享而存在。
在root 用戶下
su root cd /home/git # 在 git 用戶目錄下創建 git init --bare hexo.git這時,git用戶的~ 目錄下就存在一個 hexo.git文件夾,可使用ls 命令查看。再修改hexo.git的所有者。
chown git:git -R hexo.git使用 git-hooks 同步網站根目錄
在這使用的是post-receive這個鉤子,當 git 有收發的時候就會調用這個鉤子。 在 blog.git裸庫的 hooks 文件夾中,新建post-receive 文件。
vim hexo.git/hooks/post-receive填入以下內容,其中 /home/hexo 為網站目錄,根據自己的填入,保存退出。
#!/bin/sh git --work-tree=/home/hexo --git-dir=/home/git/hexo.git checkout -f注意此處若是gitd(測試)賬戶下面這樣寫
#!/bin/sh git --work-tree=/home/hexod --git-dir=/home/gitd/hexod.git checkout -f該鉤子的意思是當本地有提交到服務器時,會將文件放在/home/hexo下
-f這個參數如果在多人協作的博客中可能會引發不好的結果,因為他是強制更新的意思,會將本地版本覆蓋掉遠程服務器的版本,但是是個人的博客系統就無所謂了
保存后,要賦予這個文件可執行權限。
chmod +x /home/git/hexo.git/hooks/post-receive也可進行可視化操作, 我用的是FileZilla
這樣就完成了git自動部署的配置
本地機器中部署至服務器
在本地中,和部署到 github 服務一樣,需要先 hexo g 命令生成靜態文件,通過 hexo s 命令能夠正常進行本地訪問,并且確保***已經安裝***了 hexo-deployer-git。
配置hexo
hexo 根目錄下的 _config.yml 文件,找到 deploy。
deploy:type: gitrepo: git@SERVER:/home/git/hexo.git # 填寫你的服務器地址 將SERVER替換掉branch: master # 分支之后按照正常的流程部署
hexo c && hexo g && hexo d部署成功,訪問測試。
至此你的項目部署完成就不用往下看了, 來個三連吧, 下面是創建新賬戶進行的相同操作。
新用戶
我們不用git這個賬戶, 新創個賬戶進行部署
創建gitd賬戶同步進行
adduser gitd #加入gitd用戶 passwd gitd #配置你的密碼 chmod 740 /etc/sudoers #修改權限 r=4 w=2 x=1 rwx=7 r__=4 ___=0,也就是說git的sudo使用權為只讀 vim /etc/sudoers打開suduers,找到以下內容
## Allow root to run any commands anywhere root ALL=(ALL) ALL在他的下面加入以下內容
gitd ALL=(ALL) ALLwq保存后,需要將權限修改回來
chmod 400 /etc/sudoers將公鑰配置到服務器上
在服務器端,切換至剛剛創建好的git用戶下,創建.ssh文件和authorized_keys文件
su gitd mkdir ~/.ssh vim ~/.ssh/authorized_keys修改權限
cd ~ chmod 600 .ssh/authorized_keys # 將文件設置為可讀可寫 chmod 700 .ssh #將該文件夾設置為可讀可寫可執行,注意文件夾的可執行是指能訪問測試gitd連接
切換到本地機器上,在本地機器上測試是否能連接到你的遠程gitd用戶
ssh -v gitd@SERVER_IP創建網站的根目錄
創建網站的根目錄的目的是為了讓nginx托管這些靜態文件。
創建一個目錄用于作為網站的根目錄。切換成root用戶
su root mkdir /home/hexod # 此目錄為網站的根目錄 hexod變更該目錄的所有者
chown gitd:gitd -R /home/hexod實現自動化部署
建立git裸庫
該裸庫什么版本信息和數據都不保存,單純是為了共享而存在。
在root 用戶下
su root cd /home/gitd # 在 gitd 用戶目錄下創建 git init --bare hexod.git這時,gitd 用戶的 ~目錄下就存在一個 hexod.git文件夾,可使用ls 命令查看。再修改hexod.git的所有者。
chown gitd:gitd -R hexod.git使用 git-hooks 同步網站根目錄
vim hexod.git/hooks/post-receive填入以下內容,其中 /home/hexod為網站目錄,根據自己的填入,保存退出。
#!/bin/sh git --work-tree=/home/hexod --git-dir=/home/gitd/hexod.git checkout -f保存后,要賦予這個文件可執行權限。
chmod +x /home/gitd/hexod.git/hooks/post-receive總結
以上是生活随笔為你收集整理的hexo部署云服务器的全过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6特性总结
- 下一篇: hexo d后 ERROR Deploy