centos7服務器部署git并搭建部署Hexo個人博客
centos服務器搭建
個人服務器搭建
-
買一個合適自己的服務器(主要是價錢合適)
比如雙十一期間可以搶購一些大廠有優惠活動的服務器。
-
如果有能力者,可以自己買個主機,連接上公網,做一個自己的服務器(本人這方面小白,以后有機會可以嘗試一下這種方式)
buy_server.png
本人在騰訊云買的服務器(不能用我多年積攢的Q幣支付,屬實難受T.T)
如果想買個域名,花幾塊錢買個一年的域名也是極好的。
-
備案,不必多說,按照步驟采集一些信息,相關工作人員給你打幾個電話就完事了,當你收到備案成功郵件時,備案就算完成了。
beian_success.png
-
安裝服務器操作系統
-
服務器操作系統
system_select.png
本人選擇的是centos,不過大都相同類似,因為大部分都是Linux操作系統,使用的大多是Linux操作命令
- 安裝過后,就可以進入下一步了。
-
如果有域名的,可以綁定一下域名,因為當前服務器使用的還是公網IP,具體位置在云服務器上的我的域名,管理域名板塊,解析上去就完事了。
該整的整,整完以后登錄服務器,點擊實例中的登錄按鈕,進入云服務器上的操作系統,默認路徑應該是root根路徑,但是這個root并不是最頂層,上層還有一個操作系統級的目錄。可以用命令行進各大目錄看一看,具體如何操作。
# 進入目錄
cd <目錄名>
# 進入上一級
cd ../
# 展示當前目錄
ls
# 展示當前路徑
pwd
# 創建文件夾
mkdir <文件名>
熟練掌握這些命令,可以玩好幾天,不過如果想使用的更好,建議還是學習一下linux命令,畢竟在操作系統不再low逼得使用可視化工具了。
進入主線,安裝個nginx練練手先
打開騰訊云官方文檔
-
運維指南->軟件安裝 在這里可以根據不同的環境安裝軟件,本人使用的事centos環境,大致介紹一下安裝步驟:
- yum install 軟件名稱 這個命令用來安裝需要安裝的軟件
- 會顯示出安裝軟件的相關信息,并提示是否安裝,選擇y
- 當界面提示complete時,意味著安裝完成
如需查看安裝包軟件信息可以輸入 rpm -ql 軟件名 查詢安裝目錄,如需查看軟件版本信息可以輸入rpm -q 軟件名 查看軟件包的版本信息,如需查看已安裝過的軟件可以輸入rpm -qa 查看已安裝過得軟件列表。如果使用云服務安裝好的系統,會自帶很多常用的包,安裝之前可以查看一下是否安裝過。
-
安裝個nginx玩玩,實在抱歉,因為騰訊云服務已經幫您安裝好了,您只需要使用就行了,使用linux命令尋找一下nginx安裝目錄在哪。然后進入目錄,準備下一步操作。
通常軟件安裝后的目錄在etc這個文件夾里,使用vim打開它 vim /etc/nginx/nginx.config
可能有很多人剛接觸,不敢使勁操作,生怕搞壞個目錄結構啥的,造成系統崩潰,弄得互聯網世界崩盤,宇宙大爆炸啥的!但是,我要說的就是這個,如果你能在一個如此完善的操作系統里,僅憑修改幾個文件就搞壞了一整個系統,那就真的不用再看這邊文章了,這篇文章容不下您這尊大神,您已經是真的世界頂尖極客了。。。開個玩笑,可勁作吧,服務器買下來就是個小電腦,放心用,可勁造,弄不壞的,如果實在弄壞了,咱還可以重新安裝系統,重裝后又成一個新的服務器了不是。
使用nginx配置一個簡單的首頁,方法也很簡單新手只需要改兩個地方
先把nginx.config最上邊的 user 改了,改成自己的主用戶權限的用戶名,比如我這里就改為user root
-
修改server下的index 為index.html,root為首頁文件的路徑
nginx_config.png -
改好之后啟動nginx,有兩種方式啟動nginx
第一種:切換入nginx目錄下,執行nginx start啟動nginx服務器,nginx stop關閉nginx服務器,nginx reload重啟nginx服務器
第二種:使用全局方法,使用systemctl啟動服務(可以不添加后綴.service)
systemctl start nginx
systemctl stop nginx
systemctl reload nginx# 命令合集 systemctl is-enabled servicename.service #查詢服務是否開機啟動 systemctl enable *.service #開機運行服務 systemctl disable *.service #取消開機運行 systemctl start *.service #啟動服務 systemctl stop *.service #停止服務 systemctl restart *.service #重啟服務 systemctl reload *.service #重新加載服務配置文件 systemctl status *.service #查詢服務運行狀態 systemctl --failed #顯示啟動失敗的服務
nginx搭建完畢,下一步需要在服務器上搭建一下git倉庫,方法
-
git安裝
yum install -y git
-
配置git倉庫
useradd git # 添加git用戶 passwd git # git用戶新密碼 su git # 切換到git用戶 mkdir -p 目標目錄 # 項目的真實目錄
進入etc目錄下,打開sudoers,給git添加權限,root ALL=(ALL)ALL
如果sudoers沒有權限,可以用root用戶給sudoers添加可寫權限具體操作,chmod 740 /etc/sudoers,修改完后再改為chmod 440 /etc/sudoers,740 440 具體含義,請自行翻查linux權限操作
注意對其
進入git用戶執行如下命令su git cd /home/git/ git init --bare blog.git cd blog.git/hooks vim post-receive # 在git里創建一個鉤子
在post-receive里邊輸入如下內容:
#!/bin/bash GIT_REPO=/home/git/blog.git TMP_GIT_CLONE=/tmp/blog PUBLIC_WWW=/var/www/blog rm -rf ${TMP_GIT_CLONE} git clone $GIT_REPO $TMP_GIT_CLONE rm -rf ${PUBLIC_WWW}/* cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
保存后退出,執行chmod +x post-receive 給這個文件可執行權限
關閉git用戶shell權限
執行:vim /etc/passwd
將最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash修改為git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell-
配置SSH
cd /home/git mkdir .ssh # 創建.ssh目錄,這是個隱藏文件,因為以.開頭的文件 cd .ssh vim authorized_keys
然后將本地的公鑰復制到authorized_keys文件里(公鑰即上文中本地執行cat ~/.ssh/id_rsa.pub查看的內容)
查看用戶組管理
ll /home/git ll /var/www
確保blog.git、.ssh、blog目錄的用戶組權限為git:git。若不是,執行下列命令后再查看:
sudo chown git:git -R /var/www/blog sudo chown git:git -R /home/git/blog.git
到此為止就創建完成了,使用git上傳一下代碼和更新一下代碼嘗試嘗試。
配置hexo
學習一波hexo官方文檔
學習一波
發第一篇文章
進入下一步
配置_config.yml文件
學習一波官網的一鍵部署。其實也沒啥好講的。配置好,上傳齊活。
如果喜歡偷懶的,可以一鍵部署加上傳githab,具體方法:
// 修改package.json文件
"scripts": {
"build": "hexo clean && hexo g && hexo d && git add . && git commit -m '更新' && git pull && git push",
"dev": "hexo clean && hexo g && hexo s"
}
這么整的好處就是可以一鍵上傳源碼到GitHub,另一邊可以一鍵部署到個人服務器的私人git倉庫。
說一下自己的理解:大致原理就是在服務器上創建一個git倉庫,在鉤子里寫一個shell腳本,腳本內容大概說的就是當有版本上傳上來時,刪除tem臨時文件中的內容,執行git clone到tem臨時文件夾內,然后刪除對外的公網地址(nginx首頁位置),最后復制tem內新的臨時文件到對完的公網地址上。nginx指向的實質就是hexo生成的public目錄下的內容,到底很簡單,就是這個整體自動化工具,多多少少有點復雜。
說實話,第一次寫這么長,還不敢中斷思路,生怕錯過細節,寫到最后實在是惡心的不想寫了,單純的流水賬。下一次爭取用最簡潔的語言,描述出最完整的意思。