使用hexo並部署到aws上

使用hexo並部署到aws上

看csdn上的一些大牛都在寫自己的博客,自己也想試試,在同事的推薦下使用了 一開始使用了Hexo,把github作爲自己的靜態博客的存放地址,然後和同事一起申請了域名,購買了aws的雲服務,從那以後就使用了一段時間的WordPress。但是講道理,WordPress對MarkDown的支持是在是太爛了,這個週末兩個,重新使用Hexo,並使用git進行靜態文件的提交。實現自動化的web更新。

寫作環境

我使用Hexo的環境是windows,mac的操作也差不多。在完成自己的目標之前也google了一些其他人的blog(在相應的操作前面,我會把參考的blog貼出來)。在這裏我不得不吐槽一下google和baidu的差別了。講道理,要查一些資料還是用google的好。

首先是獲取Hexo 官方文檔 ,通過官方文檔上的說明進行前期工作,從nodejs官網下nodejs,nodejs官網 。我的git是通過安裝visual studio 2015時,讓vs的安裝器幫我安裝的。因此也爲後面的創建自己的公私鑰時,造成了一定的麻煩。因此還是從git官網直接下載和安裝git官網。當這些前期環境準備好之後。在cmd控制檯中通過

npm install -g hexo-cli進行Hexo的安裝。等待Hexo客戶端的安裝完成。完成之後,我的博客內容是放在D盤下的 ,通過cmd控制檯切換到d盤,然後依次輸入如下命令:

hexo init blog
cd blog
npm install

通過這些命令之後,進入blog目錄可以看到如下文件:

blog內容

在該文件路徑下使用cmd控制檯輸入hexo server ,然後打開瀏覽器輸入http://localhost:4000。可以看到如下界面:

初始界面

這個界面是使用默認的landscape主題,接下來的時間是選擇一款自己喜歡的主題,我選擇的是Next主題。主題官網 .我選擇這個主題的原因是這個主題比較簡潔。

通過官方文檔的說明進行一步一步進行操作。就能很快搭建成我這樣子的blog界面了。

我的界面

在配置中的坑

一些坑

  1. 點擊分類頁顯示/Get/categories問題
  2. 點擊標籤頁顯示/Get/tags問題
  3. 點擊關於頁顯示/Get/about 問題

這三個的結局辦法都是類似的,在cmd控制檯中使用hexo new page xxx 其中xxx分別爲categories、tags、about。在source文件下會出現如下的文件夾:

文件夾

在這三個文件夾中分別有一個index.md文件,把分別進行如下設置:

tags:

title: about
date: 2016-09-04 01:24:56
type: "about"
comments: false

categories:

title: categories
date: 2016-09-04 01:17:32
type: "categories"
comments: false

about:

title: about
date: 2016-09-04 01:24:56
type: "about"
comments: false

使用comments:false的原因是我使用了多說評論,在這些頁面中不需要使用多說評論

上雲

在網上搜Hexo的教程都是使用github作爲靜態頁面的展示平臺,但我們爲了追(zhuang)求(bi),準備使用雲主機作爲自己的展示平臺。

購買域名

提供域名購買的服務器商非常多,

  1. 阿里雲鏈接
  2. 騰訊雲鏈接

有很多提供類似的域名購買服務的提供商,隨便選擇一家進行購買就行了。

雲選擇

國內有很多的雲服務提供商,BAT一個都不會錯過。但我不得不說的是阿里雲的雲主機實在是太貴了。我選擇的是亞馬遜的雲主機,現在AWS的雲主機可以免費使用一年。但申請AWS的雲主機需要信用卡驗證。沒有信用卡的朋友可以去某寶上搜AWS基本就能看見aws認證卡之類的東西,8塊錢就能享用一年的雲服務。在整個過程中比較麻煩的是輸入驗證碼階段。不知,是爲什麼提供手機號,第一次驗證都無法通過,第二次要看臉了,如果可以的話還是提供座機號碼進行電話驗證。

一切就緒後就可以登錄aws雲主機了。AWS默認使用私鑰的登錄模式。通過命令ssh -i xxx ec2-user@xxx 第一個xxx是使用AWS給的私鑰文件,第二個xxx爲AWS爲你分配的公網IP。在linux和mac上需要使用chmod 600 xxx進行修改權限。

搭建服務器環境

在雲上使用Hexo有兩種方式。第一種是使用hexo server ,然後用nginx進行反向代理4000端口,還一種是使用 git上傳在本地生成的靜態文件。在這裏我是使用第二種方式。

