1. 程式人生 > 其它 >hexo 環境變數_Hexo自動部署

hexo 環境變數_Hexo自動部署

技術標籤:hexo 環境變數

前言

最近Git Pages 好像因為被牆的原因導致網速感人,遂決定重新部署個人部落格到阿里雲伺服器,因為菜所以磕磕碰碰 ,記錄下 ,為以後健忘症的我埋下點東西,以後方便查閱。

物料準備

1. 一臺伺服器。(作者使用的是阿里雲伺服器)

2.一臺電腦。(作者使用的是 Mac Pro)

3.帶上耳機開始擼。

什麼是Hexo

Hexo是一個快速、簡潔且高效的部落格框架。

Hexo使用Markdown解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁。

它的官網地址是:https://hexo.io/zh-cn/

搭建本地Hexo環境

安裝Node:

進入Node官網下載安裝,各位小夥伴這個我就不細說了吧。

Npm:

只要你安裝了Node ,那麼 npm 也會安裝好的。

驗證是否安裝成功,開啟終端輸入:

node --versionnpm--version

如果命令列有輸出版本那麼恭喜小夥伴安裝成功,如果輸出了:

commandnotfound:nodecommandnotfound:npm

可能是環境沒變數沒有配置好 或者安裝出了問題,因為這不是本文重點所以請各位小夥伴自行搜尋解決,實在不行可以私聊作者協助解決。

安裝git(mac 系統自帶 git ,所以不需要安裝):

進入Git官網下載安裝,這個我也不細說了。

完成安裝後,進入Hexo官網檢視安裝命令。

npm install hexo-cli -g

意思就是要我們全域性安裝 hexo-cli , 終端執行安裝。

當然你不想全域性安裝 hexo文件也有區域性安裝,具體檢視Hexo文件。

安裝好hexo腳手架之後,我們利用它來初始化一個專案。

hexoinit

等hexo初始化好專案之後,我們使用vscode開啟專案,在根目錄下開啟終端執行:

npm install

安裝好專案的各種依賴之後呢,就可以預覽我們的專案了,執行:

hexo s

到這裡,我們本地的環境已經搭建完畢並且也準備了一個專案。

搭建伺服器環境

作者這裡使用的是阿里雲伺服器,本地ssh 遠端登入到阿里雲伺服器之後,安裝以下軟體:

1.Nginx

2.Git

那麼我們先來安裝 Git:

yum install git 

安裝之後 ,命令 git --version 檢查是否安裝成功。

接下來建立 git 使用者, 注意這裡是建立 系統使用者,名字叫 git ,當然 你也可以取其他的名稱,建立這個使用者主要是用來 實現自動化部署的, 雖然伺服器就只有我一個人使用好像多此一舉,但是裝逼下沒啥大問題。

sudo adduser git 

我們現在建立了一個 git 使用者, 接下來的操作都跟它有關, 但是到目前為止我們先不管它,當然你也可以先跳過這一步驟。

接著往下, 我們的部落格檔案肯定需要有個地方來存放沒毛病吧,作者選擇在/home 目錄下建立存放部落格的目錄,地址為 /home/www/hexo。

mkdir -p /home/www/hexo

安裝Nginx

注:以下步驟都在 伺服器上操作的哦。

準備好這些之後,我們要搞點複雜的東西了,安裝配置nginx:

安裝EPEL 源:

sudo yum install -y epel-release 

更新yum:

sudo yum -y update 

接著安裝 Nginx:

sudo yum install -y nginx

安裝成功後,預設的網站目錄為:/usr/share/nginx/html

預設的配置檔案為:/etc/nginx/nginx.conf

自定義配置檔案目錄為: /etc/nginx/conf.d/

如果你的伺服器打開了防火牆,你需要執行下面的命令,開啟80和443埠。

sudo firewall-cmd --permanent --zone=public --add-service=httpsudo firewall-cmd --permanent --zone=public --add-service=httpssudo firewall-cmd --reload

啟動Nginx:

systemctl start nginx

開機啟動Nginx:

systemctl enable nginx

校驗Nginx是否安裝成功,你可以開啟你的公網地址進行訪問,看看能否訪問到nginx的預設網頁,如果不行 ,抱歉 ,自行搜下解決辦法 或者聯絡作者協助安裝。

配置Nginx

作者還配置了https , 所以這裡再講一下如何配置免費的 https 。

安裝Https免費證書(以阿里雲域名為例)

一鍵安裝acme.sh:

