关于

服务器的部署

  1. 下载和配置服务端的NodeJs
1
2
3
4
5
sudo apt remove nodejs
sudo chown -R leux:leux /opt/
wget https://nodejs.org/download/release/v10.15.0/node-v10.15.0-linux-x64.tar.gz
tar -xzvf node-v10.15.0-linux-x64.tar.gz
mv node-v10.15.0-linux-x64 /opt/nodejs
  1. 下载安装服务端的Hexo
1
2
3
4
5
export PATH=$PATH:/opt/nodejs/bin/
npm install hexo-cli -g
hexo init /opt/nodejs/www
cd /opt/nodejs/www
npm install
  1. 下载安装服务端的Hexo主题Next
1
2
3
wget https://github.com/theme-next/hexo-theme-next/archive/v6.0.0.tar.gz
tar -xzvf v6.0.0.tar.gz
mv hexo-theme-next-6.0.0 /opt/nodejs/www/themes/next
  1. 配置和启用服务端的Hexo主题Next
1
2
3
4
wget https://leux.cn/dl/hexo_config.diff
wget https://leux.cn/dl/next_config.diff
patch /opt/nodejs/www/_config.yml hexo_config.diff
patch /opt/nodejs/www/themes/next/_config.yml next_config.diff
  1. 打开hexo server测试无误后静态化博客试试
1
2
3
cd /opt/nodejs/www/
hexo server -p 8080
hexo generate
  1. 在服务器上搭建Git仓库来存放文章
1
2
3
4
5
6
7
# 以在/opt/doc.git目录下创建仓库为例
# 注意:提交后Git服务器上的源文件内容不会改变,提交后改变内容的在版本库中
sudo apt install git
mkdir /opt/doc.git
cd /opt/doc.git
git init --bare ./ # 在当前目录下创建共享空仓库
chown -R git:git /opt/doc.git # 将目录所有者改为你,否则会没有权限访问
  1. 设置自动部署网站(即每次push成功后都会执行静态化到WEB服务器目录下)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vi /opt/doc.git/hooks/post-receive && chmod +x /opt/doc.git/hooks/post-receive

# 在git服务器收到代码推送后(push完成之后)执行的脚本内容如下:

#!/bin/sh
# 先检出push成功后最新的文档到doc目录下
git --work-tree=/opt/nodejs/www/source/_posts --git-dir=/opt/doc.git checkout -f

# 设置相关变量
WEB_DIR=/opt/www
TAR_DIR=/opt/nodejs/www
HEXO_DIR=/opt/nodejs/bin

# 先清理删除旧的文件,然后再将静态化生成后的新文件移动到WEB服务器目录
cd $TAR_DIR
$HEXO_DIR/hexo clean
$HEXO_DIR/hexo generate
rm -rf $WEB_DIR/404 $WEB_DIR/about $WEB_DIR/archives $WEB_DIR/categories $WEB_DIR/css $WEB_DIR/doc $WEB_DIR/images $WEB_DIR/js $WEB_DIR/lib $WEB_DIR/page $WEB_DIR/tags $WEB_DIR/index.html
mv $TAR_DIR/public/* $WEB_DIR/

客户端的部署

  1. 在客户端上使用仓库
1
2
3
4
5
6
7
8
cd /opt/nodejs/www/source/_posts
git clone ssh://name@IP:Port/opt/doc.git ./ # 克隆空仓库到当前目录下
git config core.autocrlf false # 提交和检出代码时均不进行换行符转换
git config core.filemode false # 避免NTFS文件权限变更引起的修改
git config core.quotepath false # 显示中文路径
git add . # 复制文件到仓库后执行,将文件提交到暂存区
git commit -m "Initial" # 提交到版本库
git push origin master # 推送到远端仓库
  1. 指定密钥登陆
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 需要密钥免密执行操作的,请将远端主机的私钥放到本地主机以下路径
mv publickey C:\Users\git\.ssh\id_rsa # Win32系统用户
mv publickey /home/git/.ssh/id_rsa # Linux系统用户

# 如果用户没有权限读取密钥,那么每次还是要输入密码的
sudo chown -R git:git /home/git/.ssh/
sudo chown -R git:git /opt/doc.git

# 默认SSH只会读取id_rsa,有多个私钥的话需要将其添加到SSH agent
ssh-add ~/.ssh/id_rsa_me

# 或者修改 ~/.ssh/ssh_config 添加如下内容:
Host github.com
User git
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/.ssh/github

End