Hexo | 如何将博客部署在云服务器

Hexo | 如何将博客部署在云服务器

之前简单介绍了将 Hexo 博客部署在代码托管平台的方法,这一篇介绍一下如何把博客建在自己购买的服务器上。

准备工作

  1. 域名,可以在任何一个地方购买
  2. 腾讯云服务器,1G1C1M的最基础配置即可

部署步骤

登陆云服务器

Linux/Mac OS X 系统的电脑可通过密码登陆云服务器:

  1. 打开 SSH 客户端(Mac可使用系统自带的终端)
  2. 输入 ssh -q -l @User_Name -p 22 @Your_IP_Address
  3. 输入 CVM 实例密码进行登录(CVM 实例密码可以在服务器关机时进行修改)

服务器环境准备

以 Ubuntu 16.04 LTS 系统为例,这一步主要是在服务器上搭建 Git 和 Nginx 环境,Git 用来部署静态网站内容,Nginx 用来做代理。

Git

首先,使用 apt 包管理工具更新本地包。更新完成后,下载并安装Git:

sudo apt update
sudo apt install git

完毕后查看版本信息来验证是否正确安装 Git,如果出现版本信息那就安装正确了:

git --version

Nginx

类似的,我们通过以下面的命令安装 Nginx:

sudo apt update
sudo apt install nginx

博客自动发布

下面我们要配置博客的 Git 环境,让我们在本地执行 hexo d 的时候直接将静态网站资源上传到云服务器上:

静态网站文件目录

新建一个文件夹用于存放我们本地编译生产的静态文件,并修改权限:

mkdir /home/hexoBlog/
chown -R $USER:$USER /home/hexoBlog/
chmod -R 755 /home/hexoBlog/

服务器设置

首先我们创建一个名为 hexoBlog 的裸仓库(bare repo),然后修改目录的所有权和用户权限:

mkdir /home/git/
chown -R $USER:$USER /home/git/
chmod -R 755 /home/git/

随后执行如下命令创建一个裸仓库:

cd /home/git/
git init --bare hexoBlog.git

然后,创建一个新的 git 钩子文件 post-receive,用于自动部署:

vim /home/git/hexoBlog.git/hooks/post-receive

按 i 键编辑,添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件):

#!/bin/bash
git --work-tree=/home/hexoBlog --git-dir=/home/git/hexoBlog.git checkout -f

然后,按 Esc 键退出编辑模式,输入:wq 保存退出。

修改文件权限,使得其可执行:

chmod +x /home/git/hexoBlog.git/hooks/post-receive

本地 Hexo 设置

在 Hexo 的根目录 _config.yml 文件中添加部署:

deploy:
type: git
repository:
cvm: 服务器用户名@服务器IP地址:/home/git/hexoBlog
branch: master

这样博客自动发布的环境就配置好了。

服务器 Nginx 配置

启动 Nginx 服务

首先启动 Nginx 服务:

service nginx start

启动服务后,我们测试一下是否正常:

wget http://127.0.0.1

在浏览器中打开购买的服务器数字ip地址,如果有 Nginx 相关字样,就说明服务正常啦!

配置 Nginx 根目录

换句话说,就是如何通过 Nginx 找到我们上传到云服务器的静态文件,修改默认配置文件:

sudo vim /etc/nginx/sites-available/default

找到如下代码并修改 rootserver_name

server {
listen 80 default_server;
listen [::]:80 default_server;

root /home/hexoBlog;

server_name 你购买的域名;

......
}

绑定域名

将域名A解析至你购买的服务器ip地址:

现在就算大功告成啦,在本地执行一次 hexo d 后,试试在浏览器中打开你购买的域名,有没有显示你的博客首页!

强制重定向至https

使用代码托管平台的 Pages 服务时,我们可以经常发现一个选项,就是强制使用https访问:

如果我们想在自己的服务器上也这么配置,要怎么做呢?

购买ssl证书

我们可以通过很多地方购买免费ssl证书,购买后我们根据指示进行域名所有权的验证(推荐使用 DNS 验证,只需要配置一个 TXT 解析即可),验证完成后即可下载 Nginx 版本的证书。证书包含两个文件:

  1. .pem文件:证书文件
  2. .key文件:证书的私钥文件

上传ssl证书

在本地的终端,将ssl证书上传到服务器:

sudo scp a.pem 用户名@服务器地址:/home/ssl/a.pem
sudo scp a.key 用户名@服务器地址:/home/ssl/a.key

修改 Nginx 默认设置

修改之前提到的 Nginx 默认设置文件:

sudo vim /etc/nginx/sites-available/default

根据自己的实际情况监听443端口,添加ssl证书相关内容;并将80端口的http访问重定向到https访问:

server {

listen 443;

root /home/hexoBlog;

index index.html index.htm index.nginx-debian.html;

server_name 购买的域名;
ssl on;

ssl_certificate /home/ssl/a.pem;
ssl_certificate_key /home/ssl/a.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location / {
try_files $uri $uri/ =404;
}
}

server {
listen 80;
server_name susreal.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}

以上,就完成了强制通过HTTPS访问的设置。

参考文章

  1. 如何在Ubuntu系统上安装Git
  2. 如何在CVM上安装Nginx
  3. Hexo 教程:Hexo 博客部署到腾讯云教程
  4. Nginx/Tengine服务器安装SSL证书
  0

评论

📧 邮箱: 留下邮箱,别人回复后会收到通知喔
😉 头像: 自动同步邮箱对应的「Gravatar」头像
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×