curlhttps://get.acme.sh|sh# 安裝echo 'alias acme.sh=~/.acme.sh/acme.sh' >> ~/.bashrc # 環境變數source~/.bashrc# 更新生效配置

生成Https證書:

export Ali_Key="**********"  # 在阿里雲 AccessKey 管理頁面獲取 exportAli_Secret="**********"# 在阿里雲 AccessKey 管理頁面獲取acme.sh--issue--dnsdns_ali-ddomain#domain是你的域名,沒有d的話使用公網ip就可以

關於 Ali_key和Ali_Secret 的獲取:

點選阿里雲後臺,右上角使用者頭像,選單中選擇accesskeys。

檢視AccessKey ID 和 Access Key Secret,即對應上面的Ali_Key 和 Ali_Secret。

domain 對應該賬戶下購買的阿里雲域名。

拷貝證書到nginx:

mkdir-p/etc/nginx/ssl#先建立ssl資料夾用來存放https的 key 等檔案#domain是你的域名沒有的話使用ip 也可以acme.sh --install-cert -d domain \--key-file       /etc/nginx/ssl/domain.key  \--fullchain-file /etc/nginx/ssl/domain.cer \--reloadcmd     "service nginx force-reload"

https證書拷貝是否成功 , 可以進入 /etc/nginx/ssl 資料夾 檢視是否有檔案存在 。

目前https證書在 60 天以後會自動更新, 你無需任何操作. 今後有可能會縮短這個時間, 不過都是自動的, 你不用關心.

接著刪除或者註釋/etc/nginx/nginx.conf中的server部分程式碼。

然後在/etc/nginx/conf.d 建立自定義配置檔案default.conf,寫入以下內容:

