資安

阿里雲服務器如何搭建Hexo個人博客?

1. 博客的架構

先搞明白Hexo博客從搭建到自動發佈的架構,才能更好的理解我們每一步進行的操作。

不然只跟著步驟過了一遍,卻不知道為什麼這麼做。

首先看這張架構圖:

image.png

整個流程就是本地將 *.md 渲染成靜態文件,然後Git推送到服務器的repository,服務器再通過 git-hooks 同步網站根目錄。

2. 整個搭建流程

前提條件:阿里雲服務器

第一部分: 服務器環境搭建,包括安裝 GitNginx配置 、創建 git 用戶 。

第二部分: 本地Hexo初始化, 包括安裝 NodeJShexo-cli, 生成本地靜態網站

第三部分: 使用Git自動化部署發佈博客

3. 服務器環境搭建

3-1.安裝Git和NodeJS (CentOS 環境)

yum install git

安裝NodeJS

curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

NodeJS 安裝可以參考: Linux安裝NodeJS

3-2. 創建git用戶

adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下內容

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

在下面添加一行

git ALL=(ALL) ALL

保存退出後改回權限

chmod 400 /etc/sudoers

隨後設置Git用戶的密碼,

#需要root權限
sudo passwd git

切換至git用戶,創建 ~/.ssh 文件夾和 ~/.ssh/authorized_keys 文件,並賦予相應的權限

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

然後將電腦中執行 cat ~/.ssh/id_rsa.pub | pbcopy ,將公鑰複製粘貼到authorized_keys

chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh

然後就可以執行ssh 命令測試是否可以免密登錄

ssh -v git@SERVER

至此,Git用戶添加完成

3-3. Nginx安裝和配置

我是用的是lnmp 一鍵安裝包,nginx安裝教程一大堆,就不再敘述。主要看nginx配置。
找到nginx的配置文件,修改配置如下:

server
{
listen 80;
#listen [::]:80;
server_name www.seekbetter.me seekbetter.me;
index index.html index.htm index.php default.html default.htm default.php;
#這裡要改成網站的根目錄
root  /path/to/www;  

include other.conf;
#error_page   404   /404.html;
location ~ .*\.(ico|gif|jpg|jpeg|png|bmp|swf)$
{
    access_log   off;
    expires      1d;
}

location ~ .*\.(js|css|txt|xml)?$
{
    access_log   off;
    expires      12h;
}

location / {
    try_files $uri $uri/ =404;
}

access_log  /home/wwwlogs/blog.log  access;

}

4. 本地Hexo程序

4-1:初始化Hexo博客

首先要安裝 hexo-cli,安裝hexo-cli 需要 root 權限,使用 sudo 運行

sudo npm install -g hexo-cli

然後初始化Hexo程序

cd ~/Documents/code
hexo init blog

等執行成功以後安裝兩個插件, hexo-deployer-githexo-server ,這倆插件的作用分別是使用Git自動部署,和本地簡單的服務器。

hexo-deployer-git幫助文檔

hexo-server幫助文檔

cd blog
npm install hexo-deployer-git --save
npm install hero-server

4-2. 生成自己的第一篇文章 hello world !

使用 hexo new <文章名稱> 來新建文章,該命令會成成一個 .md文件放置在 sources/_posts文件夾。

hexo new "hello Hexo"
vim sources/_posts/hello-hexo.md

編輯完畢以後, 使用hexo g.md文件渲染成靜態文件,然後啟動hexo-server

hexo g
hexo server

現在便可以打開瀏覽器訪問 來查看我們的博客了!

5. 自動化部署

5-1:服務器上建立git裸庫

創建一個裸倉庫,裸倉庫就是隻保存git信息的Repository, 首先切換到git用戶確保git用戶擁有倉庫所有權

一定要加 --bare,這樣才是一個裸庫。

su git
cd ~
git init --bare blog.git

5-2. 使用 git-hooks 同步網站根目錄

在這裡我們使用的是 post-receive這個鉤子,當git有收發的時候就會調用這個鉤子。 在 ~/blog.git 裸庫的 hooks文件夾中,

新建post-receive文件。

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

!/bin/sh

git --work-tree=/path/to/www --git-dir=~/blog.git checkout -f

保存後,要賦予這個文件可執行權限

chmod +x post-receive

5-3. 配置_config.yml,完成自動化部署

然後打開 _config.yml, 找到 deploy

deploy:
type: git
repo: git&#64;SERVER:/home/git/blog.git    //&lt;repository url&gt;
branch: master            //這裡填寫分支   [branch]
message: 提交的信息         //自定義提交信息 (默認為 Site updated: {<!-- -->{ now(&#39;YYYY-MM-DD HH:mm:ss&#39;) }})

保存後,嘗試將我們剛才寫的”hello hexo”部署到服務器

hexo clean
hexo generate --deploy

訪問服務器地址,就可以看到我們寫的文章”Hello hexo”,以後寫文章只需要:

hexo new "Blog article name"
···寫文章
hexo clean && hexo generate --deploy

博客就更新咯!~

雲服務器ECS地址:阿里雲·雲小站

Leave a Reply

Your email address will not be published. Required fields are marked *