Hexo博客部署到騰訊云服務(wù)器全過(guò)程

2024-2-3 / 0 評(píng)論 / 1184 閱讀

Hexo博客部署到騰訊云服務(wù)器全過(guò)程

背景

說(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 密鑰

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

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

  • 公鑰:id_rsa.pub
  • 私鑰: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 用戶(輸入你剛剛重置的密碼就好)

  1. su root 

首先需要安裝包的依賴

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

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

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

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

  1. cd git-2.34.1 
  2. make prefix=/usr/local/git all 
  3. make prefix=/usr/local/git install 

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

  1. vim /etc/profile 

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

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

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

粘貼下面內(nèi)容[]

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

:wq(保存并退出)

  1. PATH=$PATH:/usr/local/git/bin 
  2. export PATH 

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

  1. source /etc/profile 

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

  1. git --version 

Git 新用戶與配置

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

  1. adduser git 
  2. passwd git 

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

  1. chmod 740 /etc/sudoers 
  2. vim /etc/sudoers 

/## Allow

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

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

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

  1. git      ALL=(ALL)       ALL 

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

  1. 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ò)了

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

此時(shí)可以通過(guò) ssh 命令(加上 -v 命令,可以輸出詳細(xì) log)測(cè)試連接,沒(méi)問(wèn)題就可以進(jìn)行下一步了

  1. ssh -v git@server_ip 

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

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

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

  1. su root 
  2. mkdir /home/hexo 

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

  1. chown git:git -R /home/hexo 

自動(dòng)化配置

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

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

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

  • Git Worktree 大法真香
  • Git Worktree 高級(jí)使用

一鍵生成Git Worktree 工作目錄

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

  1. chown git:git -R blog.git 

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

  1. vim blog.git/hooks/post-receive 

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

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

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

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

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

  1. 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)

  1. su root 
  2. yum install -y nginx 
  3. systemctl start nginx.service 

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

配置

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

  1. ├── 6317712_www.dayarch.top.key 
  2. └── 6317712_www.dayarch.top.pem 
  3.  
  4. 0 directories, 2 files 

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

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

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

  1. server{ 
  2.     listen 80; 
  3.     server_name dayarch.top; # 個(gè)人域名 
  4.     rewrite ^(.*)$ https://$server_name$1 permanent; # 重定向 
  5.  
  6. server { 
  7.     listen 443;  
  8.     server_name dayarch.top;  # 個(gè)人域名 
  9.     ssl on;  
  10.     ssl_certificate      /home/ssl_cert/6317712_www.dayarch.top.pem; # .pem 證書(shū) 
  11.     ssl_certificate_key  /home/ssl_cert/6317712_www.dayarch.top.key; # .key 證書(shū) 
  12.     ssl_session_cache    shared:SSL:1m; 
  13.     ssl_session_timeout  5m; 
  14.     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
  15.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  16.     ssl_prefer_server_ciphers  on
  17.  
  18.     location / { 
  19.         root   /home/hexo;  # 博客網(wǎng)站主目錄 
  20.         index index.php  index.html index.htm;  
  21.     } 
  22.  
  23.     error_page  404              /404.html; 
  24.     location = /404.html { 
  25.         root   /usr/share/nginx/html; 
  26.     } 
  27.  
  28.     error_page   500 502 503 504  /50x.html; 
  29.     location = /50x.html { 
  30.         root   /usr/share/nginx/html; 
  31.     } 

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

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

重啟 Nginx 服務(wù)

  1. systemctl restart nginx.service 

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

本地博客配置修改

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

  1. deploy: 
  2.   - type: git 
  3.     repo: git@server_ip:/home/git/blog.git 
  4.     branch: master 

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

  1. hexo clean 
  2. hexo generate 
  3. hexo deploy 

至此,距離成功,我們只差最后一步

域名解析

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

Hexo博客部署到騰訊云服務(wù)器全過(guò)程

驗(yàn)證 

接下來(lái),你可以在瀏覽器中輸入域名,進(jìn)行驗(yàn)證,享受你的成果吧!

評(píng)論一下?

OωO
取消
主站蜘蛛池模板: 精品欧洲av无码一区二区三区| 人妻无码中文字幕| 国产丝袜无码一区二区视频| 亚洲GV天堂GV无码男同| 国产精品午夜无码av体验区| 日韩人妻无码一区二区三区久久99| 伊人久久综合精品无码AV专区| 色爱无码AV综合区| 无码专区HEYZO色欲AV| 国产精品无码a∨精品| 最新无码人妻在线不卡| 国产爆乳无码视频在线观看| 久久亚洲AV无码精品色午夜| gogo少妇无码肉肉视频| 白嫩少妇激情无码| 亚洲av无码一区二区三区不卡| 无码AV一区二区三区无码| 亚洲中文无码a∨在线观看| 超清无码一区二区三区| 少妇久久久久久人妻无码| 无码GOGO大胆啪啪艺术| 中文有无人妻vs无码人妻激烈| 无遮掩无码h成人av动漫| 无码中文字幕日韩专区视频| 国产啪亚洲国产精品无码| 国产AV无码专区亚洲AV麻豆丫| 亚洲爆乳大丰满无码专区| 激情无码人妻又粗又大中国人| 亚洲无码在线播放| 国产丝袜无码一区二区三区视频 | 亚洲中文字幕不卡无码| 国产精品无码专区在线播放| 无码一区二区三区中文字幕| 西西444www无码大胆| 亚洲精品无码你懂的| 亚洲欧洲无码一区二区三区| 免费无码肉片在线观看| 国产精品爽爽V在线观看无码| 久久亚洲精品成人无码| 色综合久久久无码中文字幕波多| 中日韩精品无码一区二区三区|