建站教程 部署至服务器

本文将介绍如何将 Hexo 部署至服务器之中。

一、前置工作

1. 博客

具体请看:

建站教程 - LD’s BLOG

2. 服务器

购买服务器,确保 80 端口开放且能够被访问。

这里使用的是 Centos 7.6

二、Git 用户配置

1. 安装 Git

1
yum install git

2. 添加并配置 Git 用户

(1) 添加 Git 用户

1
adduser git

(2) 配置 Git 用户权限

更改 sudoers 文件的权限:

1
chmod 740 /etc/sudoers

编辑 sudoers 文件:

1
vim /etc/sudoers

修改如下,增加 git 行:

还原 sudoers 文件的权限:

1
chmod 400 /etc/sudoers

修改 Git 用户密码:

1
sudo passwd git

在命令行中重复输入两次密码即可。

3. Git 账户测试

在本机的 cmd 中,输入命令如下:

1
ssh -v git@IP地址

输入密码后,如果能够正常访问则代表配置成功。

4. 配置 SSH 免密登录

具体请看:

Linux 远程登录

三、Git 仓库配置

首先应该切换回 root 用户,以下命令均在 root 用户下执行

1. Git 仓库创建

(1) 创建 Git 仓库文件夹

1
mkdir ···/git/repo

(2) 将 Git 仓库文件夹授权给 Git 用户

1
2
chown -R git:git ···/git/repo
chmod -R 755 ···/git/repo

(3) 创建网站文件夹

1
mkdir ···/blog

(4) 将网站文件夹授权给 Git 用户

1
2
chown -R git:git ···/blog
chmod -R 755 ···/blog

(5) 新建 Git 仓库

1
2
cd ···/git/repo
git init --bare blog.git

(6) 创建 Git 钩子

1
vim ···/repo/blog.git/hooks/post-receive

粘贴如下:

1
git --work-tree=···/blog --git-dir=···/git/repo/blog.git checkout -f

(7) 修改 Git 钩子权限

1
2
chown -R git:git ···/git/repo/blog.git/hooks/post-receive
chmod +x ···/git/repo/blog.git/hooks/post-receive

(8) 测试仓库是否创建成功

在本机执行 git clone git@域名:···/git/repo/blog.git ,如果成功克隆下空仓库,则代表仓库创建成功。

2. Hexo 配置

修改 hexo 的 _config.yml 文件,修改如下:

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@IP:···/git/repo/hexo.git
branch: master

3. 推送测试

执行 hexo d,可以在命令行看到推送成功,并且在服务器 ···/blog 文件夹下看到推送上去的文件。

如果无法推送成功,请尝试执行上面的授权命令:

1
2
3
4
5
6
7
8
chown -R git:git ···/git/repo
chmod -R 755 ···/git/repo

chown -R git:git ···/blog
chmod -R 755 ···/blog

chown -R git:git ···/git/repo/blog.git/hooks/post-receive
chmod +x ···/git/repo/blog.git/hooks/post-receive

四、部署

1. 安装 Nginx

1
yum install nginx -y

2. 启动 Nginx

1
nginx

3. 检验是否启动成功

在浏览器中输入 IP 地址或已绑定的域名,出现 Nginx 示例页面则表示部署成功。

4. 配置 Nginx

Nginx 的默认配置文件为 /etc/nginx/nginx.conf,修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
listen [::]:80;
server_name _;
root ···/blog;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

error_page 404 /404.html;
location = /404.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

5. 重启 Nginx

1
nginx -s reload

6. 访问测试

在浏览器中,访问服务器 IP,即可看到推送上去的页面。

五、更多操作

1. 配置 SSL 证书

具体请看:

Linux 配置SSL证书

2. 重定向至主域名

有时候我们希望用户直接访问服务器 IP 时,或访问未配置的域名时,能够自动跳转至主域名,此时便可以配置如下:

在 Nginx 的配置文件中添加配置信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80;
listen [::]:80;
server_name _;

return 301 主域名;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;

ssl_certificate ···/域名_bundle.crt;
ssl_certificate_key ···/域名.key;

return 301 主域名
}