Hexo博客部署到騰訊云服務(wù)器全過(guò)程(Nginx,證書,HTTPS),你要的這里都有

背景

說(shuō)來(lái)也慚愧,博客已經(jīng)搭建很久了,一直免費(fèi)的部署在 Coding 和 Github Pages 上嫁怀,前者遷移到騰訊云 Serverless萝招,導(dǎo)致原有的配置始終有問(wèn)題,沒(méi)時(shí)間仔細(xì)研究,剛好騰訊服務(wù)器有羊毛可以褥,果斷作出遷移凶朗,至于選擇騰訊云,是因?yàn)楫?dāng)初備案在騰訊云,但是購(gòu)買域名是在阿里踏施,感覺(jué)好擰巴日熬,但是整體互不相關(guān),沒(méi)啥影響

部署環(huán)境

環(huán)境
本地環(huán)境 MacOS Monterey 12.0.1
服務(wù)器環(huán)境 CentOS Linux release 8.2.2004 (Core)

本地環(huán)境配置

hexo 本地搭建過(guò)程網(wǎng)上太多了毕荐,這里不再贅述揣炕,這里只是做一點(diǎn)鏈接服務(wù)器的準(zhǔn)備工作

生成 Git 密鑰

ssh-keygen -C "your@mail.com"

一路回車,這時(shí)你應(yīng)該可以在 ~/.ssh/ 目錄下看到兩個(gè)剛剛生成好的密鑰文件:

  1. 公鑰:id_rsa.pub
  2. 私鑰:id_rsa

我們一會(huì)需要把公鑰的內(nèi)容拷貝到服務(wù)器上

服務(wù)器環(huán)境配置

服務(wù)器非常純凈东跪,什么也沒(méi)有畸陡,所以我們要一點(diǎn)點(diǎn)安裝我們所需的內(nèi)容

  • Git
  • Nginx

強(qiáng)烈建議你重置騰訊云服務(wù)器的默認(rèn)密碼, 再進(jìn)行下面操作

Git 安裝和配置

安裝

切換到 root 用戶(輸入你剛剛重置的密碼就好)

su root

首先需要安裝包的依賴

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install  gcc perl-ExtUtils-MakeMaker

進(jìn)入指定目錄(這里選擇 usr/local/src)選擇最新版本 Git (這里使用 2.34.1)下載并解壓

cd /usr/local/src
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.34.1.tar.gz
tar -zxvf git-2.19.0.tar.gz

解壓出來(lái)的 Git 文件都是源文件鹰溜,我們需要進(jìn)行編譯,進(jìn)入 Git 解壓目錄丁恭,進(jìn)行編譯和安裝, 安裝位置(這里選擇 usr/local/git), 整個(gè)過(guò)程可能需要一定等待......

cd git-2.34.1
make prefix=/usr/local/git all
make prefix=/usr/local/git install

安裝好后曹动,我們需要配置環(huán)境變量,打開(kāi)環(huán)境變量配置文件:

vim /etc/profile

在文件底部添加 Git 安裝目錄信息牲览,給不熟悉 Vim 的同學(xué)快速操作步驟墓陈,按照下面依次按字母就可以了(這個(gè)保姆服務(wù)有沒(méi)有很到位)

G (光標(biāo)快速到文件末尾)

o (添加新空白行并進(jìn)入 Insert 模式)

粘貼下面內(nèi)容

Esc (進(jìn)入 Normal 模式)

:wq(保存并退出)

PATH=$PATH:/usr/local/git/bin
export PATH

刷新環(huán)境變量,使之生效

source /etc/profile

此時(shí) Git 應(yīng)該已經(jīng)安裝完成第献,可以查看 Git 版本號(hào)是否和你指定的版本一樣:

git --version

Git 新用戶與配置

創(chuàng)建 git 用戶和密碼

adduser git
passwd git

將 git 用戶添加到 sudoers 文件中, 同樣給出 Vim 快捷操作

chmod 740 /etc/sudoers
vim /etc/sudoers

