如何在lnmp上部署Thinkphp

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在lnmp上部署Thinkphp相关的知识,希望对你有一定的参考价值。

Thinkphp的四种URL模式:0(普通模式);1(PATHINFO模式);2(REWRITE模式);3(兼容模式)

nginx需要PATHINFO模式,但需要更改nginx配置文件让其支持PATHINFO模式。

系统环境:

系统:CentOS-6.4-x86_64

web服务器:nginx1.2.7

PHP版本:PHP5.3.17

数据库版本:mysql5.5.28

一、安装LNMP1.0一键安装包:

http://lnmp.org/install.html

按照以上版本安装环境

二、修改配置文件

1.修改php配置文件php.ini,将其中cgi.fix_pathinfo = 0,值改为1

重启php-fpm

2.ssh里执行:

cat > /usr/local/nginx/conf/pathinfo.conf << 'EOF'
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "(.+?\.php)(/.*)")
set $real_script_name $1;
set $path_info $2;

fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;

EOF

再将虚拟主机配置文件里的location ~ .*\.(php|php5)?$ 替换为:location ~ .*\.php
再在include fcgi.conf; 下面添加一行include pathinfo.conf;
重启nginx

完整的虚拟主机配置文件如下:

server

listen 80;
server_name www.lnmp.org;
index index.html index.htm index.php;
root /home/wwwroot/lnmp;

location ~ .*\.php

try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
include pathinfo.conf;


location /status
stub_status on;
access_log off;


location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

expires 30d;


location ~ .*\.(js|css)?$

expires 12h;


access_log /home/wwwlogs/lnmp.log lnmp;



将ThinkPHP的URL模式设置成PATHINFO。

ThinkPHP就可以在nginx中运行了。
参考技术A 我想题主对 nginx 应该仅仅是了解并不精通。很有可能 nginx 下只发布这一个应用,那就不提虚拟主机的事了。

这种情况下如果 nginx 是采用默认配置编译安装的,只需要把代码拷贝到

/usr/local/nginx/html
目录下即可。
操作关键就是把项目文件放置到 nginx 配置文件中 server 节点 root参数的路径下。希望能帮到你,我还在后盾网上课呢,加油吧皮卡丘٩(๑òωó๑)۶

linux上部署thinkphp5提示500

 以下仅LNMP 1.4版本的解决办法,LNMP其他版本请参考官网https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini

解决方法一:LNMP 1.4上也可以直接使用lnmp1.4/tools/ 目录下的 ./remove_open_basedir_restriction.sh,输入网站的全路径(如/www/wwwrooter/testweb) 回车既可

解决方法二:LNMP 1.4上如果不想用防跨目录或者修改.user.ini的防跨目录的目录还需要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在该行行前添加 # 或删除改行,需要重启nginx。
这里我试过了是无效的,大家可以尝试,修改完fastcgi.conf后执行

service nginx restart

service php-fpm restart

说明; 由于我的服务器php环境是使用lnmp集成包搭建,原因也来于此

在Thinkphp、codeigniter、Laravel等框架下,网站目录一般是在public下,但是public下的程序要跨目录调用public上级目录下的文件,因为LNMP默认是不允许跨目录访问的,所以都是必须要将防跨目录访问的设置去掉,有时候这些框架类的程序提示500错误也可能是这个问题引起的。(官网上写的https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini

问了找了好久,还是通过tp5官网文档的评论发现解决方法,tp5文档https://www.kancloud.cn/manual/thinkphp5/336757


以上是关于如何在lnmp上部署Thinkphp的主要内容,如果未能解决你的问题,请参考以下文章

基于thinkphp开发的项目部署到由宝塔面板创建的LNMP服务器上解决路径出错问题

关于LNMP服务器 Thinkphp5验证码不显示问题

服务器上部署redis并且设置远程访问(Thinkphp5项目)

如何在docker里部署lnmp

WordPress安装篇:YUM方式安装LNMP并部署WordPress

thinkphp5项目放在线上的LNMP环境中打开为空白问题解决