server {    listen 80;    listen 443 ssl;server_namechalicelee.xinwww.chalicelee.xin;#改成你自己的域名    location / {root/home/www/hexo;# 如果你的存放地址跟我一致則不需要改動        index  index.html index.htm;    }    ssl on;ssl_certificate/etc/nginx/ssl/chalicelee.xin.cer;#https的cer檔案ssl_certificate_key/etc/nginx/ssl/chalicelee.xin.key;#https的 key 檔案    ssl_session_timeout  5m;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;    ssl_prefer_server_ciphers  on;    error_page 497  https://$host$uri?$args; # 強制http跳轉到https}

至此 , Nginx 配置完畢,接下來我們要部署我們的hexo 部落格了。

配置 git 使用者

還記得前面我們建立了一個系統使用者 git 吧 ,接下來我們要配置下它:

修改git使用者的許可權:

chmod 740 /etc/sudoers

然後開啟檔案 :/etc/sudoers, 增加 git 使用者 。

修改後記得把許可權改回來哦。

chmod 400 /etc/sudoers

設定git使用者密碼(可選)

sudo passwd git

然後在終端輸入你的密碼。

至此完成了 Git 使用者的建立,接下來我們向 Git 使用者新增公鑰,就像配置 Github 那樣。

配置 ssh 公鑰

我們拉取程式碼的時候有配置過倉庫的ssh 實現免密碼登入即可拉取倉庫程式碼的經歷吧,這一步其實是一樣的原理。

總體思路:

1. 先在你本地生成金鑰對 。

2.然後把生成的公鑰上傳到伺服器。

3.把上傳的公鑰內容 copy 到authorized_keys 檔案中。

接下來我們開始吧。

本地生成金鑰對

各位小夥伴注意:這一步操作是在本地 進行的哦。

本地開啟你的終端, 輸入命令:

cd ~ # 進入根目錄cd.ssh#進入.ssh目錄ssh-keygen # 生成金鑰對

相信如果有配置過ssh的同學 ,都應該會有 .ssh 目錄存在 ,它是個隱藏目錄 ,所以想要發現它 ,必須 加入 ls -a。

如果你發現你沒有這個目錄,也別緊張 ,新建.ssh目錄就好了。

金鑰對生成之後 為私鑰設定許可權:

chmod 700 ~/.sshchmod 600 ~/.ssh/id_rsa

至此 ,金鑰對生成完畢。

上傳公鑰至伺服器

各位小夥伴注意:這一步是在伺服器 終端操作的。

mac 可以使用 scp 命令 上傳伺服器,各位小夥伴實在覺得這一步有點麻煩,那麼可以試一下本地開啟.ssh目錄下的id_rsa.pub檔案 , 把它的內容 copy 過來,然後 阿里雲遠端登入到伺服器,然後 切換到 git 使用者。

su git # 切換到git 使用者cd~# 進入根目錄mkdir.ssh# 如果沒有這個資料夾則建立 如果有則忽略這個命令

建立好 .ssh 資料夾後,進入到這個資料夾 , 建立authorized_keys檔案 ,並把 剛剛你copy的公鑰內容貼上進去儲存。

然後修改檔案許可權:

chmod 600 ~/.ssh/authorized_keyschmod700~/.ssh

重啟伺服器,然後本地試下 ssh 連線是否能夠成功。

ssh -v [email protected](你的公網 IP)

注意:因為作者 是使用了 git名稱 ,所以這裡連線的時候也是 git ,假如你的是別的名稱, 應該換成對應的。

如果上述操作失敗,那麼各位小夥伴就要根據對應的作業系統來把 本地生成的公鑰 上傳到 伺服器 然後在伺服器copy公鑰的內容到authorized_keys檔案內。

但是講道理應該是可以成功的。

哈哈,感覺很不負責任的話。

好了,至此 如果你能夠通過 ssh 本地連線遠端的 git 使用者了 , 那麼服務端公鑰的配置也結束了。

伺服器配置git倉庫

各位小夥伴注意,以下操作為伺服器操作 , 並且不是 root 使用者 而是 git 使用者哦。

通過前面的步驟,我們已經可以通過本地 ssh 連線到我們的伺服器 git 使用者, 那麼接著我們使用git使用者配置我們的git倉庫吧。(好怪,有點後悔隨大眾 取名 為 git 了。)


登入伺服器,進行操作:

cd ~ # 進入根目錄gitinit--barehexo.git#初始化git裸倉庫

詳細說一下使用 --bare 引數的含義,使用 --bare 引數初始化的倉庫,我們一般稱之為裸倉庫, 因為這樣建立的倉庫並不包含 工作區 , 也就是說,我們並不能在這個目錄下執行我們一般使用的 Git 命令。

接著我們 建立並 寫入 post-receive 鉤子檔案:

vi ~/hexo.git/hooks/post-receive

寫入內容如下:

git --work-tree=/home/www/hexo --git-dir=/home/git/hexo.git checkout -f

注意 檔案的地址要保持一致哦。

授予鉤子檔案可執行許可權。

chmod +x ~/hexo.git/hooks/post-receivecd ~sudo chmod -R 777 /home/www/hexo

重啟伺服器例項。

至此,我們就完成了服務端的配置

專案中的配置

喲吼,配置接近尾聲 , 不激動, 慢慢來。

注意:這一步驟的所有操作都在本地剛剛我們初始化的 專案中。

開啟我們剛剛初始化的專案,然後 開啟hexo 的 配置檔案:_config.yml:

# Deployment## 修改 這個欄位 repo 是你的 伺服器 存放目錄deploy:  type: 'git'  repo: '[email protected]:/home/git/hexo.git'  branch: 'master'

哦 ,除了這裡之外 ,還需要配置 url 欄位:

# URL##填寫你的域名 或者 公網 ipurl: http://chalicelee.xin

Hexo 自動部署

以上步驟完成 ,我們就來測試下是否成功部署,開啟我們初始化的專案,根目錄開啟終端,輸入命令:

hexo new 文章名稱

這樣我們的source資料夾下的 _posts 資料夾下會自動生成 文章名稱.md 。

我們隨便寫點東西吧。

寫完之後 ,我們終端執行命令:

hexoclhexo ghexo d

一個命令一個命令執行後 ,我們開啟我們的域名或者ip ,看看能否訪問到我們初始化的部落格頁面, 看看我們新增的文章是否有顯示吧。

如果有, 恭喜你, 自動部署已經成功,之後我們寫文章 ,就可以直接在本地寫完之後,通過上述三個 hexo 命令 ,就可以釋出到我們的伺服器上了。

配置hexo 主題

預設的主題好像不太喜歡。

沒關係 ,我們可以換一個, 開啟hexo 官網, 找到主題, 直接選擇一個自己喜歡的點選進入github ,然後下載下來在放到我們的 themes 目錄下,然後配置下_config.yml:

# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme:fluid

更多的主題配置 你可以檢視你所下載的主題文件, 或者 去 hexo 文件檢視配置。

總結

上述配置看起來複雜其實還算是很簡單的,整體流程下來也沒有遇到什麼坑,但是有一點疑惑的是 nginx 配置代理後 ,網頁開啟url 後 會多了個 /? 的問題,不知道怎麼回事,懂的大佬請賜教。