部署Hexo博客

你是一树一树的花开,是燕 在梁间呢喃,——你是爱,是暖, 是希望,你是人间的四月天!

《你是人间的四月天——一句爱的赞颂》,林徽因

# 前言

最开始接触的内容分享形式,应该是从QQ空间开始;后来因为专业学习,接触了CSDN;再后来因为兴趣以及各类公众号的影响,也开辟了自己的公众号,但是都没有坚持很久。至于各类微博更是以关注为主,很少发布文章。CSDN和自己的公众号,内容屈指可数,这么算下来,也只有QQ空间的内容最为丰富,但是心情琐事居多。

技术方面的问题,经常会借助网络查找解决办法,所以接触了不少的技术博客。虽然为我问题的解决提供了帮助,但是也不得不承认,有相当一部分博客存在水分,缺少博主自己的理解和实践,只是从某一个地方复制而来。那个时候,有一种冲动,就是自己要写一篇详细的教程,让迷茫的人不再因为这些无用的信息而浪费时间,更不会因为参考所谓的解决方案,问题越来越多而失去动力。

再后来,看到大牛的博客,大牛的书籍,在分享技术的同时,也在分享自己的心情。我很向往这样的感觉,所以不断地下决心,定计划,开始自己的文字之旅。但是,如上文提到的,也在不断地中止这段旅程。

最近,读了一部小说,几首小诗,感性之情再一次泛滥,所以又想继续我的文字之旅。以前写博客,写公众号的文章,总是特别在意浏览量,在意读者和我的互动,在写文章的时候,也会考虑我的读者究竟喜欢读什么,进而迎合。我觉得有人喜欢我分享的文字,能够从我的分享中受益,特别幸福,但是如果特别在意别人的看法,那我的文字记录迟早又会中止。所以,我希望我这次能够真正面对自己的内心,用文字记录自己的体会,抒发自己的感情。如果能够为你带来良性的作用,我很开心;反之,我也希望你能以一颗理解的心去看待。

欢迎大家通过邮箱和我交流,我会在每天早上的7:00-9:00查阅、回复邮件。

# 准备工作

# 主机

主机就是我们经常提及的服务器,考虑到云服务器都会提供公网IP,可伸缩的硬件配置,所以此处选用云服务器。大家根据自己的需要和经济实力,去相关平台购买相应配置的实例就好。个人感觉某云的全民云计划优惠力度还不错。

如果购买国内的云服务器产品,需要注意主机的位置是在大陆还是港澳台,或者海外。由于国家的相关法规,在大陆提供互联网服务的主机,都需要进行备案,并且对网站提供的服务有一定限制。为了省事,本文选择了某云香港的1核2G节点,三年套餐,既保证了与大陆的连接速度,又免去备案烦恼。

备案相关内容参考阿里云的链接:备案 (opens new window)

# 公网IP

上文已提到,购买云服务器,都会提供公网IP,不过注意,需要勾选相关的选项,一般购买流程中,都会有明确的提示。公网IP是保证服务器相关服务被访问的前提。

# 域名

推荐去口碑较好,规模较大,价格便宜的域名服务商购买域名。在国内域名商处购买域名,应该都需要实名制,不过具体的流程都会由服务商帮助解决,个人只需要上传身份证的扫描件或者照片。

# 域名解析

当域名通过实名制后,就可以将域名与主机的公网IP对应起来,这一步使得我们可以通过自己购买的域名访问主机。用到的服务是DNS域名解析服务。推荐使用DNSPOD的免费域名解析服务,性价比极高。

域名解析配置参考DNSPOD的说明文档:域名解析 (opens new window)

# 操作系统

操作系统一般在购买云服务器的时候就需要选择,个别云服务商不支持Linux和Windows两类系统的互换。作为服务器,推荐使用Linux操作系统,一般占用资源较少,能够提供更稳定、更高效的服务。 安装的操作系统一般只有一个root账户,登录密码是创建实例时输入的密码。考虑到安全性,建议建立一个普通用户,然后授予sudo权限,所有的命令在普通用户账号下执行。

建立普通账户并授予sudo权限的过程:

  • 通过ssh,以root账户登录云服务器: ssh [email protected]
  • 添加普通用户: useradd username
  • 为该用户设置登录密码: passwd username
  • 添加sudoers文件的写权限: chmod u+w /etc/sudoers
  • 编辑sudoers文件: vim /etc/sudoers, 在相关位置添加该用户
  • 移除sudoers文件的写权限: chmod u-w /etc/sudoers

添加普通用户并赋予sudo权限:参考网络资源 (opens new window)

# 项目部署

项目部署中用到的操作系统是CentOS7.3,请根据自己的发行版自行调整部分命令。

# 安装Nginx

添加nginx的官方二进制仓库:vim /etc/yum.repos.d/nginx.repo 文件中输入如下内容: [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 运行:sudo yum install nginx

参考:Nginx官方文档 (opens new window)

# 安装Git

sudo yum install git

# 安装Node.js

获取node.js的安装资源: curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash - 安装node.js: sudo yum install nodejs

参考:Node.js官方文档 (opens new window)

# 安装Hexo

安装Hexo:npm install -g hexo-cli 初始化hexo的项目路径:hexo init [folder] 进入项目文件夹:cd [folder] 安装相关依赖:npm install

# 安装DV类型的免费SSL证书

使用下面的工具安装时,请确保nginx配置了servername。 yum install yum-utils yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional sudo yum install certbot-nginx sudo certbot --nginx 此处如果提示python-requests的错误,请依次执行如下两条语句: pip list 2>/dev/null | grep requests rpm -q python-requests --queryformat '%{VERSION}\n' 如果两条语句输出的版本不一致,使用pip更新其安装的版本: pip install --upgrade --force-reinstall 'requests==2.6.0(第二条语句输出的版本)'

参考:

# 安装NexT主题

进入hexo的项目目录:cd hexo-site 下载next主题文件: git clone https://github.com/iissnan/hexo-theme-next themes/next 修改hexo的配置文件,将主题修改为next。

具体的配置细节,参考如下内容:

# 总结

certbot需要定期更新证书,考虑设置一个定时计划:crontab nginx设置为开机自动启动,降低维护工作量

# 笔记

1.(配置nginx监听的端口为80和443,安装nginx以后,一般会监听80)certbot会自动配置全站https,用户输入网址的时候,如果是http会定向到80,然后通过nginx的自动转发,转到443,如果输入https则直接定向到443

2.npm install hexo-generator-feed --save npm install hexo-generator-searchdb --save 没有save只会将包安装到node_modules,不修改package.json,有save,还会将包添加到package.json中

3.sudo certbot renew

4.scp上传、下载文件: 上传:scp /path/filename username@servername:/path 下载:scp username@servername:/path/filename .