搭建Hexo 個人博客寫作與部署
在本地安裝Hexo框架
任務時間:大概需要三分鐘
安裝git
在安裝過程中選擇將git添加到環境變量(Add to PATH)
通過使用git, hexo可快速將本地的更新內容部署到服務器上的網站中
安裝Hexo
Hexo是基於Node.js的,因此需要先安裝它
可以在這裡下載,同樣需要將它添加到環境變量
隨後通過Node.js提供的包管理器npm安裝Hexo:
打開命令行(cmd 或git bash),輸入命令
npm install -g hexo-cli
隨後輸入hexo version,如果Hexo已被安裝,你將能看到相關的版本號
初始化Hexo
選擇一個你喜歡的地方放置博客文件,在命令行中進入父目錄(通過cd命令)
輸入下列命令將創建一個Hexo博客文件夾
hexo init <起个名字> # 例如 hexo init MyBlog
cd <刚才的名字> # 例如 cd MyBlog
npm install
此時將能看到一個這樣的目錄
.├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
屬於我們博客的本地Hexo環境已經搭建完畢
嘗試寫作與預覽效果
任務時間:大概需要兩分鐘
新建一篇文章
命令行進入我們的博客文件夾,輸入下列命令將新建一篇文章
hexo new <文章名> # 例如 hexo new helloworld
此時你將能夠在博客的public/_posts/ 文件夾下看到所創建的文章(helloworld.md)
用記事本打開它,向其中寫入任意內容
生成個人博客
輸入下列命令即可根據當前所設置的主題、已有的文章生成網頁文件
hexo generate # 或者输入 hexo g
整個個人博客網站即位於public/ 文件夾下
在本地瀏覽個人博客
如果直接使用瀏覽器打開public/index.html 不能顯示正確的樣式,如果希望在本地預覽博客,在命令行中輸入下列命令
hexo server # 或输入 hexo s
此刻可在瀏覽器中輸入127.0.0.1:4000 來預覽博客(默認設置下)
在服務器上部署
任務時間:大概需要十分鐘
安裝git與Nginx
git幫助我們隨時部署博客更新,安裝:
sudo apt-get install git
Nginx將我們的博客網站供互聯網訪問,安裝:
sudo apt-get install nginx
設置Nginx
創建一個文件夾用於存放我們的網站
mkdir -p blog # 在这个例子中的路径是 /home/ubuntu/blog
修改Nginx的設置,將網站的根目錄設置為這個文件夾:
輸入以下命令
sudo nano /etc/nginx/sites-available/default
在其中找到下列內容並修改
...
server {
...
...
root /home/ubuntu/blog; # 将此处设为你所创建的文件夹
index index.html index.htm;
...
...
server_name blog.example.com; # 设置你的域名(托管单个网站时可以不用设置)
...
創建一個Git倉庫
創建一個裸倉庫
git init --bare <名字.git> # 例如 git init --bare blog.git
# 记得blog.git/ 与blog/文件夹的功能不同
創建一個鉤子,使得這個倉庫在接受提交後自動將所有文件放到之前的網頁目錄中去:
nano .../<名字.git>/hooks/post-receive #例如 nano blog.git/hooks/post-receive
向其中寫入以下內容:
git --work-tree=.../<网页文件夹> --git-dir=.../<名字.git> checkout -f
# --work-tree中填Nginx指向的网页文件夹路径 --git-dir填创建的git仓库的路径
# 例如 git --work-tree=/home/ubuntu/blog --git-dir=/home/ubuntu/blog.git checkout -f
需要給這個鉤子添加可執行權限:
chmod +x .../<名字.git>/hooks/post-receive
# 例如 chmod +x /home/ubuntu/hooks/post-receive
到此,我們服務器就已設置完畢了
裸倉庫的意思是只接收推送,而不會在其上工作(通常以.git結尾命名)
推送到服務器
任務時間:大概需要三分鐘
SSH
當我們從本地向服務器的blog.git倉庫推送時,通過SSH公鑰來驗證我們的身份。
因此,需要一對密鑰來進行認證,在這裡生成密鑰(如果已經擁有請跳過生成的步驟):
打開git-bash (該工具包括在MSysGit軟件包中)
ssh-keygen # 随后根据提示输入信息,按回车为默认
默認情況下,它將生成於用戶目錄(C:\User\<你的用戶名>)下的.ssh\文件夾中,名為id_rsa 與id_rsa.pub。
其中id_rsa.pub為公鑰,將它的內容寫到服務器中/home/ubuntu/.ssh/authorized_keys文件夾裡。
請注意:如果有多對公鑰,需要配置一個config文件才能指示使用哪個私鑰進行驗證,它類似下面這樣:
# 位置在....sshconfig
Host blog.styxs.cn
HostName blog.example.cn
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
User ubuntu
推送
安裝Hexo的git部署插件,輸入命令
npm install hexo-deployer-git --save
編輯博客文件夾下的_config.yml文件,設置部署信息
...
deploy:
type: git
repo: 用户名@服务器IP或域名:路径/裸仓库.git
branch: master
...
repo中填寫內容的示例: ubuntu@111.111.111.111:/home/ubuntu/blog.git
在本地預覽網頁無誤後推送到服務器
hexo generator # 生成网页文件
hexo server # 在本地预览
hexo deploy # 推送到服务器
以上就是本地寫作並部署到雲服務器的Hexo博客工作流。