在openSUSE上搭建hexo博客并启用SSL的科学姿势
1. 前言
最近看见 ChicagoVPS在搞活动,没忍住又剁了一个,xen架构的Windows Server 2016,当然,用了一会儿之后,还是给它格掉装了个openSUSE Tumbleweed,毕竟已经习惯了。
闲着也是闲着,一台vps只跑个ss似乎有点浪费,看着硬盘里躺了许久的旧blog存档包,打算重新开始写些东西,就当日常记录用吧。
2. 搭建Hexo博客
之前的旧博客是基于wordpress搭建的,鉴于没有太多有价值的东西,还是让它躺在硬盘里安息吧。
相比起使用了世界上最好的编程语言的wp框架,基于nodejs的hexo轻量了不少,用起来也方便,下面简要记录一下搭建过程。
2.1 openSUSE下环境准备
新装的openSUSE TW Server预装的软件包不多,首先需要手动装一下nodejs和git。(注:目前2020年,最好把nodejs6换成更高版本,例如nodejs12)
1 | sudo zypper in git-core nodejs6 |
2.2 安装hexo并发布
然后使用npm安装hexo主体程序,这里直接用sudo只是为了演示,其实并不友好,推荐先使用官方对于npm的权限说明进行配置。
1 | sudo npm install -g hexo-cli |
下面建立一个blog文件夹用来作为hexo的根目录,这里使用了openSUSE通用的路径,并设置相应的权限。
1 | cd /srv/www/htdocs |
接下来将这个blog文件夹初始化。
1 | hexo init blog |
生成一篇默认的文章。
1 | hexo g |
安装hexo server,启用一下看看是否成功。
1 | npm install hexo-server --save |
默认端口号是4000,为了方便起见,临时关掉了SUSE的防火墙,访问 http://服务器ip:4000
,可以看到hexo博客可以访问了。(注:2020年,openSUSE默认的防火墙已经由SuSEfirewall2变成了firewalld)
1 | sudo systemctl stop SuSEfirewall2 |
3. 添加域名解析
下面开始给blog加个域名,这里使用的是二级域名blog.imoe.cat,直接使用阿里云的DNS,之前已经配置过A记录,只用给二级域名加个CNAME记录就行了。
当然,这里也可以使用CDN之类的服务来操作,优化访问速度。
4. 添加SSL证书
这年头,不用个https都不好意思发自己的链接,奈何囊中羞涩,就选用了Let’s Encrypt的免费证书。其实一些CDN服务商也会提供免费SSL证书,例如CloudFlare,方便起见可以优先考虑使用它。
4.1 配置openSUSE环境
openSUSE新系统下,先把pip装上,不然后面会报错。
1 | sudo zypper in python2-pip |
4.2 使用Let’s Encrypt
然后下载Let’s Encrypt并配置,注意这里要使用root权限,后面按要求输入邮件、域名之类的就可以了,多个域名使用逗号或者空格分开。证书会生成在 /etc/letsencrypt/live/XXX域名/
的目录里,下面步骤会用到。
1 | cd ~/Downloads/ |
(可选)如果域名已经配置过Let’s Encrypt证书,这里就无法通过了,先去配置过的机器上删除掉它。
1 | sudo ./certbot-auto delete |
5. 配置nginx服务器
接下来用nginx作为server,并配置https。
5.1 安装nginx
1 | sudo zypper in nginx |
将80和443端口加入防火墙例外。
1 | sudo emacs /etc/sysconfig/SuSEfirewall2 |
修改FW_SERVICES_EXT_TCP,将80与443端口加入,即 FW_SERVICES_EXT_TCP="80 443"
。
5.2 修改nginx的配置
首先修改默认配置文件,主要是配置线程以及压缩方式之类的,注释掉了server内容,server块另行配置,直接上代码。
1 | sudo emacs /etc/nginx/nginx.conf |
1 | user nginx nginx; |
出于维护的方便性考虑,为blog单独建立一个配置文件,放置server块相关内容。
1 | cd /etc/nginx |
这个配置文件内容如下,可以看出主要内容是将80端口转发到443端口,这样就可以将http访问强制跳转到https了,不过很多CDN服务商会提供这项功能,所以并不一定需要这样写,接下来就是添加了上面步骤生成的ssl证书。
1 | server { |
5.3 启用nginx
先使用nginx -t看看配置文件是否可用,没问题的话就可以启用nginx了。
1 | sudo systemctl enable nginx #开机启用nginx服务 |
6. 结语
至此,博客已经可以正常访问使用了,具体的blog配置可以参考hexo的官方文档,就希望以后不会再咕咕咕了。