如何在LNMP环境下部署ThinkPHP5.*/Laravel5.4项目
本次介绍的基础:
1) 安装LNMP环境(本人使用的是www.lnmp.org下载的一键安装包,各文件路径为默认路径)
2) ThinkPHP5版本和Laravel5版本文件目录很相似,入口文件都是根目录下的public/index.php,所以部署类似,但是本次主要以thinkphp5版本为例
注意:
修改文件前,切记先备份好文件,修改文件内容尽量先注释一份,再复制一份修改
1、打开php.ini配置文件(php.ini留备份),找到display_errors,将display_errors = Off 修改成 display_errors = On,保存并退出
1) cp ./php.ini ./php.ini.bak #复制php.ini文件
2) vim ./php.ini #进去php配置文件
3) 将display_errors = Off 修改成 display_errors = On #开启错误信息提示,仅限调试,如果挂网站的话,切记关闭错误提示,将错误写入日志文件,
4) :wq!
5) service php-fpm restart #重启php服务,前提是php-fpm 已经添加到守护进程开机自启动(chkconfig php-fpm on)
2、每个域名下有一个隐藏文件 .user.ini
1) chattr -i /home/wwwroot/test.com/.user.ini #给只读属性文件解锁,否则只可读
2) chattr +i /home/wwwroot/test.com/.user.ini #给文件加锁,只可读
3) cp /usr/local/nginx/conf/fastcgi.conf /usr/local/nginx/conf/fastcgi.conf.bak #备份文件
3) vim /usr/local/nginx/conf/fastcgi.conf #打开文件
4) 将
fastcgi_param PHP_ADMIN_VALUE"open_basedir=$document_root/:/tmp/:/proc/"
修改为:
fastcgi_param PHP_ADMIN_VALUE"open_basedir=NULL"
5) service nginx restart #重启nginx服务生效,前提是nginx已添加到开机自启动(chkconfig nginx on)
3、修改php.ini的禁止的函数
6) 根据需要修改
4、修改域名对应的配置文件,我用的是LNMP一键安装包(www.lnmp.org)
1) cp /usr/local/nginx/conf/vhost/default.conf /usr/local/nginx/conf/vhost/test.com.conf //生成域名对应的.conf配置文件
2) vim /usr/local/nginx/conf/vhost/test.com.conf //进入虚拟主机(域名)配置文件
1)添加:
include other.conf
include thinkphp.conf
#include laravel.conf; //手动添加, Laravel框架使用
include fastcgi.conf
include enable-php.conf
2) 注意: 由于代码执行顺序是自上而下,自左向右,为避免由于插入位置出现报错,所以四行代码的位置尽量如上, 注意 include other.conf 在最上面,include fastcgi.conf在最下面
3) 添加前test.com.conf文件代码:
server
{
listen 80
#listen [::]:80;
server_name test.com
index index.html index.htm index.php default.html default.htm default.php
root /home/wwwroot/test.com/public
include other.conf
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf
include thinkphp.conf
include fastcgi.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d
}
location ~ .*\.(js|css)?$
{
expires 12h
}
location ~ /.well-known {
allow all
}
location ~ /\.
{
deny all
}
access_log /home/wwwlogs/test.com.log
}
4)添加后test.com.conf文件代码:
server
{
listen 80
#listen [::]:80;
server_name test.com
index index.html index.htm index.php default.html default.htm default.php
root /home/wwwroot/test.com/public
include other.conf
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf
include thinkphp.conf
include fastcgi.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d
}
location ~ .*\.(js|css)?$
{
expires 12h
}
location ~ /.well-known {
allow all
}
location ~ /\.
{
deny all
}
access_log /home/wwwlogs/test.com.log
}
总结:
1)环境使用: 我使用的LNMP集成环境,下载地址www.lnmp.org,这是比较快速的方法,不介意时间话,也可以用yum安装,或者源码安装,后二者需要一定时间,并且要自己配置软件安装路径,lnmp安装包是比较全面的包,里面还有apache服务器,ftp等其他工具,可以根据需要安装,并且lnmp.org是全球活跃的免费开源社区,有自己的生态,有很多好的资源,也有详细的新手教程,还将很多繁琐的操作写成了shell脚本,用户只要按文档执行shell脚本文件即可,个人觉得还不错
2) 修改系统配置时,切记养成留备份的习惯,否则出问题会很痛苦,
3) 默认新买的服务器的一些常用端口是关闭的需要手动开启,如3306(MySQL),21(FTP),80(Http),22(SSH),443(Https),6739(Redis),11211(Memcached),一般建议端口需要用时再开启,可以在/etc/sysconfig/iptables 防火墙文件中开启, 修改完防火墙后,需要重启才能生效: service iptables restart
4) 修改软件系统配置时,修改后切记重启服务,否则不生效,
如:
1) 修改php.ini文件,必须service php-fpm restart
2) 修改test.com.conf 文件,必须service nginx restart
5) 注意 4) 中的命令,如 service nginx restart 命令, 需要先添加守护进程(即设置开机自启动),否则需要使用完整路径执行命令,如service /usr/local/nginx/sbin/nginx restart
设置开机自启动: chkconfig on
6) 网站安全: php.ini 开启错误信息提示(display_errors),仅限调试,如果运行网站的话,切记关闭错误提示,否则错误提示容易被别有用心的人利用,攻击你的网站
7) 上述步骤中的文件路径均是lnmp安装包的默认路径,可根据需要自定义,个人建议最好不要改,否则出错时比较麻烦
8) test.com.conf中include的.conf文件内容:
1) thinkphp.conf
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last
break
}
}
2) laravel.conf
location / {
try_files $uri $uri/ /index.php?$query_string
}
3) pathinfo.conf
fastcgi_split_path_info ^(.+?\.php)(/.*)$
set $path_info $fastcgi_path_info
fastcgi_param PATH_INFO $path_info
try_files $fastcgi_script_name =404
4) enable-php.conf
location ~ [^/]\.php(/|$)
{
try_files $uri =404
fastcgi_pass unix:/tmp/php-cgi.sock
fastcgi_index index.php
include fastcgi.conf
}
5) enable-php-pathinfo.conf
location ~ [^/]\.php(/|$)
{
fastcgi_pass unix:/tmp/php-cgi.sock
fastcgi_index index.php
include fastcgi.conf
include pathinfo.conf
}