这两天项目上线,开发环境的线上环境不一样,第一次转移,还折腾了小两天,记录一下过程,楼主还不太会用Linux,有些细节就跳过,简单描述一下
背景:
本地环境: window7,xampp 3.2.1集成环境,php扩展Imagick,安装有ghostscript
线上环境: AWS EC2空间,S3存储, Ubuntu,Nginx, PHP5.5.9, Mysql
一. php> 安装环境
ubuntu:
Nginx: sudo apt-get install nginx
php,MySQL等 sudo apt-get install php5-fpm
另外Nginx不支持rewrite功能,所有地址都会出现302,需要修改Nginx配置
sudo vim /etc/nginx/sites-available/default
开启支持thinkphp的rewrite功能,添加
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
网上也还有一些类似的配置方法,大体差不多,没有细看
配置上传文件大小:
以前使用Apache时,Apache中没有限制或者是默认比较大,都是在php的配置文件php.ini中配置post_max_size和upload_max_filesize到你想要的大小就行了;
而换成nginx后,他也有一个限制上传的参数,client_max_body_size默认是1M,作为下载站,我们肯定要修改其大小,到nginx的http段,新增 client_max_body_size 10M,就改成了10M
二. php> 扩展
crul:
Imagick:
1)安装imagick扩展
sudo apt-get install libmagick++-dev
sudo pecl install imagick
2)添加文件touch /etc/php5/mods-available/imagick.ini,修改权限
内容:
; configuration for php Imagick module
; priority=20
extension=imagick.so 3
3)添加软链接
ln -s /etc/php5/mods-available/imagick.ini /etc/php5/fpm/conf.d/20-imgick.ini
4)Kill掉所有的php进程,重新运行php5-fpm
5)sudo service nginx reload,ok
ghostscript, pdfinfo
三. php> 网站文件存储到AWS的S3
- 这个方面折腾了差不多一周,后面单独记录
四. php> 其他小问题
1)页面不可展示,提示模板无法找到
有可能出现在这几个问题上:
1. 路径名:windows下用的是 c:\a\b\c 这样的格式,linux下用的是 /a/b/c 这样的格式
2. 文件名大小写: windows 下 a.php 和 A.php 是同一个文件,linux下认为是2个不同的文件
3. 权限问题: 最好将文件权限设置为 755 ,需要写入的文件权限设置为 777
我们的问题就出在第二条,检查一下,大小写搞混了,之前在Windows没注意,也没报错
2)出现 STORAGE_WRITE_ERROR 的报错
这是Thinkphp框架弹出的错误,
原因:运行时的Runtime文件夹对应的用户权限不够;
解决办法:将Runtime下的文件全部删除,赋权限777,重新运行网站,让其自动生成,问题解决
所以开发环境与线上环境不一致是很蛋疼的事,在各种配置上花了不少时间,以后尽量保证一致,该好好学一下Linux的操作了
3 ) 整合AWS的S3功能时,出现访问超时
没有其他反馈信息,就得自己代码的每一个函数,环境配置,兼容性开始一个个的DEBUG,真的很痛苦,原因还是路径问题,导致S3的自动加载机制失效,总算是搞定了