军哥LNMP一键安装包自用备份

为什么建立lnmp.club?

总所周知的缘故,近日军哥LNMP一键安装包似乎已经易主:金华市矜贵网络科技有限公司,省流直接看下面首页截图:顶部导航菜单多了公司简介,底部加了公司名字的版权声明。而新的下载文件似乎已经被感染,国内已经有大幅的报导(安恒信息CERT:关于LNMP供应链投毒事件风险提示)。作为长期使用军哥一键包的小伙伴,一方面为军哥的选择保持理解,另外一方面则想继续使用下去如此优秀的作品。不得以建立该页面,主要为了自用,别无其它。

lnmp.org官方网站首页截图

军哥LNMP一键安装包是什么?

LNMP一键安装包是一个用Linux Shell编写的可以为CentOS / RHEL / Fedora / Debian / Ubuntu / Raspbian / Deepin / Alibaba / Amazon / Mint / Oracle / Rocky / Alma / Kali / UOS / 银河麒麟 / openEuler /Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx / MySQL / PHP / Apache)、LAMP(Apache / MySQL / PHP)生产环境的Shell程序。

lnmp.org官方提供的图片

我们为什么需要lnmp一键包?

编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。

不会Linux的站长或Linux新手想使用Linux作为生产环境……

军哥lnmp一键包有什么优势和功能?

无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对配置自动优化。

支持自定义Nginx、PHP编译参数及网站和数据库目录、支持生成Let'sEcrypt/ZeroSSL/BuyPass免费SSL证书、支持无人值守、LNMP模式支持多PHP版本、支持单独安装Nginx/MySQL/MariaDB/Pureftpd服务器,同时提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常见PHP模块exif、fileinfo、ldap、bz2、sodium、imap和swoole的一键安装、常用缓存组件Redis/Xcache等的安装、重置MySQL root密码、502自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。

如何获取军哥LNMP一键包?

你可以自由下载并使用它在VPS或独立服务器上,做为真正的生产环境或测试环境。

我们为什么采用LNMP这种架构?

采用Linux、PHP、MySQL的优点我们不必多说。

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当的稳定。

Nginx相当的稳定、功能丰富、安装配置简单、低系统资源……

如何安装军哥lnmp一键包?

如何下载军哥lnmp一键包?

目前我自己的机器上已经找到了早期没有被污染的1.9和2.0版本的完整安装包文件,未来如果可能将陆续找回其它的安装包文件。

lnmp1.9完整安装包 md5: 09020777f9ce981a01b1fdd229f6f427

军哥lnmp1.9-full.tar.gz文件md5码web.archive.org页面截图

截图来自于:web.archive.org 20230401003247

lnmp2.0完整安装包 md5: ada53925291dc448b70f19de8f92880c

军哥lnmp2.0-full.tar.gz文件md5码web.archive.org页面截图

截图来自于:web.archive.org 20230831000930

军哥lnmp一键包自用备份下载文件md5码校验图

截图来自于lnmp.club

如何安装军哥lnmp一键安装包?

安装要求:

