前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >个人hexo博客的服务端部署及构建

个人hexo博客的服务端部署及构建

作者头像
公众号guangcity
发布2020-02-24 12:23:14
1K0
发布2020-02-24 12:23:14
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

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

安装git与nodejs

代码语言:javascript
复制
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

git用户登录

代码语言:javascript
复制
ssh git@ServerIP

把ServerIP替换为自己的ip就可以直接登录到服务端了。

网站目录

代码语言:javascript
复制
sudo mkdir -p /usr/local/nginx/html/blog
sudo chown -R git:git /usr/local/nginx/html/blog

初始化一个git裸库

代码语言:javascript
复制
su git
cd ~
git init --bare blog.git

配置Hook

代码语言:javascript
复制
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.qcloud.com/ssl

  • 点击下载,然后就解压缩,获得以下几个文件夹。

可以看到是给不同的Server来使用,服务器部署在Nginx中,所以打开Nginx文件夹,你可以看到一个秘钥文件一个crt文件。

  • 上传

将nginx目录下的所有文件上传到云服务器的/usr/local/nginx/cert目录下,cert目录是自己创建的。

  • nginx配置
代码语言:javascript
复制
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{}里面。

代码语言:javascript
复制
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;
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • hexo博客的服务端部署及构建
    • 0.导语
      • 1.总图
        • 2.服务端
          • 2.1 nginx
        • 2.2 git
          • 3.客户端
            • 4.配置HTTPS
              • 5.nginx优化
              相关产品与服务
              SSL 证书
              腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档