本地Hexo部分

安装Node.js

  • Windows直接下载安装最新版
  • Ubuntu16.04安装最新版Nodejs :
    https://github.com/nodesource/distributions#rpm
    curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
    sudo apt-get install -y nodejs    

    安装Git

    下载安装最新版

    安装Hexo

    sudo npm install -g hexo

    生成本地静态网站

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

VPS部分

安装配置Git

创建git用户

adduser git

添加root权限

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用户的密码

sudo passwd git

设置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_IP

安装Nginx:

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

自动化部署

建立git裸库

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

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

使用Git Hooks同步网页

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

#!/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

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配置文件中添加或修改:

 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转换问题

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