CentOS / RHEL / Fedora / Debian / Ubuntu / Raspbian / Deepin / Aliyun / Amazon / Mint Linux发行版
需要5GB以上可用空间,MySQL 5.7,MariaDB 10至少9GB剩余空间,MySQL8.0最新版至少25GB以上,如空间不够且是x86或x86_64架构MySQL可以选择Generic Binaries安装。
需要128MB以上内存(128MB小内存VPS,Xen需有SWAP,OpenVZ至少要有128MB以上的vSWAP或突发内存),注意小内存请勿使用64位系统!
安装MySQL 5.6或5.7及MariaDB 10必须1G以上内存,更高版本至少要2G内存!
安装PHP 7及以上版本必须1G以上内存!
VPS或服务器必须设置好可用的yum或apt-get源并确保能正常工作,离线安装需要增加 CheckMirror=n 参数!
不要在非常新的Linux发行版上安装旧的PHP/MySQL版本,同理不要在旧的Linux发行版上安装非常新的PHP/MySQL版本。
Linux下区分大小写,输入命令时请注意!
如有通过yum或apt-get安装的MySQL/MariaDB请自行备份数据等相关文件!
CentOS 5、6、8,Debian 6、7、8或更低版本官网已经结束支持无法直接使用,需自行更换vault或archive源!
CentOS 6、8请用lnmp 1.9+版本进行安装!
Ubuntu 18+,Debian 9+,Mint 19+,Deepin 15.7+及所有新的Linux发行版只能使用1.7+进行安装!
PHP 7.1.*以下版本不支持Ubuntu 19+、Debian 10+等等非常新的Linux发行版!
阿里云Ubuntu 14.04和22.04系统模版有问题不要用!!!要用的话论坛找解决方法
PHP 7.4升级或安装必须CentOS 7+,Debian 8+,Ubuntu 16.04+且必须使用1.7+!!!
MySQL 8.0.23以下版本升级或安装必须CentOS 8+,Debian 9+,Ubuntu 16.04+且必须使用1.7+!!!
MySQL 8.0.24以上版本升级或安装必须Debian 11+,Ubuntu 20.04+,Fedora 33+,CentOS 9等gcc 10+的版本且必须使用1.9+,不满足要求请选择(Generic Binaries)二进制方式!!!
MariaDB 10.*以上版本升级或安装必须CentOS 8+,Debian 10+,Ubuntu 18.04+等cmake版本高于3的系统或自行升级cmake!!!不满足要求使用lnmp 2.0选择(Generic Binaries)二进制方式。

安装步骤:

一、使用putty或类似的SSH工具登陆VPS或服务器;

登陆后运行:screen -S lnmp
如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装,详细内容参考screen教程。

二、下载并安装LNMP一键安装包:

原本您可以选择使用下载版(推荐美国及海外VPS或空间较小用户使用)或者完整版,两者没什么区别,只是完整版把一些需要的源码文件预先放到安装包里。

安装LNMP稳定版

如需无人值守安装,请使用 无人值守命令生成工具,或查看无人值守说明教程

wget -c https://lnmp.club/lnmp2.0-full.tar.gz && tar zxf lnmp2.0-full.tar.gz && cd lnmp2.0-full && ./install.sh lnmp

如需要安装LNMPA或LAMP,将./install.sh 后面的参数lnmp替换为lnmpa或lamp即可。同时也支持单独安装Nginx或数据库,命令为 ./install.sh nginx 或 ./install.sh db。
如需更改网站和数据库目录、自定义Nginx参数、PHP参数模块是否安装、开启lua等需在运行 ./install.sh 命令前修改安装包目录下的 lnmp.conf 文件,详细可以查看lnmp.conf文件参数说明。
注意!!!如果离线安装,由于MySQL/MariaDB二进制包巨大,离线安装请使用编译安装方式或自行下载对应版本二进制包到安装包src目录下。
如提示wget: command not found ,使用yum install wget 或 apt-get install wget 命令安装。
运行上述LNMP安装命令后,我想熟悉军哥一键包的小伙伴都应该会自行安装了,这里就不搬教程了。如需要完整安装教程可以自行Google搜索。

三、安装完成

安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。
如果显示Nginx: OK,MySQL: OK,PHP: OK
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并提示安装使用的时间及Install lnmp V1.9 completed! enjoy it.的话,说明已经安装成功。
某些系统可能会一直卡在Install lnmp V2.0 completed! enjoy it.不自动退出,可以按Ctrl+c退出。
安装完成接下来开始使用就可以了,按添加虚拟主机教程,添加虚拟主机后可以使用sftp或ftp服务器上传网站代码,将域名解析到VPS或服务器的IP上,解析生效即可使用。

四、其它安装与配置

1、LNMP下FTP服务器的安装和使用