/## Allow

這樣可以快速定位到如下位置:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

在下面一行添加 git 用戶內(nèi)容, 保存并退出

git      ALL=(ALL)       ALL

修改回 sudoers 文件權(quán)限

chmod 400 /etc/sudoers

測(cè)試

將上面本地生成的 id_rsa.pub 公鑰內(nèi)容拷貝到遠(yuǎn)端服務(wù)器, 這個(gè)命令會(huì)默認(rèn)在遠(yuǎn)端服務(wù)器 git 用戶主目錄下生成 authorized_keys 文件 (~/.ssh/authorized_keys), 其中 server_ip 為公網(wǎng) IP贡必,不是內(nèi)部 IP,別拷貝錯(cuò)了

ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip

此時(shí)可以通過(guò) ssh 命令(加上 -v 命令庸毫,可以輸出詳細(xì) log)測(cè)試連接

ssh -v git@server_ip

博客網(wǎng)站目錄配置

創(chuàng)建博客網(wǎng)站目錄位置

同樣切換到 root 目錄仔拟,然后為博客網(wǎng)站創(chuàng)建根目錄(這里選擇 /home/hexo

su root
mkdir /home/hexo

賦予 git 用戶權(quán)限

chown git:git -R /home/hexo

自動(dòng)化配置

指定目錄位置(這里選擇 git 用戶主目錄 /home/git)創(chuàng)建一個(gè)名為 blog.gitbare repo

cd /home/git 
git init --bare blog.git

什么是 bare repo,以及 bare repo 的一些高級(jí)使用飒赃,可以看下面這三篇文章利花,下面的一些細(xì)節(jié)只是不做過(guò)多介紹

  1. Git Worktree 大法真香
  2. Git Worktree 高級(jí)使用
  3. 一鍵生成Git Worktree 工作目錄

同樣賦予 git 用戶相應(yīng)權(quán)限

chown git:git -R blog.git

使用自動(dòng)化配置,自然是要用到 Git 的鉤子函數(shù)载佳,這里我們需要 post-receive炒事,在博客 hooks 目錄下新建該文件:

vim blog.git/hooks/post-receive

然后添加如下內(nèi)容(注意目錄匹配),保存并退出:

#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f

最后蔫慧,賦予這個(gè)文件可執(zhí)行權(quán)限

chmod +x /home/git/blog.git/hooks/post-receive

接下來(lái)挠乳,創(chuàng)建個(gè)鏈接,以防后續(xù) deploy 過(guò)程出錯(cuò)

sudo ln -s /usr/local/git/bin/git-receive-pack  /usr/bin/git-receive-pack

至此姑躲,基本的準(zhǔn)備工作就完成了睡扬,接下來(lái)我們需要處理 Nginx 的內(nèi)容

Nginx 安裝和配置

安裝

同樣切換到 root 用戶,然后安裝 nginx肋联,并最終啟動(dòng)

su root
yum install -y nginx
systemctl start nginx.service

這時(shí),在瀏覽器中輸入公網(wǎng) IP 地址刁俭,應(yīng)該可以看到 Nginx 默認(rèn)的歡迎界面

配置

這里配置 Nginx橄仍,將所有 Http 請(qǐng)求都重定向?yàn)?Https 請(qǐng)求,這就需要我們有 SSL 證書牍戚,證書可以在云服務(wù)器上申請(qǐng)侮繁,并下載相應(yīng)的版本(這里選擇 Nginx 證書),下載后解壓如孝,以我的證書為例:

.
├── 6317712_www.dayarch.top.key
└── 6317712_www.dayarch.top.pem

0 directories, 2 files

通過(guò) scp 命令將上述證書拷貝到遠(yuǎn)端服務(wù)器, 正常應(yīng)該將 Nginx 的證書存放在 /etc/nginx/cert 目錄下宪哩,這里選擇存放在 /home/ssl_cert 下(如果目錄不存在,請(qǐng)自行創(chuàng)建)

