在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰
推荐使用镜像安装Cent OS系统,或者在纯净安装完成之后在完成Apache+MySQL+PHP的时候不要每个单独安装,因为这样会出一些三者之间版本不配的问题,网上各种说法都有,查起来也非常困难,版本匹配之后又会遇到什么问题也无从知晓,反正这种单独安装的方式不适合一般的开发需求,商业开发也基本上都是使用现成的镜像直接安装环境,作为普通开发者,也不要太在这种没有技术含金量的事情上面画太多的时间。
如果不采用直接安装系统镜像的方式,还是想纯净安装,那我比较推荐的方式是,在安装好纯净的Cent OS系统之后,下一个XAMPP-Installer,下个匹配于自己在开发过程中使用过的版本。然后安装这个XAMPP。需要注意的是,装还这个之后实际上会显示MariaDB+Apache+PHP,这个不用见怪,因为度娘说MariaDB实际上就是MySQL的超集,我们在该情形下就拿他当MySQL对待就好。在安装好XAMPP之后,需要检查一下自己的TP5服务端代码中的config文件,将里面的数据库相关的IP地址改成公网的IP地址,不然会报错说没办法通过root进入到处在127.0.0.1这个位置上的数据库,网上搜,一大堆解决方式,但是鲜有适合于TP5开发的,因为产生这类问题的原因太多太多,而网上的各种解决方式基本上都是针对于不同的情况而论,实施之后虽然没有什么大问题,并且感觉上像是解决了,但实际上没有找到问题的根源——网上的解决方式具有特普遍性而不具有特殊性,我们在部署TP5服务器的时候所具有的特殊性是“忘了将config配置文件中的数据库所在IP地址改成公网服务器的IP地址”。
在设置好之后需要将数据库sql文件引入到服务器上的数据库中,这里有两种方式,一个是通过终端页面进去之后用命令行导入数据库文件,对于新手不太推荐;比较推荐的是使用Navicat数据库管理工具远程连接数据库并在连接成功后将数据库文件导入进去进行管理,这个方式的详细做法可以上哔哩哔哩去看我的视频。但是需要提醒的是,还是因为我们的这个问题具有特殊性——在TP5代码的数据库config文件夹中设置了数据库登录的用户名密码,所以远程连接数据库的时候总会遇到各种拒绝,这时候我们就得看一下有没有输入和配置文件中一致的用户名密码,建议将用户名密码改成和XAMPP数据库用户名密码一致的,比如说我先前设置的XAMPP工具中的MySQL的密码是空,那么我在这里也吧TP5代码中的数据库密码设为空,这样做就是为了能够顺利连接上远程数据库并在远程数据库上新建数据库后载入本地数据库文件进行运行。
在这些工作都完成之后再去测试接口,会发现跟写入文件操作的接口没法用了,如果前期在这里处理的太好了,比如说我的这个情形,就是在前期就已经吧各种异常处理做好了,这时候因为无法写入文件,除了异常只能看到前期我自己写的抛出异常的语句,鉴于生产环境下很难进行调试,而发现又没有生成关于这个异常的log日志,这时候就很令人不耐烦,找来找去发现自己之前在抛出异常的这个语句上面进行了关于开发环境于生产环境的判断,而部署的时候很自主地将开发模式给关了,换成了生产模式,于是就一直抛出自己写地异常处理响应语句,这时候就需要把生产模式再关掉去看看TP5框架自己返回的异常是什么异常。直到这时,才发现,原来是mkdir()函数没能再Linux系统上正常运行,网上一搜,发现这种坑不会见于Windows开发中,而知见于对运行时权限管理比较注重的Linux操作系统上,也正是因为没能够执行mkdir()函数,我才在生产模式下没有看到任何日志记录,于是我遍将TP5中记录日志的runtime文件夹的权限设置成了777,恨不得把里面的两个cache文件夹和log文件夹的权限也都设置成777!,这样之后,我写的关于文件操作的函数就能够顺利被调用起来了,大功告成。
<p align="right">2020年5月1日</p> <p align="right">艾孜尔江撰稿</p>