如何在LNMP环境下部署ThinkPHP5.*/Laravel5.项目

如何在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;  //手动添加,thinkphp5.*框架使用 (本次使用)
            #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;  # lnmp安装包特有
                  include fastcgi.conf;   # lnmp安装包特有

                  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 ;常用的有前四个端口,Https需要证书才能生效,Redis和Memcached端口,阿里云的Ecs服务器端口配置可以直接示例配置里修改,

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;
            }       

你可能感兴趣的:(实践类)