及近期布署TP5遇见了这些坑,各种环境下就会出现一些问题,下面是我记录的排坑之路

  先说最简略的lnmp一键安装包,我用的是1.5稳定版

  安装命令:wget -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.shlnmp(安装+编译一键搞定)

  如须要安装LNMPA或LAMPtypecho nginx 伪静态,将./install.sh 后面的参数lnmp替换为lnmpa或lamp即可。如需修改网站跟数据库目录、自定义Nginx参数、PHP参数模块、开启lua等需在运行./install.sh 命令前更改安装包目录下的 lnmp.conf 文件,详细可以查看lnmp.conf文件参数说明。

  第一个提示:提供一直数据库(我用的3),直接键入数字回车即可

  第二个提示:输入数据库密码

  第三个提示:是否启用Innodb,直接回车或则y回车

  第四个提示:选择PHP版本(默认5.6)我的是默认版本

  第五个提示:我选的默认不安装(我的是默认)

  第六个提示:选择apache版本(我选的默认)

  第七个提示:如果显示Nginx: OKtypecho nginx 伪静态,MySQL: OK,PHP: OK

  并且Nginx、MySQL、PHP都是running,80跟3306端口都存在,并提示安装使用的时间及Install lnmp V1.5 completed! enjoy it.的话,说明早已安装成功。

  某些系统可能会仍然卡在Install lnmp V1.5 completed! enjoy it.不手动退出,可以按Ctrl+c退出。

  安装完成接下来开始使用就可以了,按添加虚拟主机教程,添加虚拟主机后可以使用sftp或ftp服务器上传网站代码,将域名解读至VPS或服务器的IP上,解析生效即可使用。

  第八个提示:安装失败

  如果出现类似上图的提示,有一个或几个没安装成功阐明安装失败!!需要用winscp或其他类似工具,将/root目录下边的lnmp-install.log下载下去,到LNMP支持峰会发贴标明你的系统发行版名称及版本号、32位还是64位等信息,并将lnmp-install.log压缩以附件方式上传至峰会,我们会通过日志查找错误,并给与相应的解决办法。

  默认LNMP是不安装FTP服务器的,如还要FTP服务器:

  添加虚拟主机:lnmp封装好的很方便

  lnmp vhost add //添加虚拟主机

  输入你的虚拟域名,我的是

  这里问问是否添加更多域名,直接再键入要绑定的域名,我直接回车跳过了

  网站目录不存在的话会争创目录。也可以键入早已存在的目录或要设置的目录(注意如要键入应当是全路径即以/开头的完整路径!!!)。不键入直接回车的话,采用默认目录:/home/wwwroot/域名

  开启伪静态,利于SEO优化

  默认早已有了discuz、discuzx、discuzx2(Discuz X二级目录)、wordpress、wp2(WordPress二级目录)、typecho、typecho2(Typecho二级目录)、sablog、emlog、dabr、phpwind、、dedecms、drupal、ecshop、shopex等常用的Nginx伪静态配置文件,可以直接键入名称进行使用,如果是二级目录则须要对应配置文件里的二级目录的名称。

  是否开启错误日志

  如果启用还要再键入要设置的日志的名称,默认日志目录为:/home/wwwlogs/ 默认文件名为:域名.log 回车确认后,会问问是否添加数据库跟数据库用户。

  如果要添加,需要先验证MySQL的root密码(注:输入密码将不显示)

  提示Enter database name: 后键入要争创的数据库名称,要争创的数据库用户名会跟数据库同名,回车确认。

  提示Please enter password for mysql user 数据库名: 后键入要设置的密码,回车确认。

  如果安装了FTP服务器会问问是否添加FTP帐号

  如果还要添加键入 y ,不添加键入 n 回车。

  提示Enter ftp account name: 后键入要争创的FTP帐号名称,回车确认。

  提示Enter password for ftp account FTP帐号: 后键入要设置的密码,回车确认。

  接下来是1.4新增的添加SSL功能

  如果还要添加键入 y ,不添加键入 n 回车。

  选择了添加SSL会提示

  有两个选项,1 选项为使用自己打算好的SSL证书跟key。

  > > 提示Please enter full path to SSL Certificate file 后键入要SSL证书的完整路径跟文件名,回车确认。

  > > 提示Please enter full path to SSL Certificate Key file: 后键入键入要key文件的完整路径跟文件名,回车确认。

  2 选项为使用免费SSL证书提供商Letsencrypt的证书,自动生成SSL证书等信息。

  需要键入一个邮箱回车确认。

  提示 Press any key to start create virtul host... 后,回车确认便会开始争创虚拟主机。

  添加成功会提示添加的域名、目录、伪静态、日志、数据库、FTP等相关信息,如下图:

  ##伪静态管理##

  LNMPA或LAMP可以直接使用网站根目录下放.htaccess 来设置伪静态规则(具体规则可以去程序官网网站找google百度),但是在LNMP下,需要使用Nginx伪静态规则。

  伪静态可以随时添加或删掉,如果添加完虚拟主机后忘掉或没有添加伪静态,可以通过更改配置文件来添加伪静态。

  虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

  伪静态规则文件须要置于/usr/local/nginx/conf/ 下面。

  编辑虚拟主机配置文件,可以使用vi、nano或winscp,后2个工具对菜鸟来说简略些。

  例如上面我们添加的虚拟主机,打开后前半部份配置会显示如下:

  在root /home/wwwroot/;这一行下边添加:

  include wordpress.conf;

  上面的wordpress.conf为伪静态文件,如还要其他伪静态文件自己争创个并上传至/usr/local/nginx/conf/ 下面并include 伪静态.conf; 加完保存,执行:/etc/init.d/nginx restart重启生效,如果报错或许是添加有误或伪静态规则有误。

  1.4及之前版本伪静态文件都在 /usr/local/nginx/conf/ 目录下

  1.5及以后版本伪静态文件都在 /usr/local/nginx/conf/rewrite 目录下

  伪静态文件名称前面带2的是二级目录的伪静态,可以依照自己需求更改上面二级目录的名称或复制为其他昵称后include至虚拟主机配置文件中。

  ##上传网站程序##

  如果早已安装FTP服务器可以直接使用ftp客户端通过你的FTP信息登陆后上传网站或sftp等硬件上传网站,设置好相关权限开始安装即可。

  上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。

  为了安全可以将一些不需要PHP运行的上传文件之类的目录除去执行权限,参考:

  ##已存在虚拟主机添加ssl证书开启https##

  对于已存在的虚拟主机添加https站点,可以执行:lnmp ssl add命令添加ssl证书,目前有两种方法一种是使用自备的ssl证书,二是选用Let'sEncrypt的免费证书。添加过程跟上面的添加虚拟主机的过程是一样的,只是会多一项填写ssl证书跟key的方法或直接选择Let'sEncrypt手动生成证书。

  如果是1.*版本升级至1.4或修改版本的还要参考:中的说明,如果有提示不安全或不显示小蓝锁里面链接中还有说明。

  ##列出网站(虚拟主机)##

  执行:lnmp vhost list

  ##删除网站(虚拟主机)##

  执行:lnmp vhost del

  删除网站会先列举当前已有虚拟主机,按提示键入要删掉的虚拟主机域名 回车确认。

  这里也是删掉虚拟主机配置文件,网站文件并不会删掉还要自己删掉。

  LNMP 1.2下还要执行:chattr -i /网站目录/.user.ini 后才会删掉网站目录。

  当执行chown或chmod对网站目录属主属组或权限进行操作时可能会提示chown: changing ownership of `/home/wwwroot/default/.user.ini': Operation not permitted,不需要理会,如果有强迫症可以参考上面先进行chattr -i的操作。

  ##默认网站(虚拟主机)##

  LNMP默认网站配置文件:/usr/local/nginx/conf/nginx.conf

  LNMPA默认网站配置文件:/usr/local/nginx/conf/nginx.conf 和 /usr/local/apache/conf/extra/httpd-vhosts.conf

  LAMP默认网站配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf

  ##防跨目录设置##

  LNMP 1.1及之前的版本使用php.ini旁边,open_basedir设置

  LNMP 1.2及更高版本防跨目录功能使用.user.ini,该文件在网站根目录下,可以更改.user.ini 里面的open_basedir的值来设置限制访问的目录或删掉来移除防跨目录的设置。

  .user.ini文件难以直接更改,如要修或删掉还要先执行:chattr -i /网站目录/.user.ini

  可以使用winscp文件管理、vim编辑器或nano编辑器进行更改。

  删除的话rm -f /网站目录/.user.ini 就可以。

  修改完成后再执行:chattr +i /网站目录/.user.ini

  .user.ini不需要重启通常5分钟左右生效,也可以重启一下php-fpm立刻生效。

  如果要修改网站目录应当要按上述方式更改防跨目录的设置,否则肯定报错!!

  LNMP 1.4上假如不想用防跨目录或则更改.user.ini的防跨目录的目录还须要将 /usr/local/nginx/conf/fastcgi.conf 里面的fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/"; 在该行行前添加 # 或删掉转行,需要重启nginx。

  LNMP 1.4上也可以直接使用lnmp1.4/tools/ 目录下的 ./remove_open_basedir_restriction.sh 进行移除。

  在Thinkphp、codeigniter、Laravel等框架下,网站目录通常是在public下,但是public下的程序要跨目录读取public上级目录下的文件,因为LNMP默认是不容许跨目录访问的,所以都是应当要将防跨目录访问的设置去除,有时候这种框架类的程序提示500错误也或许是这个问题导致的。

  LNMPA或LAMP 模式1.2版本以上的防跨目录的设置使用的对应apache虚拟主机配置文件(lnmp管理工具添加的话文件是 /usr/local/apache/conf/vhost/域名.conf )里的php_admin_value open_basedir参数进行设置。如果不需要设置可以在上面加 # 进行注释,或自行更改目录的限制。

  重启apache生效。

  ##pathinfo设置##

  LNMP上各个版本pathinfo各个版本的设置基本一样:

  lnmp v1.1上,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)

  去掉#include pathinfo.conf后面的#,把try_files $uri =404; 前面加上# 注释掉。

  1.2,1.3,1.4,1.5及以上版本,修改对应虚拟主机的配置文件(/usr/local/nginx/conf/vhost/域名.conf)

  将include enable-php.conf;替换为include enable-php-pathinfo.conf;

  1.4版本多PHP版本启用pathinfo的话,进入/usr/local/nginx/conf目录,拷贝一份enable-php-pathinfo.conf 命名为 enable-php7.2-pathinfo.conf,将 enable-php7.2.conf 文件里 fastcgi_pass这一行内容完整的复制出来替换 enable-php7.2-pathinfo.conf 文件中的 fastcgi_pass这一行 ,保存,再按上面的步骤更改虚拟主机 include enable-php7.2-pathinfo.conf; 就行了,其他版本以此类推。

  1.5版本多PHP版本开启pathinfo的话,可以在lnmp vhost add 是选择启用pathinfo,如果存在多PHP版本都会提示你选择,也可以直接更改虚拟主机配置文件将include enable-php.conf; 替换为 include enable-php7.2-pathinfo.conf; 保存

  修改pathinfo还要重启nginx生效。

  ##数据库管理##

  1.3以上版本,可以在添加虚拟主机时选择争创数据库,也可以单独使用 lnmp database add 按提示添加数据库,添加的用户名跟数据库名是同名的。

  添加数据库命令:lnmp database add

  编辑数据库用户密码命令:lnmp database edit

  删除数据库命令:lnmp database del

  列出所有数据库命令:lnmp database list

  这些资料都是在 (lnmp官网查至的)

  很多东西是直接复制进来的,以我的水准写的不会比官网指南好

  如果有人使用宝塔tp5报错open_base_dir,网站设置上面有一个安全防护,关掉了就可以(坑我好长时间)

Last modification:December 21st, 2020 at 06:20 pm
如果觉得我的文章对你有用,请随意赞赏