记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑

CI框架部署到阿里云Centos7.3上,所遇到的坑

    • 第一坑: CI控制器下的名称应该都大写,否则会404
    • 第二坑:本地的PHP版本与服务器上的版本不匹配
      • 首先阿里云Apache服务器卸载干净的方法
      • 安装PHP5.6
    • 第三坑:无法加载你本地的资源文件,比如那些images、js、css,查看浏览器的network,发现访问的路径全都是通过阿里云的内网ip地址访问的,而不是公网ip
    • 第四坑:CI路径访问时候,默认的必须得在路径中加上index.php,正常来讲是可以通过配置去掉的,本地已经配置完后,也好使了,但是服务器上却不行。

第一坑: CI控制器下的名称应该都大写,否则会404

记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑_第1张图片
均应一一对应,model里的最好也保持一致(反正我吃了这个亏就贼老实)

第二坑:本地的PHP版本与服务器上的版本不匹配

因为本地我用的是XAMPP集成好的一套工具,PHP带的版本是5.2的,但是我在服务器上装的PHP版本是7.0的,所以就造成了由于版本不匹配所报的500错误。正确的方式是先卸载服务器上所有关于PHP的文件,在安装一个新的5.6的(这里我没有找到5.2版本的帖子,所以就装了一个5.6的,也好使了)

首先阿里云Apache服务器卸载干净的方法

先查看你的php的版本

php -v

你直接用yum remove php是卸载不干净的,使用这个命令在用php -v查看,还是会有版本信息的。
必须强行删除,使用下面的命令查看全部的php软件包

rpm -qa|grep php

出来的提示如下:
记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑_第2张图片
注意应该先卸载没有依赖的
pdo是mysql的依赖;common是gd的依赖,所以先卸载能卸的
卸载的语句如下:rpm -e ... 然后就删吧

rpm -e php-mysql-5.1.6-27.el5_5.3

把所有的都删干净后,在执行php -v 发现啥也没有了,这时候就开始装你的新的php吧

安装PHP5.6

上面卸载干净后就开始装吧。
配置yum源,先确认yum源是不是有效的

yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

确认要安装的php版本

yum list --enablerepo=remi --enablerepo=remi-php56 | grep php

安装php5.6

yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-pecl-apcu php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common

命令行里的php-opcache及php-pecl-apcu会有效的提高php执行速度。

确认版本

php -v

在这里插入图片描述
安装成功!
在然后就能正常运行了,没有500错误了,但是还有坑,下面继续来。

第三坑:无法加载你本地的资源文件,比如那些images、js、css,查看浏览器的network,发现访问的路径全都是通过阿里云的内网ip地址访问的,而不是公网ip

记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑_第3张图片
所以就导致了请求资源请求不到。原因是CI框架那的base_url路径没配,当时上传上去的时候直接给的是空的,所以在本地跑的时候是好使的。上传到阿里云上就不行了,需要重新转发到公网ip上,因为我已经绑定完域名了,所以我是这么写得。
静态资源需要访问的路径是:
http://www.hrbustcheny.info/myblog/assets/css
http://www.hrbustcheny.info/myblog/assets/js
http://www.hrbustcheny.info/myblog/assets/images
所以我在项目里更改了一下base_url
记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑_第4张图片
我在每个页面的都加了
页面里请求资源的路径是这么写的

所以,这时候每次请求静态资源时,都会在路径前面拼接上
http://www.hrbustcheny.info/myblog,这样就访问到页面的静态资源了。

第四坑:CI路径访问时候,默认的必须得在路径中加上index.php,正常来讲是可以通过配置去掉的,本地已经配置完后,也好使了,但是服务器上却不行。

所以导致我页面里所有的路由都跳转不到,就一个首页好用,原因是除了配置好的属性外,下面的这个,
记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑_第5张图片
还需要有一个配合着一起使用的 .htaccess 文件,这个文件是放在项目的根目录上,正常我写的是好使的。

RewriteEngine on
RewriteCond $1 !^(index\.php|assets/images|assets/css|assets/js|assets/kindeditor|favicon\.ico)
RewriteRule ^(.*)$ index.php/$1 [L]

上面的意思是说,你访问assets/images、assets/css、assets/js、assets/kindeditor、favicon.ico的时候,不在前面加上index.php,而你在访问路径的时候,都在左侧默认给你加上一个index.php。
但是呢,你的资源访问已经生效了,控制路径的那句话却没有生效
这是天坑,与你阿里云服务器上的一个配置有关。你要是用的XAMPP for Linux集成好的(我不会弄,别人说挺好配),这个配置就是打开的,但是我是通过yum的方式安装的Apache,安装Apache方法参考我的另一篇文章:https://blog.csdn.net/Cheny_Yang/article/details/83318034
需要先找到你服务器的 httpd.conf 文件在哪里,
我的是在

vi /etc/httpd/conf/httpd.conf

然后修改里面关于.htaccess的一个配置,我的Apache默认的是None,把它改成All
AllowOverride All
记录一次,CI框架部署在阿里云的centos7.3部署所有踩到的坑_第6张图片
这个时候,你就发现,所有的路径都正常了。
bingo~

你可能感兴趣的:(小工具及经验,Linux)