LNMP一键安装包里1.3及更高版本不需要MySQL支持,无图像界面,只能使用命令lnmp ftp {add|del|edit}进行管理。

进入lnmp解压后的目录,如cd lnmp1.4 其他版本的话自行更改和确定目录位置,执行:./pureftpd.sh 即可安装。
简单使用:
添加ftp账号执行:lnmp ftp add
执行:./pureftpd.sh uninstall 即可对pureftpd进行卸载。

2、缓存加速和扩展类的介绍、安装和使用

缓存加速和扩展再 LNMP1.2及更高版本统一使用./addons.sh 进行安装和卸载。

使用方法:./addons.sh {install | uninstall} {eaccelerator | xcache | memcached | opcache | redis | apcu| imagemagick | ioncube |exif | fileinfo | ldap | bz2 | sodium | imap | swoole} 不同版本可能显示和选项上略微有些差异,目前lnmp 1.9上上述扩展组件均可以一键安装。

注意:eAccelerator、xcache、memcached、imageMagick、ionCube、redis、opcache.这几个PHP缓存、加速类的扩展不一定对每个人都能用,自己按需要安装,不用装多个同类的扩展,可能会导致出错。所有./addons.sh安装的PHP模块在PHP升级/降级后均需要重新使用 ./addons.sh 重新进行安装。

以下以eAccelerator安装举例,其它类同,换成对应的扩展即可。

eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。

进入lnmp解压后的目录,执行:./addons.sh install eaccelerator 即可安装 eaccelerator
卸载则执行:./addons.sh uninstall eaccelerator

XCache 是一个国人开发的又快又稳定的PHP opcode缓存器。经过良好的测试并在大流量/高负载的生产机器上稳定运行,支持所有现行PHP分支的最新发布版本。

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
可以根据自己的需求选择php-memcache或php-memcached扩展,目前discuz x使用的是前者,功能上php-memcached更强大一些。

图像处理扩展:ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过100种图象格式。可用来替换GD库。
设置:比如在DiscuzX里设置时路径需要填写:/usr/local/imagemagick/bin/ 并且禁用函数里的exec要去掉才可以正常使用。

解密扩展:ionCube loader是用来解密ionCube加密的PHP脚本,如whmcs就采用ionCube加密。

Redis是一个开源、支持网络、基于内存、键值对存储数据库。

opcache,是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件。LNMP 1.2下安装的PHP 5.5或更高版本的PHP不需要额外安装OPcache,默认已经安装上。
1.3上默认已安装但未启用执行:./addons.sh install opcache 进行开启。
Opcache和eAccelerator是冲突的,脚本会卸载eAccelerator后再安装Opcache,回车确认后就会自动安装opcache。

SourceGuardian是一款 PHP 的加密解密组件。

其他exif、fileinfo、ldap、bz2、sodium、imap、swoole几个模块同理执行:./addons.sh install xxx 进行安装。

3、仅安装数据库、Nginx;

lnmp 1.5开始支持只安装MySQL/MariaDB数据库或Nginx
增加单独nginx安装,安装包目录下运行:./install.sh nginx 进行安装;
增加单独数据库安装,安装包目录下运行:./install.sh db 进行安装;

4、lnmp一键安装包支持完全离线模式进行安装

注意:离线安装不是不需要源,而是需要你在本地搭建一个供安装使用的源。
CentOS系统下离线安装教程:https://www.vpser.net/manage/centos-iso-local-yum-repository.html
Debian/Ubuntu发行版下没有iso可用,需要在完全相同的临时环境下使用 apt-get install -d <软件包> 命令下载所有必须的软件包后再配合 dpkg-scanpackages 命令打包所需的软件包为源目录,将这个目录打包好放到目标服务器上并设置为源就可以了。
注意:如果MySQL/MariaDB选择"Generic Binaries"(二进制包)安装必须自行下载好指定的二进制包并上传到lnmp安装包 src 目录下。