在登上AWS的虛擬機之後 ,首先要做的是更新軟件環境sudo yum upgrade ,當一切更新完成後,使用sudo yum install nginx 下載並安裝nginx。爲了追求更好的展(zhuang)現(bi),我打算讓自己的網站使用https,我的證書是通過亞數信息的mpki系統申請的TrustAsia證書,這個證書可以免費使用一年。等待證書發下來後。把證書上傳到自己的雲主機上。在nginx的conf.d文件夾下新建一個nginx的配置文件。用於配置自己的hexo靜態頁面訪問服務。

在使用nginx服務之前我們要先把自己的Hexo生成的靜態文件上傳到雲上。在這裏我是參考ZhangFinder’s Blog進行配置的。

本地生成SSH密鑰

  1. 看c盤用戶文檔下是否有.ssh文件夾。如果沒有則需要使用cmd控制檯到用戶目錄下使用mkdir .ssh 進行創建。

  2. 在.ssh 文件上右擊,選擇Git Bash here 打開bash終端。

  3. 輸入ssh-keygen -t rsa -C "xxx" ,xxx自己命名,然後一路回車就把公鑰和私鑰創建完成了。

  4. 配置git(依舊在剛纔的git bash中):

    git config --global user.email "[email protected]"
    git config --global user.name "username"
  5. 配置hexo的 deploy

    在自己的hexo中重新配置一下:

    deploy:
     type: git
     meaage: update
     repo: git@www.hsulei.com:/home/git/blog.git
     branch: master

服務器配置

  1. 使用sudo adduser git進行用戶添加。

  2. 切換到git賬戶下,並進行一些git用戶操作。

    cd ~
    mkdir .ssh && cd .ssh
    touch authorized_keys
    vi authorized_keys

    創建authortized_keys文件的目的是存放剛纔生成的公鑰。

  3. 把剛纔生成的公鑰文件中的內容複製到authorized_keys文件中(公鑰文件是以.pub爲結尾的文件)。當這步完成後,我們可以在自己的客戶端進行ssh [email protected]進行鏈接測試,能鏈接上去就沒有問題。不能鏈接的話。重新仔細操作一遍。

  4. 接下來創建直接的靜態文件存放位置。

    cd /var/www
    sudo mkdir hexo
  5. 創建git倉庫。

    cd ~
    mkdir blog.git && cd blog.git
    git init --bare

  6. 創建git hooks。

    cd ~/blog.git/hooks
    touch post-receive
    vi post-receive
  7. 配置腳本。

    
    
    #!/bin/bash -l 
    
    GIT_REPO=/home/git/blog.git
    TMP_GIT_CLONE=/tmp/blog
    PUBLIC_WWW=/var/www/hexo
    rm -rf ${TMP_GIT_CLONE}
    git clone $GIT_REPO $TMP_GIT_CLONE
    rm -rf ${PUBLIC_WWW}/*
    cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
  8. 修改權限。

    chmod +x post-receive
    sudo chmod 775 -R /var/www/hexo
  9. 進行nginx的配置。

    cd /etc/nginx/conf.d
    sudo vi hsulei.com.conf
  10. 編輯hsulei.com.conf。

   server {
           ssl_session_cache        shared:SSL:10m;
           ssl_session_timeout      60m;

           ssl_session_tickets      on;

           ssl_stapling             on;
           ssl_stapling_verify      on;

           server_tokens off;
           proxy_hide_header X-Powered_By;

           if ($request_method !~ ^(GET|HEAD|POST)$ ) {
              return    444;
           }
                   add_header  Strict-Transport-Security  "max-age=31536000";
           add_header  X-Frame-Options  deny;
           add_header  X-Content-Type-Options  nosniff;

           listen 443 ;
           server_name www.hsulei.com hsulei.com;
           root /var/www/hexo;
           access_log  /var/log/nginx/blog_access.log;
           error_log   /var/log/nginx/blog_error.log;

           ssl on;
           ssl_certificate /etc/nginx/_.hsulei.com/_.hsulei.com.pem;
           ssl_certificate_key /etc/nginx/_.hsulei.com/_.hsulei.com.key;
           ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配
           ssl_ciphers  ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:DES-CBC3-SHA;
           ssl_prefer_server_ciphers   on;
              # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
       #

           location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
               root /var/www/hexo;
               access_log   off;
               expires      1d;
           }
       location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
           root /var/www/hexo;
           access_log   off;
           expires      10m;
       }
       location / {
           root /var/www/hexo;
           if (-f $request_filename) {
               rewrite ^/(.*)$  /$1 break;
           }
       }

   }

   server {
           listen 80;
           server_name www.hsulei.com hsulei.com;

           location / {
                   rewrite ^(.*) https://$host$1 permanent;
           }

很多的ssh配置我是按照jerryqu的 博客進行配置的。jerryqu的博客

  1. 啓動nginx。


    sudo service nignx start

剩下的事情就是在本地使用 hexo ghexo d進行發佈了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章