这部分的内容比较多,因此将分成三部分书写。该部分首先介绍云服务器的配置、本地如何向云服务器进行部署以及如何配置自己的云服务器。
首先这里先来简述一下整体流程。
- Hexo 云服务器部署(三):拥有一台服务器 --> 申请注册域名 --> 申请免费ssl安全证书 --> Nginx 配置 ssl --> 网站 https 访问成功
- Hexo 云服务器 部署(一):Centos 安装 Nginx --> 网站 HTTP 访问成功
- Hexo 云服务器 部署(二):本地部署操作
Nginx 安装及配置
因为我们要将该服务器作为 Web 服务器,因此需要选择一个代理服务。这里我们选择的是主流的 Nginx 。
安装
首先需要安装 nginx,为避免权限问题,我们这里首先切换到 root 用户。
# 切换用户 |
安装完成后,我们需要启动 nginx 服务。
# nginx 启动,以下命令均可 |
构建博客根目录
这里你可以选择你喜欢的地方,这里我就选择 /home/www/website
了,建立方法如下:
cd /home |
配置 nginx 路由
在完成根目录的建立之后,我们还需要配置 nginx 服务器,使我们访问时可以指向这个根目录,这里修改配置文件 nginx.conf
该文件位于路径 /etc/nginx
目录下。
# 进入目录 |
在这里修改 nginx 文件就可以啦,但是网上说最好不要修改原本的 nginx.conf 文件,因此这里可以使用 include 功能就可以,该方法可以在有的新的修改加入时直接使用 include 就不需要重新一一修改了。
具体方法如下,首先新建一个文件夹,并书写 config 文件,最后在 nginx.conf 中引入即可。
# 进入目录 |
使用 vim 编辑器新建并书写文件 blog.conf 。
server { |
其中,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 的用户,专门用于本地向服务器进行部署。
# 添加用户 |
接着在以下位置添加如下内容 git ALL=(ALL)ALL
。
添加完毕后,我们保存并退出,并使用命令 chmod 400 /etc/sudoers
将文件权限修改回去。下一步就是更改 git 用户的密码。
# 修改 git 密码 |
配置 ssh
切换到 git 用户,并创建 .ssh 文件夹。
# 切换 git 用户 |
接下来配置相关的公钥,其中相关操作直接按回车。
# 生成公钥文件 |
此时在该目录下会生成两个文件,分别是 id_rsa 和 id_rsa.pub,其中 id_rsa.pub 是公钥文件,我们将其复制一份,并修改文件权限。
# 复制文件 |
在服务器配置完成后,我们需要在我们本地生成 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) |
我们向钩子文件中添加以下内容,目的是将 git 仓库中的文件同步更新到我们 nginx 的目录当中。
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f |
接着保存并退出,授予文件执行权限。
chmod +x ~/blog.git/hooks/post-receive |
到此,整个服务器端操作完成。