Press "Enter" to skip to content

WordPress部署踩坑

以前曾经说过要自己开发一个博客服务程序,后来确实做出了一个勉强能用+能看的博客程序,不过所有博文都是以JSON形式存储的、自己胡乱写个Access Token的模块,甚至没有接入数据库,现在想来当初还是太天真……

后来买了一台服务器和几个域名,连着部署了几个服务,想着顺便做个博客,便打算把WordPress也整上来。虽然没学过世界上最好的语言,但是我的目的是用,又不是写XD。

一开始还挺顺利,直到后来无法自动更新博客程序,还看到后台提示PHP版本过低,便觉得先把PHP更新了好。但是包管理器并没提供新版的PHP,我只好自己手动编译。一开始还算顺利,直到见到了未定义mysql_connect()的错误……好吧,毕竟用包管理器自带的PHP也要手动安装php-mysql的包。一顿操作猛如虎后,还是错误……(另注:这手动编译PHP好麻烦orz,什么拓展都需要自己声明写上去,包管理器里的PHP很多拓展都自带了,中途服务器还爆内存了)

后来,发现手动编译版本的PHP要使用MySQL必须要在编译前对configure指定--with-mysqli --with-pdo-mysql --enable-mysqlnd三个选项。(还有很多其他的库需要指定,不止MySQL。我指定库时有一些还要下载开发包,点名批评oniguruma的开发包居然在包管理器默认源里没有,下载源码后安装的也不是开发包/编译安装的话应该本来就不会是开发包吧233)而且自动生成的的配置文件不太一样,要配置一下fpm user和group,以及socket的文件权限也要处理一下,这也无伤大雅……(另注:mysql_connect()错误时竟然会把密码随错误信息也一起打印出来……可能因为我缺库太严重了吧,其实现在也还缺一个库)

可是,编译好之后依旧无法更新文件(不适用FTP,一开始我还纳闷:你这PHP不是运行在服务器上的吗,怎么还需要远程连接去更新文件啊)呐,chown chmod什么的也不管用,一直花了几个小时,连切语言都要下载一个中文版的WordPress从里面提取语言包……

直到后来,我亲自写了个调用mkdir()函数的php文件,提示Read-only filesystem

……

没理由啊,我这文件系统分明能写。

……

随后我把视野从WordPress拓宽到php-fpm上,再次调用搜索引擎,看到这个,竟然是systemd的锅……(ProtectSystem)

再次修改,systemctl daemon-reload && systemctl restart php-fpm,问题已经解决。

小插曲:中途发现自己的的服务器被人用SSH “DDOS”了,但是连接频率都不高且都来自同一个IP,直接用防火墙规则把那个IP的请求给DROP就好了。

修改:别用CentOS,要么用Rocky Linux要么用Ubuntu,不然就会像上面那样死得那么惨!我已经转Ubuntu了,新来的用CentOS的快跑!