5、lnmp.conf 配置文件参数说明

lnmp.conf文件位于lnmp安装包目录下

参数名称 参数介绍 例子
Download_Mirror 下载镜像 一般默认,如异常可修改下载镜像
Nginx_Modules_Options 添加Nginx模块或其他编译参数 —add-module=/第三方模块源码目录
PHP_Modules_Options 添加PHP模块或编译参数 —enable-exif 有些模块需提前安装好依赖包
MySQL_Data_Dir MySQL数据库目录设置 默认/usr/local/mysql/var
MariaDB_Data_Dir MariaDB数据库目录设置 默认/usr/local/mariadb/var
Default_Website_Dir 默认虚拟主机网站目录位置 默认/home/wwwroot/default
Enable_Nginx_Openssl Nginx是否使用新版openssl 默认 y,建议不修改,y是启用并开启到http2
Enable_PHP_Fileinfo 是否安装开启php的fileinfo模块 默认n,根据自己情况而定,安装启用的话改成 y
Enable_Nginx_Lua 是否为Nginx安装lua支持 默认n,安装lua可以使用一些基于lua的waf网站防火墙

6、其它安装

可选1,(lnmp 1.4+版)执行:./install.sh mphp 在LNMP模式下可安装多PHP版本。
可选2,(lnmp 1.4+版)执行:./install.sh nginx 单独只安装Nginx。
可选3,(lnmp 1.4+版)执行:./install.sh db 单独只安装MySQL/MariaDB数据库。
(lnmp 1.2,1.3版)执行:./php5.2.17.sh 可安装一个不与LNMP冲突的PHP 5.2.17单独存在,使用时需要将nginx虚拟主机配置文件里的 php-cgi.sock 修改为 php-cgi52.sock。
可选4,LNMP/LNMPA/LAMP卸载脚本,执行:./uninstall.sh 按提示输入当前模式序号,即可删除,1.4之前版本请自行备份好数据库,网站文件等不会删除。
可选5,(以下几个脚本在安装包tools目录下)执行:./reset_mysql_root_password.sh 可重置MySQL/MariaDB的root密码。
可选6,执行:./check502.sh 可检测php-fpm是否挂掉,502报错时重启,配合crontab使用。
可选7,执行:./cut_nginx_logs.sh 日志切割脚本。
可选8,执行:./remove_disable_function.sh 运行此脚本可删掉禁用函数。
可选9,执行:./remove_open_basedir_restriction.sh 防跨目录移除工具。

如何使用军哥LNMP一键包?

LNMP添加、删除虚拟主机及伪静态使用教程

1、LNMP添加虚拟主机

一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问。
本文为教程适合LNMP 1.2+,各个版本的添加过程基本类似,按提示操作即可。1.4版+添加了SSL选项可以选择Letsencrypt和自备SSL证书,多PHP版本选择等功能。1.3版增加了FTP和数据库的创建等。LNMP 1.4+的防跨目录同时在网站根目录.user.ini和fastcgi.conf中进行管控,移除防跨目录设置方法。

虚拟主机管理基本命令介绍:lnmp vhost {add|list|del}

由于本页面主要是针对之前已经熟悉使用lnmp的小伙伴,所以我们默认这些命令大家都已经熟悉。这里就不过多展开。

2、LNMP虚拟主机伪静态设置

LNMPA或LAMP可以直接使用网站根目录下放.htaccess 来设置伪静态规则(具体规则可以去程序官网网站找google百度),但是在LNMP下,需要使用Nginx伪静态规则。
伪静态可以随时添加或删除,如果添加完虚拟主机后忘记或没有添加伪静态,可以通过修改配置文件来添加伪静态。
虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

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

lnmp安装后自带的伪静态文件名称后面带2的是二级目录的伪静态,可以根据自己需求修改里面二级目录的名称或复制为其他名字后include到虚拟主机配置文件中。

