关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

VPS部署Hexo的详细教程

发布时间:2020-11-21 14:45:38

本地Hexo部分

安装Node.js

安装Git

下载安装最新版

安装Hexo

sudo npm install -g hexo

生成本地静态网站

  1. 进入要创建网页文件夹
    hexo init
  2. 更换主题
    cd themes
    git clone 需要下载的主题地址
  3. 配置主题
    具体见主题

VPS部分

安装配置Git

创建git用户

1
adduser git

添加root权限

1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容

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


在下面添加一行
git ALL=(ALL) ALL
保存退出后改回权限
chmod 400 /etc/sudoers

设置Git用户的密码

sudo passwd git

设置Git免密登录

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

1
2
3
4
5
6
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_IP

安装Nginx:

  • 在线安装:apt-get install nginx
  • 源码编译安装:可以安装最新版
    nginx -t
    nginx配置

自动化部署

建立git裸库

裸仓库就是只保存git信息的Repository

1
2
3
su git
cd ~
git init --bare blog.git


使用Git Hooks同步网页

配置Git Hooks
使用 post-receive钩子,当git有收发的时候就会调用此钩子
在裸库的 hooks文件夹中,新建post-receive文件
vim ~/blog.git/hooks/post-receive

1
2
3
4
5
6
7
8
#!/bin/sh
GIT_REPO=/home/git/hexo.git    # git仓库
TMP_GIT_CLONE=/tmp/hexo
PUBLIC_WWW=/var/www/html/blog  # 网站目录
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}


保存后,赋予可执行权限
chmod +x post-receive

配置_config.yml

打开 _config.yml, 找到 deploy

1
2
3
4
5
deploy:
   type: git
   repo: git@SERVER:/home/git/blog.git    //<repository url>
   branch: master            //这里填写分支   [branch]
   message: 提交的信息         //自定义提交信息 (默认为 Site updated: {{ now('YYYY-MM-DD HH:mm:ss') }})


测试

hexo g -d

https配置

在Nginx配置文件中添加或修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 listen 443 ssl default_server;      
#监听端口:443
listen [::]:443 ssl default_server;  

ssl on;                  
#开启ssl
ssl_certificate    xxx/xxx.pem;  
#证书位置
ssl_certificate_key    xxx/xxx.key;  
#私钥位置
ssl_session_cache    shared:SSL:1m;  
#SSL session 缓存区大小
ssl_session_timeout  5m;
ssl_ciphers  HIGH:!aNULL:!MD5;  
#密码加密方式
ssl_prefer_server_ciphers  on;  
#依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码


问题:

按照官方配置后local_search无法使用:

文章含有特殊字符
打开开发者工具,转到网络模块
直接访问search.xml,解析错误,
查看返回包(response),找到文件中特殊字符的所在位置

git 换行符LF与CRLF转换问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Git设置
git config --global core.autocrlf false
git config --global core.safecrlf true

#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换
git config --global core.autocrlf input

#提交检出均不转换
git config --global core.autocrlf false

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn



/template/Home/Zkeys/PC/Static