之前的Hexo博客放在Github上,速度太慢了,在腾讯云上买了台服务器,将博客放到上面,本节主要阐述Nginx服务端部署+Nginx优化+HTTPS部署。
个人网站部署预览:https://light-city.club/
可以点击阅读原文,或者公众号右下角博客。
首先来看一下总图:
分为几个步骤:
本机客户端搭建网上教程很多就不阐述,在服务端主要需要git与nginx,我们下面一一介绍。
nginx可以源码安装,也可以yum直接安装(centos 用yum,ubuntu 用apt-get)。
源码安装
#下载
wget http://nginx.org/download/nginx-1.17.8.tar.gz
#解压
tar -xzf nginx-1.17.8.tar.gz
cd nginx-1.17.8
编译环境
yum update
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
编译安装
#创建用户,用户名为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
紧接着就是配置文件修改:
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静态资源文件目录。
安装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文件并且设置相应的读写与执行权限。
# 切换用户
su git
# 创建目录
mkdir ~/.ssh
# 新建文件
vim ~/.ssh/authorized_keys
然后把之前在客户端设置的SSH Key,复制到authorized_keys文件中,保存后退出。
这样做的目的是以后在客户端hexo d之后就不用输入密码了。
配置文件权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
git用户登录
ssh git@ServerIP
把ServerIP替换为自己的ip就可以直接登录到服务端了。
网站目录
sudo mkdir -p /usr/local/nginx/html/blog
sudo chown -R git:git /usr/local/nginx/html/blog
初始化一个git裸库
su git
cd ~
git init --bare blog.git
配置Hook
vim ~/blog.git/hooks/post-receive
然后在该文件中输入以下内容:
#!/bin/sh
git --work-tree=/usr/local/nginx/html/blog --git-dir=/home/git/blog.git checkout -f
添加权限:
chmod +x ~/blog.git/hooks/post-receive
配置本地_config.yml文件夹
回到本地的机器上,进入你的hexo文件夹(就是你完成hexo init的那个) 找到_config.yml, 修改里面的deploy
deploy:
type: git
repo: git@SERVER:/home/git/blog.git //填上远程主机地址和git仓库路径
branch: master
SERVER改为自己的IP地址即可。
保存后,执行客户端执行下列命令:
hexo clean
hexo g
hexo d
网站便可以访问了:
https://console.qcloud.com/ssl
可以看到是给不同的Server来使用,服务器部署在Nginx中,所以打开Nginx文件夹,你可以看到一个秘钥文件一个crt文件。
将nginx目录下的所有文件上传到云服务器的/usr/local/nginx/cert
目录下,cert目录是自己创建的。
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访问了,哈哈~
在静态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;