这部分的内容比较多,因此将分成三部分书写。该部分首先介绍云服务器的配置、本地如何向云服务器进行部署以及如何配置自己的云服务器。

首先这里先来简述一下整体流程。

  1. Hexo 云服务器部署(三):拥有一台服务器 --> 申请注册域名 --> 申请免费ssl安全证书 --> Nginx 配置 ssl --> 网站 https 访问成功
  2. Hexo 云服务器 部署(一):Centos 安装 Nginx --> 网站 HTTP 访问成功
  3. Hexo 云服务器 部署(二):本地部署操作

Nginx 安装及配置

因为我们要将该服务器作为 Web 服务器,因此需要选择一个代理服务。这里我们选择的是主流的 Nginx 。

安装

首先需要安装 nginx,为避免权限问题,我们这里首先切换到 root 用户。

# 切换用户
sudo su
# nginx 下载(以下命令取决于你的操作系统和管理工具)
apt-get install nginx
yum install -y nginx

安装完成后,我们需要启动 nginx 服务。

# nginx 启动,以下命令均可
systemctl start nginx
systemctl enable nginx

service start nginx

构建博客根目录

这里你可以选择你喜欢的地方,这里我就选择 /home/www/website 了,建立方法如下:

cd /home
mkdir www
cd www
mkdir website

配置 nginx 路由

在完成根目录的建立之后,我们还需要配置 nginx 服务器,使我们访问时可以指向这个根目录,这里修改配置文件 nginx.conf 该文件位于路径 /etc/nginx 目录下。

# 进入目录
cd /etc/nginx

在这里修改 nginx 文件就可以啦,但是网上说最好不要修改原本的 nginx.conf 文件,因此这里可以使用 include 功能就可以,该方法可以在有的新的修改加入时直接使用 include 就不需要重新一一修改了。

具体方法如下,首先新建一个文件夹,并书写 config 文件,最后在 nginx.conf 中引入即可。

# 进入目录
cd /etc/nginx
mdkir vhost
cd vhost

使用 vim 编辑器新建并书写文件 blog.conf 。

server {
listen 80;
server_name test.site;
location / {
default_type text/html;
root /home/www/website;
index index.html index.php index.htm;
try_files $uri $uri/ /index.html;
}
}

其中,listen代表监听 80 端口。root是博客的根目录,页面存放的地址。server_name是服务器名称,填域名test.top,将域名和博客的页面根目录绑定,**此外 try_files 比较重要,由于可能你使用的 hexo 主题的路由写的不够完善,他可能会解决你个别页面刷新后找不到的问题,具体参考四种解决Nginx出现403 forbidden 报错的方法。**这里为了使用户访问 www.test.top 也能正常访问,我们可以再新建一个 wwwblog.conf 文件,并只修改其中的 server_name 即可;

书写完毕后,为了使之生效,我们将其引入到 nginx.conf 即可。

安装 NodeJs

这里参考本系列第一篇文章即可。

Git 安装及配置

这里我们使用 git 作为仓库管理,让我们本地的内容同步到我们云服务器上的 git 仓库,从而实现部署。

Git 安装

这里参考本系列第一篇文件即可。

Git 用户配置

为了方便我们的部署,我们可以配置一个名为 git 的用户,专门用于本地向服务器进行部署。

# 添加用户
adduser git
# 修改用户权限
chmod 740 /etc/sudoers
# 编辑文件
vim /etc/sudoers

接着在以下位置添加如下内容 git ALL=(ALL)ALL

添加完毕后,我们保存并退出,并使用命令 chmod 400 /etc/sudoers 将文件权限修改回去。下一步就是更改 git 用户的密码。

# 修改 git 密码
sudo passwd git

配置 ssh

切换到 git 用户,并创建 .ssh 文件夹。

# 切换 git 用户
su git
cd ~
mkdir .ssh
cd .ssh

接下来配置相关的公钥,其中相关操作直接按回车。

# 生成公钥文件
ssh-keygen

此时在该目录下会生成两个文件,分别是 id_rsa 和 id_rsa.pub,其中 id_rsa.pub 是公钥文件,我们将其复制一份,并修改文件权限。

# 复制文件
cp id_rsa.pub authorized_keys
# 修改权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

在服务器配置完成后,我们需要在我们本地生成 ssh 密钥,我这里介绍 windows 系统下的操作( Linux 及 Mac 应该和以上方法相同),在 CMD 输入指令 ssh-keygen -t rsa 此时会在此电脑的用户文件夹下生成密钥。文件夹中生成下图中框选的三个文件,接着将 id_rsa.pub 中的内容添加到服务器上 authorized_keys 文件的末尾。

可以将文件内容直接复制过去,也可以使用 Xftp 或者 vscode 传输到服务器,在使用指令 cat id_rsa.pub >> ~/.ssh/authorized_keys 添加进去。

完成上述步骤后,我们在本地使用 ssh 连接服务器进行测试。

ssh -v git@云服务器的公网IP

当不用密码也可以连接成功,说明配置成功,以后每次更新部署时,就不需要输入密码了。

Git 仓库创建

为了方便本地部署到云服务器,我们使用 Git 作为同步工具。

# 首先使用 git 用户,前往用户目录(/home/git)
cd ~
# 创建仓库(添加 --bare)
git init --bare blog.git
# 修改钩子文件
vi ~/blog.git/hooks/post-receive

我们向钩子文件中添加以下内容,目的是将 git 仓库中的文件同步更新到我们 nginx 的目录当中。

git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f

接着保存并退出,授予文件执行权限。

chmod +x ~/blog.git/hooks/post-receive

到此,整个服务器端操作完成。