scp ~/Downloads/6317712_www.dayarch.top_nginx/6317712_www.dayarch.top.key root@server_ip:/home/ssl_cert
scp ~/Downloads/6317712_www.dayarch.top_nginx/6317712_www.dayarch.top.pem root@server_ip:/home/ssl_cert

然后打開(kāi) Nginx 的配置文件進(jìn)行整體配置

server{
    listen 80;
    server_name dayarch.top; # 個(gè)人域名
    rewrite ^(.*)$ https://$server_name$1 permanent; # 重定向
}

server {
    listen 443; 
    server_name dayarch.top;  # 個(gè)人域名
    ssl on; 
    ssl_certificate      /home/ssl_cert/6317712_www.dayarch.top.pem; # .pem 證書
    ssl_certificate_key  /home/ssl_cert/6317712_www.dayarch.top.key; # .key 證書
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers  on;

    location / {
        root   /home/hexo;  # 博客網(wǎng)站主目錄
        index index.php  index.html index.htm; 
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

通過(guò) nginx -t 命令進(jìn)行檢查第晰,一切正常會(huì)輸出如下結(jié)果:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重啟 Nginx 服務(wù)

systemctl restart nginx.service

至此锁孟,所有的準(zhǔn)備工作都做完了彬祖,接下來(lái),我們需要做一些博客配置

本地博客配置修改

我們需要將遠(yuǎn)端服務(wù)器的 Git 倉(cāng)庫(kù)信息配置到 Hexo 站點(diǎn)配置文件(_config.yml)中

deploy:
  - type: git
    repo: git@server_ip:/home/git/blog.git
    branch: master

陸續(xù)執(zhí)行 hexo 的命令進(jìn)行部署

hexo clean
hexo generate
hexo deploy

至此品抽,距離成功储笑,我們只差最后一步

域名解析

登陸到你購(gòu)買域名服務(wù)器(比如我在阿里云),配置域名解析圆恤,將其指向我們服務(wù)器的公網(wǎng)地址:

驗(yàn)證

接下來(lái)突倍,你可以在瀏覽器中輸入域名,進(jìn)行驗(yàn)證盆昙,享受你的成果吧
個(gè)人博客:https://dayarch.top

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末羽历,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子淡喜,更是在濱河造成了極大的恐慌秕磷,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拆火,死亡現(xiàn)場(chǎng)離奇詭異跳夭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)们镜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門币叹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人模狭,你說(shuō)我怎么就攤上這事颈抚。” “怎么了嚼鹉?”我有些...
    開(kāi)封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵贩汉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我锚赤,道長(zhǎng)匹舞,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任线脚,我火速辦了婚禮赐稽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浑侥。我一直安慰自己姊舵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布寓落。 她就那樣靜靜地躺著括丁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伶选。 梳的紋絲不亂的頭發(fā)上史飞,一...
    開(kāi)封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天尖昏,我揣著相機(jī)與錄音,去河邊找鬼祸憋。 笑死会宪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚯窥。 我是一名探鬼主播掸鹅,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拦赠!你這毒婦竟也來(lái)了巍沙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤荷鼠,失蹤者是張志新(化名)和其女友劉穎句携,沒(méi)想到半個(gè)月后喉悴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體烈菌,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蚪拦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牍疏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蠢笋。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鳞陨,靈堂內(nèi)的尸體忽然破棺而出昨寞,到底是詐尸還是另有隱情,我是刑警寧澤厦滤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布援岩,位于F島的核電站,受9級(jí)特大地震影響掏导,放射性物質(zhì)發(fā)生泄漏享怀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一趟咆、第九天 我趴在偏房一處隱蔽的房頂上張望添瓷。 院中可真熱鬧,春花似錦忍啸、人聲如沸仰坦。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至玫霎,卻和暖如春凿滤,著一層夾襖步出監(jiān)牢的瞬間妈橄,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工翁脆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眷蚓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓反番,卻偏偏與公主長(zhǎng)得像沙热,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子罢缸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容