10分钟搭建PostgreSQL+wordpress博客,真香!

wordpress一直是世界上最流行最好的博客系统,它一直使用MySQL作为存储数据库。最近两三年PostgreSQL这么火爆,能不能用PGSQL作为wordpress的存储数据库呢?本文描述在10分钟左右便能使用nginx+wordpress+postgresql搭建自己的博客系统的方法。

我一直维护一个自己的博客,使用的服务器是阿里云最最低配的ECS,价格公道,稳定可靠。博客程序用的某款“开源”笔记。由于这款开源笔记系统使用mongodb作为存储数据库。大约两年前开始,一些无聊的所谓黑客就开始无差别的攻击暴漏在外网上的mongodb,对数据所有者进行敲诈勒索。对于一个没有太多内容的博客,这也不是什么大事,我的解决办法简单粗暴:每天备份一次,保留7天备份,万一mongodb被黑了,重新恢复一份出来。但是前段时间因为一些原因,很多天没有写过博客,想去发一篇新的文章时发现数据库又一次被黑了,更悲剧的是,被黑已经超过7天了,所有备份集都是被黑后的内容了。

几年的笔记已经无法恢复了,只能重新搭建了。以前使用的那款开源笔记,也有很多缺陷,既然重新搭建,就开始重新选型吧。几年前的wordpress对markdown的支持太差,最近调研一番,发现wordpress对markdown的支持也非常完善了,毕竟世界最流行最顶级的博客系统不是盖的。apache太重,用nginx吧,轻松安装轻松配置。wordpress使用MySQL作为存储数据库,也可以通过wordpress丰富的插件,轻松的使用其它类型的数据库作为存储。当然,这么简单的系统,使用什么数据库并不重要。既然最近两三年PostgreSQL这么火爆,能不能用PGSQL作为wordpress的存储数据库呢?谷歌了一把,原来很早以前就有了pg4wp,太好了,开始重新部署吧。

安装PostgreSQL

安装pgsql太简单了,我的阿里云ECS是CentOS7,访问pgsql官方网站 ( https://www.postgresql.org/download/linux/redhat/ ),目前pgsql的稳定版本已经是PG11了,先安装PG11的repo rpm,然后分别安装PostgreSQL的Client Packages和Server Packages,缺省的安装位置在/user/pgsql-11目录,为了方便使用,我在/opt/pgsql创建了一个软连接,对于以后的升级维护管理比较方便:

上述命令中,创建postgres用户和用户组的步骤其实并不是必须的,yum安装会自行创建,但使用PostgreSQL就是这么自由任性。安装过程大约1分钟左右,很快就结束了,接下来创建数据目录,备份目录,归档目录,日常的维护脚本目录,并且将pgsql目录的属主修改为postgres用户:

接下来,实例化数据目录,并启动数据库:

配置PGSQL的环境变量

通过上述简单的几步操作,PostgreSQL数据库已经启动了。为了一劳永逸,还需要做一些易用和性能方面的调校。

上述参数配置之后需要对数据库进行一次重启,这大概是这套数据库此生唯一的一次重启了:

接下来创建wordpress数据库以及连接数据库的用户

安装配置nginx,php,php-fpm

安装nginx

较新版本的wordpress对php最低版本要求5.6,先安装php和php-fpm:

配置nginx

启动php、nginx

安装配置pg4wp和wordpress

安装wordpress很简单,可以参考wordpress界著名的5分安装。使用PostgreSQL作为wordpress的数据源,需要pg4wp插件,这是github上的一个开源项目。,DB连接层的代码几乎很少改动,尽管pg4wp有较长一段时间没更新了,运行也没有什么问题。下面就是简单的安装步骤:

完成pg4wp的部署,现在的wordpress已经可以支持PostgreSQL作为它的数据源了。接下来开始wordpress的数据源配置,先创建wp-config.php文件,通常将wp-config-simple.php拷贝一份直接编辑即可。DB_USERDB_PASSWORD这些配置就不用说了,注意以下DB_HOST,由于我们对PG的默认端口修改为了1921,所以DB_HOST配置为localhost:1921即可。

wordpress部署成功之后,还有一个上传的小问题需要解决一下。在wp-content目录中创建uploads目录,这个目录应该配置写入权限给运行php的用户,否则将无法上传文件而报Is its parent directory writable by the server 错误,通过ps命令,看到运行php的用户是apache,修改uploads目录的属主为apache用户即可:

到这里,wordpress,nginx,postgresql都已经安装和配置完成,运行wordpress的安装脚本开始配置自己的博客吧!

到这里还需要让wordpress支持markdown,在 wp-content/plugins 目录中下载WP-Editor插件。

另外,可以去阿里云申请免费的证书,在nginx启用https,并且在nginx中把http重定向到https,这下就基本上齐活了。

PostgreSQL从不会让人失望,Enjoy it!