Hexo博客部署到騰訊云服務器全過程

          2024-2-3 / 0 評論 / 2013 閱讀

          Hexo博客部署到騰訊云服務器全過程

          背景

          說來也慚愧,博客已經搭建很久了,一直免費的部署在 Coding 和 Github Pages 上,前者遷移到騰訊云 Serverless,導致原有的配置始終有問題,沒時間仔細研究,剛好騰訊服務器有羊毛可以褥,果斷作出遷移,至于選擇騰訊云,是因為當初備案在騰訊云,但是購買域名是在阿里,感覺好擰巴,但是整體互不相關,沒啥影響。

          部署環境

          環境 
          本地環境MacOS Monterey 12.0.1
          服務器環境CentOS Linux release 8.2.2004 (Core)

          本地環境配置

          hexo 本地搭建過程網上太多了,這里不再贅述,這里只是做一點鏈接服務器的準備工作

          生成 Git 密鑰

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

          一路回車,這時你應該可以在 ~/.ssh/ 目錄下看到兩個剛剛生成好的密鑰文件:

          • 公鑰:id_rsa.pub
          • 私鑰:id_rsa

          我們一會需要把公鑰的內容拷貝到服務器上

          服務器環境配置

          服務器非常純凈,什么也沒有,所以我們要一點點安裝我們所需的內容

          • Git
          • Nginx

          強烈建議你重置騰訊云服務器的默認密碼, 再進行下面操作

          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 

          進入指定目錄(這里選擇 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 

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

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

          安裝好后,我們需要配置環境變量,打開環境變量配置文件:

          1. vim /etc/profile 

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

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

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

          粘貼下面內容[]

          Esc (進入 Normal[] 模式)

          :wq(保存并退出)

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

          刷新環境變量,使之生效

          1. source /etc/profile 

          此時 Git 應該已經安裝完成,可以查看 Git 版本號是否和你指定的版本一樣:

          1. git --version 

          Git 新用戶與配置

          創建 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 用戶內容, 保存并退出

          1. git      ALL=(ALL)       ALL 

          修改回 sudoers 文件權限

          1. chmod 400 /etc/sudoers 

          測試

          將上面本地生成的 id_rsa.pub 公鑰內容拷貝到遠端服務器, 這個命令會默認在遠端服務器 git 用戶主目錄下生成 authorized_keys 文件 (~/.ssh/authorized_keys), 其中 server_ip 為公網 IP,不是內部 IP,別拷貝錯了

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

          此時可以通過 ssh 命令(加上 -v 命令,可以輸出詳細 log)測試連接,沒問題就可以進行下一步了

          1. ssh -v git@server_ip 

          博客網站目錄配置

          創建博客網站目錄位置

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

          1. su root 
          2. mkdir /home/hexo 

          賦予 git 用戶權限

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

          自動化配置

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

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

          什么是 bare repo,以及 bare repo 的一些高級使用,可以看下面這三篇文章,下面的一些細節只是不做過多介紹

          • Git Worktree 大法真香
          • Git Worktree 高級使用

          一鍵生成Git Worktree 工作目錄

          同樣賦予 git 用戶相應權限

          1. chown git:git -R blog.git 

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

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

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

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

          最后,賦予這個文件可執行權限

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

          接下來,創建個鏈接,以防后續 deploy 過程出錯

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

          至此,基本的準備工作就完成了,接下來我們需要處理 Nginx 的內容

          Nginx 安裝和配置

          安裝

          同樣切換到 root 用戶,然后安裝 nginx,并最終啟動

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

          這時,在瀏覽器中輸入公網 IP 地址,應該可以看到 Nginx 默認的歡迎界面

          配置

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

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

          通過 scp 命令將上述證書拷貝到遠端服務器, 正常應該將 Nginx 的證書存放在 /etc/nginx/cert 目錄下,這里選擇存放在 /home/ssl_cert 下(如果目錄不存在,請自行創建)

          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 

          然后打開 Nginx 的配置文件進行整體配置

          1. server{ 
          2.     listen 80; 
          3.     server_name dayarch.top; # 個人域名 
          4.     rewrite ^(.*)$ https://$server_name$1 permanent; # 重定向 
          5.  
          6. server { 
          7.     listen 443;  
          8.     server_name dayarch.top;  # 個人域名 
          9.     ssl on;  
          10.     ssl_certificate      /home/ssl_cert/6317712_www.dayarch.top.pem; # .pem 證書 
          11.     ssl_certificate_key  /home/ssl_cert/6317712_www.dayarch.top.key; # .key 證書 
          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;  # 博客網站主目錄 
          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.     } 

          通過 nginx -t 命令進行檢查,一切正常會輸出如下結果:

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

          重啟 Nginx 服務

          1. systemctl restart nginx.service 

          至此,所有的準備工作都做完了,接下來,我們需要做一些博客配置

          本地博客配置修改

          我們需要將遠端服務器的 Git 倉庫信息配置到 Hexo 站點配置文件(_config.yml)中

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

          陸續執行 hexo 的命令進行部署

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

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

          域名解析

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

          Hexo博客部署到騰訊云服務器全過程

          驗證 

          接下來,你可以在瀏覽器中輸入域名,進行驗證,享受你的成果吧!

          評論一下?

          OωO
          取消
          主站蜘蛛池模板: 久久4k岛国高清一区二区| 色视频综合无码一区二区三区| 日韩免费一区二区三区| 亚洲国产精品成人一区| 精品国产一区AV天美传媒| 国产一区二区在线看| 国产A∨国片精品一区二区| 免费看AV毛片一区二区三区| 91精品国产一区| 国产精品免费一区二区三区四区| 性色av闺蜜一区二区三区| 亚洲一区二区电影| 国产探花在线精品一区二区| 天天爽夜夜爽人人爽一区二区| 中文字幕一区视频| 无码国产精品一区二区免费vr | 少妇特黄A一区二区三区| 亚洲一区二区三区无码影院| 波多野结衣电影区一区二区三区 | 伊人色综合视频一区二区三区| 亚洲av综合av一区| 国产精品伦一区二区三级视频| 国产一区二区精品尤物| 国产亚洲一区二区在线观看| 国产一区二区三区91| 国产一区二区免费视频| 久久久精品人妻一区二区三区蜜桃 | 中文字幕精品一区二区日本| 无码AV中文一区二区三区| 无码人妻AⅤ一区二区三区 | 日本精品高清一区二区2021| 一本一道波多野结衣一区| 人妻少妇精品视频三区二区一区| 亚洲精品伦理熟女国产一区二区 | 精品福利一区二区三区免费视频| 91video国产一区| 尤物精品视频一区二区三区| 国产成人一区二区三区精品久久| 一区二区三区视频免费| 91精品一区国产高清在线| 无码人妻精品一区二区三区夜夜嗨|