我的Hexo博客地址
有問(wèn)題可以留言相互討論,我的hexo博客地址,請(qǐng)勿頻繁訪問(wèn)或者攻擊,僅供學(xué)習(xí)和參考。
主要在騰訊云服務(wù)器Centos7.9版本,利用寶塔搭建Hexo博客站點(diǎn),Windows本地上搭建Hexo博客項(xiàng)目,實(shí)現(xiàn)本地一鍵自動(dòng)化部署到服務(wù)器上,擁有屬于自己的博客網(wǎng)站
Centos 安裝git并進(jìn)行配置,利用寶塔配置站點(diǎn)
查看git 版本
git --version
安裝依賴
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
卸載舊版本git
yum remove git
打開文件夾
用于存放下載的git包
cd /usr/local/src/
下載最新版git壓縮包
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz
解壓
tar -xvf git-2.32.0.tar.xz
切換到解壓后的文件目錄
cd git-2.32.0
編譯
make prefix=/usr/local/git all
會(huì)顯示一堆.o類型的文件,表示正在從源碼編譯。
未顯示錯(cuò)誤直接跳到“安裝”步驟
如果出現(xiàn)錯(cuò)誤collect2: error: ld returned 1 exit status.
原因是gcc版本較低所致,與所需編譯條件不匹配。
升級(jí)gcc版本(可選)
- 安裝scl源
yum install centos-release-scl scl-utils-build -y
- 列出scl可用的列表
yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-"
- 安裝8版本的gcc、gcc-c++、gdb工具鏈(toolchian)
yum install devtoolset-8-toolchain -y
- 啟動(dòng)gcc8
scl enable devtoolset-8 bash
報(bào)錯(cuò):bash: __vsc_prompt_cmd_original: command not found
bash: __vsc_prompt_cmd_original: command not found
借用stackoverflow上的Solution
You can test the following method.
Using an editor such as nano or vim, Add the line unset PROMPT_COMMAND to your .bashrc file, and it will take effect on the next session.
To apply the change immediately for the life of the current shell session, type unset PROMPT_COMMAND in your terminal window.
vi ~/.bashrc
用于在行尾添加unset PROMPT_COMMAND
source ~/.bashrc
表示重新加載文件.bashrc
執(zhí)行完畢后再次啟動(dòng)gcc8
scl enable devtoolset-8 bash
通過(guò)scl命令啟動(dòng)gcc,這個(gè)只是暫時(shí)的,當(dāng)你的shell關(guān)閉后或者重啟就會(huì)恢復(fù)原來(lái)的版本,要想一直使用升級(jí)后的版本可以使用如下命令:
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
再次執(zhí)行編譯命令發(fā)現(xiàn)又報(bào)錯(cuò):
reftable/libreftable.a(block.o): In function `block_reader_init':
/usr/local/src/git-2.37.3/reftable/block.c:218: undefined reference to `uncompress2'
collect2: error: ld returned 1 exit status
make: *** [Makefile:3077: t/helper/test-tool] Error 1
暫時(shí)解決不了這個(gè)問(wèn)題先擱置。
可能是由于git版本比較新,用到了一些新的函數(shù)。建議安裝舊版本git
安裝
make prefix=/usr/local/git install
配置環(huán)境變量
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile
也可以將該語(yǔ)句直接寫入相應(yīng)的文件中,再執(zhí)行source命令使生效。
vim /etc/profile
將下面兩行命令添加到profile文件末尾
PATH=$PATH:/usr/local/git/bin # git 的目錄
export PATH
按i進(jìn)入編輯模式,按esc退出,再按:wq保存編輯。
使寫入語(yǔ)句生效:
source /etc/profile
查看安裝的git版本
git --version
成功出現(xiàn)git version 2.32.0即表示安裝成功。
配置Git
創(chuàng)建git用戶
adduser git
設(shè)置用戶密碼(可選)
passwd git
分配權(quán)限
chmod 740 /etc/sudoers
vim /etc/sudoers
按 i 鍵進(jìn)入文件的編輯模式,找到如下字段root ALL=(ALL) ALL
在其后面增加一句:
git ALL=(ALL) ALL
按 Esc 鍵退出編輯模式,輸入:wq 保存退出。
退回權(quán)限:
chmod 400 /etc/sudoers
生成Windows本地密鑰
這部分很簡(jiǎn)單,百度搜索git的ssh配置即可。
配置密鑰
- 打開本地端,也就是自己Windows主機(jī)C盤目錄下的用戶文件夾下的用戶名文件夾下的.ssh文件文件夾,打開id_isa.pub
復(fù)制里面的內(nèi)容。
- 返回Linux服務(wù)器端,創(chuàng)建.ssh文件夾
su git mkdir ~/.ssh
- 創(chuàng)建.ssh/authorized_keys文件,打開authorized_keys文件并將剛才在本地機(jī)器復(fù)制的內(nèi)容拷貝其中并保存
vim ~/.ssh/authorized_keys
按i進(jìn)入編輯模式粘貼完按 Esc 鍵退出編輯模式,輸入:wq 保存退出。
- 修改權(quán)限
chmod 755 ~ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
測(cè)試連接
yourIp為遠(yuǎn)程服務(wù)器的ip地址,騰訊云輕量云服務(wù)器一般是公網(wǎng)IP:12X.XXX.XXX.XX
ssh -v git@yourIp //yourIp為你的服務(wù)器ip
如果設(shè)置有密碼,輸入密碼即可連接到遠(yuǎn)程終端。
創(chuàng)建遠(yuǎn)程博客目錄
- 切換到遠(yuǎn)程Linux服務(wù)器端
- 切換到root用戶,創(chuàng)建一個(gè)目錄用于存儲(chǔ)網(wǎng)站的根目錄/home/hexo并賦給相應(yīng)權(quán)限
su root mkdir /home/hexo chown git:git -R /home/hexo
Linux自動(dòng)化部署設(shè)置
Linux服務(wù)器配置
所要達(dá)到的實(shí)際效果是本地創(chuàng)建博客后能一鍵部署到服務(wù)器上,后續(xù)再修改博客的時(shí)候可以一鍵同步到服務(wù)器上,這就是自動(dòng)化部署。
首先要在遠(yuǎn)程服務(wù)器上配置相應(yīng)文件。
- 獲取root權(quán)限
su root
- 建立git倉(cāng)庫(kù)并初始化
cd /home/git git init --bare blog.git
- 修改blog.git的權(quán)限(-R 是遞歸,即文件夾下的所有文件夾或文件都會(huì)遞歸修改權(quán)限)
chown git:git -R blog.git
- 在 /home/git/blog.git 下,有一個(gè)自動(dòng)生成的 hooks 文件夾,我們創(chuàng)建一個(gè)新的 git 鉤子 post-receive,用于自動(dòng)部署。
vim blog.git/hooks/post-receive
- 按 i 鍵進(jìn)入文件的編輯模式,在該文件中添加兩行代碼(將下邊的代碼粘貼進(jìn)去),指定 Git 的工作樹(源代碼)和 Git 目錄。
#!/bin/bash git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f
按 Esc 鍵退出編輯模式,輸入:wq 保存退出。
- 修改文件的執(zhí)行權(quán)限
chmod +x /home/git/blog.git/hooks/post-receive
寶塔配置
這里采用寶塔的一鍵LAMP配置,然后就可以很方便的使用一些功能。
添加站點(diǎn)
- 在域名中添加自己購(gòu)買的域名,并確保已經(jīng)解析IP到自己騰訊云服務(wù)器上了,這個(gè)步驟網(wǎng)上有很多教程,自行完成域名相關(guān)問(wèn)題,證書SSL申請(qǐng)等,如果域名有解析可以直接勾上。
- 證書的添加自行百度搜索,強(qiáng)制https開關(guān)打開,保證安全性。
- 可以看到這時(shí)站點(diǎn)的目錄在/www/wwwroot/所填寫的域名,與我們實(shí)際的Hexo博客的根目錄位置/home/hexo不符。
- 一個(gè)可行的解決辦法是將/home下的hexo文件夾移到/www/wwwroot/所填寫的域名文件夾下,這樣就可以通過(guò)域名加上/hexo的方式來(lái)訪問(wèn)到我們的博客即
www.domain.com/hexo
這里的www.domain.com要改成自己購(gòu)買的域名,下同 - 修改方式如下:
- 在 /home/git 下,有一個(gè)自動(dòng)生成的 hooks 文件夾,進(jìn)入該文件目錄下,我們創(chuàng)建一個(gè)新的 git 鉤子 post-receive,用于自動(dòng)部署。
cd /home/git vim blog.git/hooks/post-receive
- 按 i 鍵進(jìn)入文件的編輯模式,在該文件中重寫原有的兩行代碼,改變工作樹目錄為寶塔站點(diǎn)目錄(將下邊的代碼粘貼進(jìn)去),指定 Git 的工作樹(源代碼)和 Git 目錄。
#!/bin/bash git --work-tree=/www/wwwroot/www.domain.com/hexo --git-dir=/home/git/blog.git checkout -f
- 按 Esc 鍵退出編輯模式,輸入:wq 保存退出。
- 注意重新修改git用戶對(duì)該目錄的訪問(wèn)權(quán)限
chown git:git -R /www/wwwroot/www.domain.com/hexo
Windows搭建Hexo,配置自動(dòng)化部署
Windows安裝Git
windows:到git官網(wǎng)上下載,Download git,下載后會(huì)有一個(gè)Git Bash的命令行工具,以后就用這個(gè)工具來(lái)使用git。
可以更改Git的安裝目錄到其他磁盤,環(huán)境變量一般安裝的時(shí)候會(huì)自動(dòng)配置,命令行界面如果輸入git --version
產(chǎn)生相應(yīng)的git版本則表示成功安裝。
Windows安裝Node.js并初始化Hexo
-
下載node.js安裝程序(windows.msi)(也可以安裝在其他盤中) 同樣,環(huán)境變量也會(huì)在安裝程序的時(shí)候自動(dòng)配置了。
-
命令行界面輸入以下命令,安裝Hexo
$ npm install -g hexo-cli
-
一般Windows的cmd界面都是在C盤,如果想在其他盤建立博客的目錄,可以先跳轉(zhuǎn)的其他路徑。鍵入下面命令可以在當(dāng)前目錄創(chuàng)建文件夾名為Blog的目錄
hexo init Blog
-
進(jìn)入該文件夾并執(zhí)行安裝命令
cd Blog npm install
新建完成后,指定文件夾目錄下有:
node_modules: 依賴包
public:存放生成的頁(yè)面
scaffolds:生成文章的一些模板
source:用來(lái)存放你的文章
themes:主題
_config.yml: 博客的配置文件安裝部署包
npm install hexo-deployer-git --save
-
本地啟動(dòng)Hexo服務(wù)
hexo g hexo server
在瀏覽器輸入localhost:4000就可以看到生成的博客了。ctrl+c關(guān)掉服務(wù)
Windows本地端配置自動(dòng)化部署
配置hexo
-
配置 _config.yml 文件
在Blog的文件夾下找到 _config.yml 文件并打開,找到文件末尾的deploy 做以下配置deploy: type: git repo: git@這里改為服務(wù)器公網(wǎng)IP:/home/git/blog.git branch: master
保存并退出。
到這里就要開始進(jìn)行真正的部署環(huán)節(jié)了cd Blog hexo clean hexo generate hexo deploy
-
cmd進(jìn)入命令行界面,先進(jìn)入你的Blog文件夾下。
-
執(zhí)行hexo clean命令
-
hexo generate 命令可以簡(jiǎn)寫成hexo g 正如前面的 hexo server可以簡(jiǎn)寫成hexo s
-
hexo deploy 命令可以簡(jiǎn)寫成hexo d
-
正常情況下此時(shí)可以將本地的博客部署到遠(yuǎn)程服務(wù)器上,通過(guò)配置好的遠(yuǎn)程服務(wù)器的git用戶登錄來(lái)達(dá)到這一目的,但是可能會(huì)出現(xiàn)一些奇奇怪怪的錯(cuò)誤,最主要的還是git用戶對(duì)所要替換的遠(yuǎn)程目錄權(quán)限上的問(wèn)題,和一些配置文件的路徑填寫有問(wèn)題。下面統(tǒng)一解決一些常見(jiàn)的錯(cuò)誤。
常見(jiàn)問(wèn)題
問(wèn)題1
hexo自動(dòng)化部署顯示Permission denied或有權(quán)限問(wèn)題
Solution 1:
通過(guò)在服務(wù)器端執(zhí)行chmod命令,修改工作目錄和git目錄的文件權(quán)限
即類似
chown git:git -R /www/wwwroot/www.domain.com/hexo
最后一個(gè)參數(shù)為修改的文件夾目錄,-R表示遞歸,即文件夾下所有的東西均修改權(quán)限。
Solution 2:
可以直接以root用戶訪問(wèn)部署遠(yuǎn)程服務(wù)器,即在本地Blog文件夾下的_config.yaml中修改deploy的repo參數(shù)。
deploy:
type: git
repo: root@這里改為服務(wù)器公網(wǎng)IP:/home/git/blog.git
branch: master
問(wèn)題2
服務(wù)器搭建好的頁(yè)面沒(méi)有圖片,css等樣式
Solution :
可以查看博客頁(yè)面的源碼,發(fā)現(xiàn)url引用的鏈接是什么example.com下的東西,很明顯,這里需要改動(dòng)一下,可以不直接改源碼,改動(dòng)本地博客的_config.yaml文件里的內(nèi)容,再次部署上傳即可。
找到配置文件下的url參數(shù),將內(nèi)容修改為http://公網(wǎng)ip/hexo或者h(yuǎn)ttps://www.domain.com即可,這其實(shí)是訪問(wèn)的剛才寶塔添加的站點(diǎn)(/www/wwwroot/域名)下的/hexo文件夾下的資源。
url: https://www.domain.com/hexo
重新執(zhí)行部署的三條命令
hexo clean
hexo g
hexo d
這時(shí)格式和圖片就能正常顯示在服務(wù)器上了。
問(wèn)題3
Apache虛擬目錄配置
由于本人修改配置過(guò)于頻繁,很難記清現(xiàn)在將Apache配置文件改動(dòng)成什么樣了,所以大家可能在寶塔的Apache配置上會(huì)出現(xiàn)一些問(wèn)題。
但我記得在寶塔上安裝Apache是已經(jīng)寫好了虛擬目錄有關(guān)的配置文件
Solution :
在寶塔面板->軟件商店,Apache設(shè)置里點(diǎn)擊配置修改,Ctrl+F查找,輸入follow,可以看到下圖位置
將其修改成如圖所示內(nèi)容即可。
<Directory />
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>
其中Options FollowSymLinks換成Options Indexes FollowSymLinks也能達(dá)到同樣的效果,不過(guò)此時(shí)訪問(wèn)者同樣能訪問(wèn)到該虛擬目錄下的文件資源,相當(dāng)于直接暴露了部分源碼,不太推薦修改成帶Indexes的配置。
之后就可以通過(guò)https://域名/hexo的方式在本機(jī)訪問(wèn)到服務(wù)器上搭建的博客了。
問(wèn)題4
防火墻問(wèn)題
Solution :
一般本機(jī)防火墻不需要任何的設(shè)置,只可能是服務(wù)器防火墻出現(xiàn)問(wèn)題。
一般要在寶塔面板或命令行界面打開這些端口文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-455608.html
實(shí)在解決不了端口放行的問(wèn)題就先暫時(shí)關(guān)閉防火墻進(jìn)行網(wǎng)站的訪問(wèn)測(cè)試。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-455608.html
到了這里,關(guān)于Centos7.9寶塔搭建Hexo博客,實(shí)現(xiàn)本地一鍵自動(dòng)化部署到服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!