【99%环境搭建系列】阿里云服务器配置Hexo博客
本文最后更新于:2023年12月20日 下午
前言
这个环境搭建系列好久没更了,所以趁此机会难得填坑一下。
之前一直白嫖是Github pages来部署自己的博客,然后觉得还是有一个自己的服务器更好一点,还能学习相关知识。所以趁还没回学校,把自己的博客部署到自己的服务器上,毕竟之前购买的域名一直没用上,甚是心痛啊。
这次我是在阿里云上买的服务器,主要是因为之前在阿里云上买的域名,所以这次搭建的过程就用阿里云进行说明。
新建用户
这里以阿里云的服务器来举例。
通常创建好服务器实例后,在重置一下实例的密码,就可以用root用户进行ssh连接了。使用root用户登录后,我这里是新建了一个用户,命令如下:
1 |
|
然后赋予zyx
用户root权限,具体做法是编辑/etc/sudoers
,在root用户下方添加新增的用户名,如下所示。
ssh免密登录
在本地创建密钥,使用命令如下:
1 |
|
然后一直回车,创建一个密钥。因为我是mac系统,生成的密钥文件位置在~/.ssh/id_rsa.pub
然后回到服务器端,创建.ssh
目录(在当前用户的~ 目录下即可),并编辑文件.ssh/authorized_keys
,复制粘贴刚刚在本地创建好的密钥。
1 |
|
配置环境
首先需要安装配置一下开发相关的软件环境了,使用的命令如下[1]:
1 |
|
这里安装完 nginx ,开启 nginx 服务并确认服务状态。
1 |
|
此时访问公网 IP 应该能看到如下的欢迎页:
然后再创建网站目录和远程仓库目录,使用命令如下:
1 |
|
注意上面创建远程仓库的命令,这里加了
--bare
参数,表示创建的是一个裸仓库,含义是这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作。
开放端口
在安装完nginx并启动服务后,在浏览器中直接访问服务器的公网ip是可以看到nginx的欢迎页的。但是在实际操作中却发现,无法访问。后来发现是没有开放端口,所以我们需要在ECS云服务器的控制台中,在”网络与安全“中的”安全组“中,选择对应的安全组,选择”配置规则“,开放80(http)和443(https)端口。最终效果如下所示,此时再访问公网ip,就可以看到nginx的欢迎页的。
SSL证书
在阿里云中,搜索”SSL证书“产品,选购免费的“DV单域名证书”,然后在控制台里创建证书,填上自己购买的域名和相关信息即可。签发成功后,就可以下载证书。
因为之后使用nginx进行配置,所以我这里下载的也就是nginx对应的证书。下载后会得到一个zip压缩包,解压后得到 .key 和 .pem 结尾的两个文件。
在nginx的安装目录(就是nginx.conf所在的目录,不知道的话可以通过nginx -t
来查看配置文件所在目录)下,新建一个 cert 目录,将下载的两个证书文件放到 cert 目录下。
然后修改 nginx.conf 配置文件,添加如下配置[2]:
1 |
|
网站备案
ICP备案
在右上角控制台旁边,有个“ICP备案”按钮,点击这里进行网站的ICP备案,按照相关流程操作即可[3]。备案时间最好在工作日,大概需要一天时间。还有一个注意点是,备案用的服务器拥有时长必须满3个月以上,否则是无法用于网站备案的,也就是说免费申请的服务器是不能拿来做备案的。(白嫖党落泪QAQ)
只有域名ICP备案之后,才能通过域名访问网站,否则只能通过公网ip进行访问。还要记得在域名解析的控制台里,给自己购买的域名添加记录。
注意这里不用通过搜索“网站备案”来找,会把你导向眼花缭乱的云市场,属实没有必要。并且备案成功之后,注意要在自己的网站页面上增加备案的脚注。
公安联网备案
除了工信部的ICP备案,还需要进行公安联网备案,同样按照阿里云的指导文档进行操作即可[4]。注意在选择服务类型时,不要选择”博客网站“,选择”www服务“即可,不然可能又需要等待下次审核审核。
再补充一下,还需要上传安全评估报告,也就是下图的左侧登录入口。其中填报安全评估报告的内容可以参考安全网络报告中的问题及参考解答。
注意一下,公安联网备案是需要本人现场到本地的网警部门审核签字的,所以最好在当地留出充裕的时间。我的一个惨痛教训就是临近开学的时候申请,结果人去学校了,所以就不能在本地这边办理了。
幸运的是北京这边似乎网上办理就可以了。也就是ICP备案和公安联网备案可以是不同省份,但各个地方会有自己的要求。
Hexo站点配置修改
最后修改本地hexo博客所在目录下的站点配置文件,也就是**_config.yml**,填入之前在服务器上创建的git仓库地址。最终执行hexo clean & hexo g & hexo d
命令,就可以将静态文件代码部署到服务器上了,就可以通过域名或者ip进行访问,看到部署好的博客页面。
1 |
|
问题踩坑
最后再说个我后来迁移博客的时候踩的坑,就是上述准备工作就绪后,在本地执行命令hexo d
进行部署,然后访问公网 ip 结果报错 403 Forbidden,这个报错是主要权限配置错误,即 nginx服务器中的目录和文件可能会出现所有者/组的错误,导致访问权限错误,可能的原因就是 nginx 的启动用户和对应目录的用户不一致,我就是犯了这个错,在 nginx.conf
文件配置里的 user
一项配置要改成和博客根目录所属的用户一致。
除此之外,如果发现执行 hexo d
命令后,服务器上的博客根目录下并没有生成博客网站文件,很可能是之前 git 的钩子文件没有加上写权限。
附录:Nginx常用命令
1 |
|