在root /home/wwwroot/www.xxx.com;这一行下面添加:
include rewrite/wordpress.conf;
上面的rewrite/wordpress.conf为伪静态文件,如果之前lnmp vhost add时选择错误直接在原来基础上修改就可以。

如需要其他伪静态文件自己创建个 abc.conf 名字随意并上传到/usr/local/nginx/conf/rewrite 下面并include rewrite/abc.conf; 加完保存,执行:/etc/init.d/nginx restart 重启生效,如果报错可能是添加有误或伪静态规则有误。

如果还没创建虚拟主机也可以文件自己创建个 abc.conf 的伪静态文件写好伪静态规则并上传到/usr/local/nginx/conf/rewrite 下,在lnmp vhost add 添加虚拟主机时可以直接在选择伪静态该步骤时直接输入abc即可选择使用自己上传的abc.conf 这个伪静态文件。

3、上传网站程序

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

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

为了安全可以将一些不需要PHP运行的上传文件之类的目录去掉执行权限,参考:http://www.vpser.net/security/lnmp-remove-nginx-php-execute.html

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

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

5、查看所有虚拟主机和删除虚拟主机

执行: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一键包状态管理命令

一、LNMP状态管理命令

LNMP 1.2+状态管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 1.2+各个程序状态管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
LNMP 1.1状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached {start|stop|restart}
PHP-FPM状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd状态管理: /etc/init.d/proftpd {start|stop|restart|reload}
Redis状态管理: /etc/init.d/redis {start|stop|restart|kill}
多PHP版本状态管理:/etc/init.d/php-fpm5.5 {start|stop|quit|restart|reload|logrotate} 前面5.5为对应的PHP版本,其他版本自行替换。
如重启LNMP,1.2+输入命令:lnmp restart 即可;单独重启mysql:/etc/init.d/mysql restart 也可以 lnmp mysql restart ,两个是一样的。

二、LNMPA状态管理命令:

LNMPA 1.2+状态管理: lnmp {start|stop|reload|restart|kill|status}
LNMPA 1.2+各个程序状态管理: lnmp {httpd|mysql|mariadb|pureftpd} {start|stop|reload|restart|kill|status}
LNMPA1.1状态管理: /root/lnmpa {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached {start|stop|restart}
PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd状态管理: /etc/init.d/proftpd {start|stop|restart|reload}
Apache状态管理:/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status}

三、LAMP状态管理命令:

LAMP 1.2+状态管理: lnmp {start|stop|reload|restart|kill|status}
LAMP 1.2+各个程序状态管理: lnmp {httpd|mysql|mariadb|pureftpd} {start|stop|reload|restart|kill|status}

LNMP默认配置文件

1、默认网站(虚拟主机)

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

2、LNMP相关软件安装目录

Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
MariaDB 目录 : /usr/local/mariadb/
MariaDB数据库所在目录:/usr/local/mariadb/var/
PHP目录 : /usr/local/php/
多PHP版本目录 : /usr/local/php5.5/ 其他版本前面5.5的版本号换成其他即可
PHPMyAdmin目录 : 0.9版本为/home/wwwroot/phpmyadmin/ 1.0及以后版本为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版本为 /home/wwwroot/ 1.0及以后版本为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/
Redis 目录:/usr/local/redis/

3、LNMP相关配置文件位置

Nginx主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf 1.3及更高版本:/usr/local/pureftpd/etc/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf 1.2及之前版本为/usr/local/proftpd/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf
Redis 配置文件:/usr/local/redis/etc/redis.conf

4、LNMPA相关目录文件位置

Apache目录:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/
Apache默认虚拟主机配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf
虚拟主机配置文件名称:/usr/local/apache/conf/vhost/域名.conf

lnmp升级nginx、php和MySQL/MariaDB

