hexo博客的服务端部署及构建
0.导语
之前的Hexo博客放在Github上,速度太慢了,在腾讯云上买了台服务器,将博客放到上面,本节主要阐述Nginx服务端部署 Nginx优化 HTTPS部署。
个人网站部署预览:https://light-city.club/
可以点击阅读原文,或者公众号右下角博客。
1.总图
首先来看一下总图:
分为几个步骤:
- 一般大多数人在自己的电脑上部署好hexo博客,这便是上述的hexo客户端
- hexo部署的时候会先通过hexo g生成html文件到public文件夹下,最后hexo d部署到某个git服务器
- 这里是将hexo d部署到我们自己的服务器上,那便是在自己的服务器上构建git仓库。
- 远程git仓库通过hook,监听到有新的push,这个文件夹又会同步到nginx配置好的环境
- 访客就能通过访问我们的nginx服务器,访问我们的文章。
2.服务端
本机客户端搭建网上教程很多就不阐述,在服务端主要需要git与nginx,我们下面一一介绍。
2.1 nginx
nginx可以源码安装,也可以yum直接安装(centos 用yum,ubuntu 用apt-get)。
代码语言:javascript复制源码安装
#下载
wget http://nginx.org/download/nginx-1.17.8.tar.gz
#解压
tar -xzf nginx-1.17.8.tar.gz
cd nginx-1.17.8
代码语言:javascript复制编译环境
yum update
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
代码语言:javascript复制编译安装
#创建用户,用户名为git
adduser git
#设置密码
passwd git
#配置
./configure
--user=git
--group=git
--prefix=/usr/local/nginx
--with-http_ssl_module
--with-http_stub_status_module
--with-http_realip_module
--with-threads
#编译
make
#安装
make install
紧接着就是配置文件修改:
代码语言:javascript复制server {
listen 80;
server_name light-city.club;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/local/nginx/html/blog;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html/blog;
}
}
主要是修改server_name与root,server_name修改为域名,没有域名就不用修改了,root就是blog静态资源文件目录。
2.2 git
代码语言:javascript复制安装git与nodejs
yum install git
yum install nodejs
前面已经创建了git用户与设置密码,这里就直接使用。
sudo用户组
把git用户添加到sudo用户组中 输入以下代码sudo vi /etc/sudoers
,打开sudoers文件,输入:/root
进行搜索,搜索到代码行root ALL=(ALL) ALL
,然后在这一行下添加以下代码git ALL=(ALL) ALL
。输入完毕之后,按wq!
强制保存退出vi。
ssh公钥
切换到git用户,添加SSH Key文件并且设置相应的读写与执行权限。
代码语言:javascript复制# 切换用户
su git
# 创建目录
mkdir ~/.ssh
# 新建文件
vim ~/.ssh/authorized_keys
然后把之前在客户端设置的SSH Key,复制到authorized_keys文件中,保存后退出。
这样做的目的是以后在客户端hexo d之后就不用输入密码了。
代码语言:javascript复制配置文件权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
代码语言:javascript复制git用户登录
ssh git@ServerIP
把ServerIP替换为自己的ip就可以直接登录到服务端了。
代码语言:javascript复制网站目录
sudo mkdir -p /usr/local/nginx/html/blog
sudo chown -R git:git /usr/local/nginx/html/blog
代码语言:javascript复制初始化一个git裸库
su git
cd ~
git init --bare blog.git
代码语言:javascript复制配置Hook
vim ~/blog.git/hooks/post-receive
然后在该文件中输入以下内容:
代码语言:javascript复制#!/bin/sh
git --work-tree=/usr/local/nginx/html/blog --git-dir=/home/git/blog.git checkout -f
添加权限:
代码语言:javascript复制chmod x ~/blog.git/hooks/post-receive
3.客户端
配置本地_config.yml文件夹
回到本地的机器上,进入你的hexo文件夹(就是你完成hexo init的那个) 找到_config.yml, 修改里面的deploy
代码语言:javascript复制deploy:
type: git
repo: git@SERVER:/home/git/blog.git //填上远程主机地址和git仓库路径
branch: master
SERVER改为自己的IP地址即可。
保存后,执行客户端执行下列命令:
代码语言:javascript复制hexo clean
hexo g
hexo d
网站便可以访问了:
4.配置HTTPS
- 申请一个SSL证书,因为我的博客部署在腾讯云上,所以是去腾讯云页面上申请的 申请链接
https://console.zijiebao.com/ssl
- 点击下载,然后就解压缩,获得以下几个文件夹。
可以看到是给不同的Server来使用,服务器部署在Nginx中,所以打开Nginx文件夹,你可以看到一个秘钥文件一个crt文件。
- 上传
将nginx目录下的所有文件上传到云服务器的/usr/local/nginx/cert
目录下,cert目录是自己创建的。
- nginx配置
server {
listen 443 ssl;
server_name _;
ssl_certificate /usr/local/nginx/cert/1_light-city.club_bundle.crt;
ssl_certificate_key /usr/local/nginx/cert/2_light-city.club.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /usr/local/nginx/html/blog;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
可以直接使用我的配置,把上述的路径文件改了就行。
最后看到域名有个锁头,这下http访问便可以直接跳转到https访问了,哈哈~
5.nginx优化
在静态blog中,Nginx可以做图片压缩优化,那么配置如下,开启gzip。
下面是与server同层次,在http{}
里面。
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_disable "MSIE [1-6].";
gzip_vary on;