前言
原博客是使用Halo搭建,Halo太吃内存,导致VPS不堪重负,遂决定迁移博客到Hexo。
所有要做的步骤
1.在Windows上安装git
2.在Windows上安装Node.js(Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)
3.在Windows上安装Hexo
4.配置Hexo
4.在VPS上安装git和nginx
5.在VPS上配置git和nginx
6.在Windows上利用git同步本地博客到VPS
7.访问网站
在Windows上安装git
在 https://git-scm.com/download/win 下载并安装
镜像站 https://registry.npmmirror.com/binary.html?path=git-for-windows/
在Windows上安装Node.js
在 https://nodejs.org/en/download/prebuilt-installer 下载
镜像站 https://registry.npmmirror.com/binary.html?path=node/
在Windows上安装Hexo
1 2 3 4
| $ npm install -g hexo-cli $ hexo init blog $ cd blog $ npm install
|
配置Hexo
在根目录下的_config.yml修改配置
如果有主题的话,一般在_config.<主题名>.yml文件内配置
详见 https://hexo.io/zh-cn/docs/configuration
关于主题 https://hexo.io/zh-cn/docs/themes
Hexo的简单命令
1 2 3 4 5 6 7
| hexo init <目录> hexo new <标题> hexo generate hexo server hexo clean hexo deploy
|
更多命令参见https://hexo.io/zh-cn/docs/commands
在VPS上安装git
1 2
| apt-get install -y git yum install -y git
|
在VPS上安装nginx
1 2 3 4 5
| apt-get install -y nginx #ubuntu yum install -y nginx #centos systemctl enable nginx systemctl start nginx systemctl status nginx
|
配置VPS上的git
1 2 3 4 5 6 7 8 9 10
| adduser git
chmod 740 /etc/sudoers vim /etc/sudoers --------------------------
root ALL=(ALL:ALL) ALL ---------------------------
chmod 440 /etc/sudoers
|
禁用git用户的shell权限
1 2 3
| vim /etc/passwd 把git:x:1001:1001:***:/home/git:/bin/bash 修改为 git:x:1001:1001:***:/home/git:/usr/bin/git-shell
|
初始化 git 仓库
1 2 3 4
| cd /home/git //切换到git用户目录 mkdir blog.git //创建git仓库文件夹,以blog.git为例 cd blog.git //进入仓库目录 git init --bare //使用--bare参数初始化为裸仓库,这样创建的仓库不包含工作区
|
配置 SSH-Key
1 2 3 4
| cd /home/git mkdir .ssh cd .ssh vim authorized_keys
|
修改目录权限
1 2 3
| chown -R git.git /home/git/blog.git/ chown -R git.git /home/git/.ssh/ chown -R git.git /var/www/html/
|
配置 nginx(可选)
1 2 3
| cd /etc/nginx/sites-available cp default default.bak vim default
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| default --------------------------------------- server { listen 80 default; root /var/www/html; server_name *.com, www.*.com; access_log /var/log/nginx/blog_access.log; error_log /var/log/nginx/blog_error.log; error_page 404 = /404.html;
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ { root /var/www/html; access_log off; expires 1d; }
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ { root /var/www/html; access_log off; expires 10m; }
location / { root /var/www/html; if (-f $request_filename) { rewrite ^/(.*)$ /$1 break; } }
location /nginx_status { stub_status on; access_log off; } }
|
1 2 3
| systemctl restart nginx systemctl enable nginx systemctl status nginx
|
配置 Git Hooks 自动化
创建 post-receive 文件
1 2
| cd /home/git/blog.git/hooks vim post-receive
|
1 2 3 4 5 6 7 8 9 10
| post-receive ---------------------------- GIT_REPO=/home/git/blog.git TMP_GIT_CLONE=/tmp/blog PUBLIC_WWW=/var/www/html
rm -rf ${TMP_GIT_CLONE} git clone $GIT_REPO $TMP_GIT_CLONE rm -rf ${PUBLIC_WWW}/* cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
|
在Windows上尝试免密登录VPS
修改本地博客根目录下的_config.yml
文件
1 2 3 4 5 6
|
deploy: type: git repo: git@VPS IP:/~/blog.git branch: master
|
同步到VPS
1 2 3 4 5
| $ hexo g $ hexo clean $ hexo s $ hexo d
|