如果目前运行环境没什么问题,不建议直接运行新版进行覆盖,覆盖升级可能会存在问题,也可能会导致数据丢失。如想用新版可以备份数据后./uninstall.sh
后重新下载新版安装,或直接rebuild重装系统后安装新版,前提都是备份数据!!

1、Nginx升级脚本

执行:./upgrade.sh nginx 按提示输入版本号后回车(访问 http://nginx.org/en/download.html 可查找nginx的最新版本号和以往旧版本号。如:1.18.0 ),再次回车确认即可开始升级Nginx。如要升级到1.9.5或更高版本必须使用v1.3或更高版本(建议用最新版本)里面的升级脚本。Nginx升级为平滑升级,升级过程不影响nginx的运行。
另外如需添加其他模块可以编辑lnmp.conf 配置文件,在 Nginx_Modules_Options 的引号里加编译参数(官方模块直接写编译参数,第三方模块的话是--add-module=/第三方模块源码目录,第三方模块必须在升级前提前下载好)。
lnmp 1.2版修改include/upgrade_nginx.sh文件
在Nginx_Modules_Arguments="" 参数的双引号里添加需要的其他模块,多个模块参数空格隔开,然后再运行升级即可。
如升级失败,需恢复将 /usr/local/nginx/sbin/nginx.日期 的文件重命名为nginx ,然后再启动nginx即可。

2、MySQL升级脚本

虽然脚本会备份数据,但依然建议先自行备份!
执行:./upgrade.sh mysql 需要先输入MySQL root密码进行验证,验证不通过将无法进行升级,验证通过后可以到http://dev.mysql.com/downloads/mysql/ 获取MySQL的版本号,输入后回车确认,如要启用Innodb,输入y,不确定的话也可以输入输入y 回车确认,再次回车确认即可开始升级。会在/root 目录下生成mysql_upgrade日期.log的日志文件,供出错时排查。
如升级失败恢复:(1.4及更高版本)将/usr/local/oldmysql日期目录下面的init.d.mysql.bak.日期的文件拷贝到/etc/init.d/目录下并重命名为mysql及将my.cnf.bak.日期拷贝到/etc/目录下并重命名为 my.cnf,并将/usr/local/oldmysql日期目录重命名为mysql即可恢复mysql。(下面MySQL升级至MariaDB及升级MariaDB一样)
(1.3及以下版本)将/etc/下的my.conf.bak.日期的配置文件重命名为my.cnf和/etc/init.d/下的mysql.bak.日期重命名为mysql,同时将/usr/local/下的oldmysql日期目录重命名为mysql即可恢复。

3、MySQL升级至MariaDB脚本

MariaDB是MySQL的一个分支,主要由开源社区在维护。MariaDB兼容MySQL,由MySQL创始人主导开发。依然建议先自行备份!
执行:./upgrade.sh m2m 需要先输入MySQL root密码进行验证,验证不通过将无法进行升级,验证通过后可以到https://downloads.mariadb.org/ 获取MariaDB的版本号,输入后回车确认,如要启用Innodb,输入y,不确定的话也可以输入输入y 回车确认,再次回车确认即可开始升级。会在/root 目录下生产mysql2mariadb_upgrade日期.log的日志文件,供出错时排查。
如升级失败恢复:(1.4及更高版本)将/usr/local/mysql2mariadb日期目录下面的init.d.mysql2mariadb.bak.日期的文件拷贝到/etc/init.d/目录下并重命名为mysql及将my.cnf.mysql2mariadbbak.日期拷贝到/etc/目录下并重命名为 my.cnf,并将/usr/local/下的mysql2mariadb日期目录重命名为mysql即可恢复mysql。
(1.3及以下版本)将/etc/下的my.conf.bak.日期的配置文件重命名为my.cnf和/etc/init.d/下的mariadb.bak.日期重命名为mariadb,同时将/usr/local/下的oldmariadb日期目录重命名为mariadb即可恢复。

4、MariaDB升级脚本

依然建议先自行备份!
执行:./upgrade.sh mariadb 需要先输入MariaDB root密码进行验证,验证不通过将无法进行升级,验证通过后可以到https://downloads.mariadb.org/ 获取MariaDB的版本号,输入后回车确认,如要启用Innodb,输入y,不确定的话也可以输入输入y 回车确认,再次回车确认即可开始升级。会在/root 目录下生产mariadb_upgrade日期.log的日志文件,供出错时排查。
如升级失败恢复:(1.4及更高版本)将/usr/local/oldmariadb日期目录下面的init.d.mariadb.bak.日期的文件拷贝到/etc/init.d/目录下并重命名为mariadb及将my.cnf.bak.日期拷贝到/etc/目录下并重命名为 my.cnf,并将/usr/local/下的oldmariadb日期目录重命名为mariadb即可恢复mariadb。
(1.3及以下版本)将/etc/下的my.conf.bak.日期的配置文件重命名为my.cnf和/etc/init.d/下的mariadb.bak.日期重命名为mariadb,同时将/usr/local/下的oldmariadb日期目录重命名为mariadb即可恢复。

5、LNMP PHP升级脚本

升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息。v1.3及以后版本大部分情况下也可以进行降级操作。
执行:./upgrade.sh php 到http://www.php.net/downloads.php 获取版本号,输入版本号,如5.3.28 回车,再次回车确认即可开始升级。
如需要编译其他参数可以,lnmp 1.3及以后版本版可以修改lnmp.conf配置文件里的 PHP_Modules_Options 参数的引号里加其他需要的参数。
lnmp 1.2版修改include/upgrade_php.sh文件
在PHP_Modules_Arguments="" 参数的双引号里添加需要的其他模块,多个模块参数空格隔开,然后再运行升级即可。
升级完PHP如果phpmyadmin可能会无法使用,需要升级phpmyadmin至对于php和mysql版本的phpmyadmin版本。
如果升级失败可下载并压缩 /root/upgrade_lnmp_php日期.log 日志去https://bbs.lnmp.com 论坛进行反馈。
如果要恢复原PHP,将 /usr/local/ 下 oldphp日志 的目录重命名为 php 并,将/usr/local/oldphp日期/init.d.php-fpm.bak.日期 的文件拷贝到/etc/init.d/ 目录下重命名为 php-fpm 即可恢复。

6、LNMPA/LAMP PHP升级脚本

升级PHP前,请确认你的网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本,具体可以去你使用的PHP程序的官网查询相关版本支持信息。
执行:./upgrade.sh phpa 到http://www.php.net/downloads.php 获取版本号,输入版本号,如5.3.28 回车,再次回车确认即可开始升级。
升级完PHP如果phpmyadmin可能会无法使用,需要升级phpmyadmin至对于php和mysql版本的phpmyadmin版本。

7、PHPMyAdmin升级脚本

升降级前建议去https://www.phpmyadmin.net/downloads/ 查看PHPMyAdmin版本号兵确认与PHP和MySQL的兼容性。
执行:./upgrade.sh phpmyadmin 输入PHPMyAdmin版本号,回车确认,再次回车确认即可自动完成升级。

其它设置与管理

一、防跨目录设置

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或更高版本也可以直接使用lnmp安装包 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参数进行设置。如果不需要防跨目录设置可以在 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一键安装包

在lnmp安装包目录下执行:./uninstall.sh 按提示选择当前环境类型,回车确认,会删除lnmp相关程序组件,网站文件会保留,数据库目录会另外备份到 /root 目录下,如有另外需要保存的文件请在卸载前备份。

军哥LNMP一键安装包替代产品

题外话,虽然军哥的老版本运行个几年也没有啥问题,至今作为生产环境也没啥大事,但是长期得不到有效的更新或许也会让一部分小伙伴想投奔其它的产品。这里我挑了几个国内外常见的一键包和面板,部分也有黑历史,酌情选择。