在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!,这样之后,我写的关于文件操作的函数就能够顺利被调用起来了,大功告成。
注意,一些所谓的“服务器内部错误”,细心查看log文件不难发现,就是忘了将runtime文件夹设置权限777;同时更要记住把runtime文件夹里面的cache文件夹、log文件夹也要设置成777权限。设置命令是:chmod 777 fileName
<p align="right">2020年5月1日</p>
<p align="right">艾孜尔江撰稿</p>
在Cent OS云服务器上部署基于TP5后端代码踩坑记录_艾孜尔江撰的更多相关文章
- unigui在阿里云服务器上部署
unigui在阿里云服务器上部署 客户租用了阿里云WINDOWS2008服务器,部署UNIGUI发现死活不行,WINDOWS2008自带的IE9浏览器打开URL,卡死在loading...... 我远 ...
- PHP--腾讯云服务器上部署LNMP环境
本文参考 云服务器上部署Laravel的实例教程 腾讯云 创建 Laravel5.4 项目 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PH ...
- 使用Windows下的git工具往github上传代码 踩坑记录
使用Windows下的git工具往github上传代码 踩坑记录 背景 由于以前接触的项目都是通过svn进行版本控制,现在公司项目使用git,加上自己平时有一个练手小项目,趁着周末试着把项目上传到自己 ...
- [原创]在HP DL380 G7服务器上部署基于Ubuntu Server 16.04 和 VirtualBox的云平台
对于一线开发人员来说,一提到虚拟机平台,往往会让人联想到在价格昂贵的服务器上部署VMware vSphere之类软件来实现. 笔者作为一个资深码农,也是一直梦寐着在自己家中打造一个真正的家庭私有云,秒 ...
- Linux学习2-在阿里云服务器上部署禅道环境
前言 以前出去面试总会被问到:测试环境怎么搭建?刚工作1-2年不会搭建测试环境还可以原谅自己,工作3-5年后如果还是对测试环境搭建一无所知,面试官会一脸的鄙视. 本篇以最简单的禅道环境搭建为例,学习下 ...
- Ubuntu 云服务器上部署自己的 Rails 应用
自学rails一段时间了,之前只用heroku部署了网站,想尝试把网站以一个更“正经”的方式呈现出来,就买了一个阿里云服务器.参考了网上部分rails部署教程,过程中也遇到了一些问题,所以在完成之后总 ...
- 使用Nginx+uwsgi在亚马逊云服务器上部署python+django项目完整版(二)——部署配置及相关知识
---恢复内容开始--- 一.前提: 1.django项目文件已放置在云服务器上,配置好运行环境,可正常运行 2.云服务器可正常连接 二.相关知识 1.python manage.py runserv ...
- 如何在 Ubuntu 云服务器上部署自己的 Rails 应用
安装步骤 参考:https://ruby-china.org/topics/32851 在云服务器上安装Ruby|Rails : http://www.cnblogs.com/znsongshu/p ...
- 基于Cent os 云服务器中SVN 服务器的搭建---具体实践是可行的 一次备注便于后续查找
https://blog.csdn.net/shadowyingjian/article/details/80588544http://www.hongyanliren.com/2015m04/329 ...
随机推荐
- JVM调优方法笔记
1.性能工具介绍 jvisualvm jmap jstat jstack/threaddump jprofiler jmeter 2.性能调优4步骤 重现问题 定位问题 模拟问题 解决问题 http: ...
- CF--思维练习--CodeForces - 221C-H - Little Elephant and Problem (思维)
ACM思维题训练集合 The Little Elephant has got a problem - somebody has been touching his sorted by non-decr ...
- 数学--数论--POJ1365——Prime Land
Description Everybody in the Prime Land is using a prime base number system. In this system, each po ...
- 图论--2-SAT--Ligthoj 1407 Explosion 三元关系枚举
Planet Krypton is about to explode. The inhabitants of this planet have to leave the planet immediat ...
- FTP服务器项目的一些整理
几个月前按照网上的教程写了一个FTP的服务器,现在回头整理一下里面的一些知识. FTP简介 FTP是文件传输协议(File Transfer Protocol),工作在TCP/IP协议族的应用层,其传 ...
- Flutter 系统是如何实现ExpansionPanelList的
老孟导读:Flutter组件有一个很大的特色,那就是很多复杂的组件都是通过一个一个小组件拼装而成的,今天就来说说系统的ExpansionPanelList是如何实现的. 在了解ExpansionPan ...
- springboot利用redis实现分布式锁(redis为单机模式)
1.pom文件添加redis支持 <dependency> <groupId>org.springframework.boot</groupId> <arti ...
- 201771010113 李婷华 《面向对象程序设计(java)》第九周总结
一.理论知识部分 第六章 接口与内部类 1.内部类(innerclass)是定义在一个类内部的类.外层的类成为外部类(outerclass).内部类主要用于事件处理. 2.使用内部类的原因有以下三个: ...
- Bootstrap Table 3 官方文档
备查 Bootstrap Table 3 官方文档 示例
- 【Scala】scala的继承能干嘛?这段简单的代码或许能帮你梳理
package cn.itcast.scala.demo2 class Person { //private关键字和final关键字修饰的常量无法被继承重写 val id: Int = 1 var n ...