[toc]
当前两个主要应用的架构:LNMP和LAMP,都是指一组通常一起使用来运行动态网站或者服务器的自由软件名称。
LAMP的全称是:Linux + Apache + Mysql + PHP。
Supported Software
- Apache-2.4 (Include HTTP/2 module: nghttp2, mod_http2)
- Apache Additional Modules: mod_wsgi, mod_security, mod_jk
- MySQL-5.7, MySQL-8.0, MariaDB-10.2, MariaDB-10.3, MariaDB-10.4, MariaDB-10.5, MariaDB-10.6, MariaDB-10.7
- PHP-7.4, PHP-8.0, PHP-8.1
- PHP Additional extensions: Zend OPcache, ionCube Loader, PDFlib, APCu, imagick, libsodium, memcached, redis, mongodb, swoole, yaf, yar, msgpack, psr, phalcon, grpc, xdebug
- Other Software: OpenSSL, ImageMagick, Memcached, phpMyAdmin, Adminer, Redis, re2c, KodExplorer
Software Version
Apache & Additional Modules |
Version |
httpd |
2.4.53 |
apr |
1.7.0 |
apr-util |
1.6.1 |
nghttp2 |
1.47.0 |
openssl |
1.1.1n |
mod_wsgi |
4.9.0 |
mod_security2 |
2.9.5 |
mod_jk |
1.2.48 |
Database |
Version |
MySQL |
5.7.37, 8.0.28 |
MariaDB |
10.2.43, 10.3.34, 10.4.24, 10.5.15, 10.6.7, 10.7.3 |
PHP & Additional extensions |
Version |
PHP |
7.4.29, 8.0.18, 8.1.5 |
ionCube Loader |
11.0.1 |
PDFlib |
10.0.0 |
APCu extension |
5.1.21 |
gRPC extension |
1.44.0 |
ImageMagick |
7.1.0-30 |
imagick extension |
3.7.0 |
libsodium |
1.0.18 |
libsodium extension |
2.0.23 |
memcached |
1.6.6 |
libmemcached |
1.0.18 |
memcached extension |
3.1.5 |
re2c |
3.0 |
redis |
5.0.14 |
redis extension |
5.3.7 |
mongodb extension |
1.12.0 |
swoole extension |
4.8.6 |
yaf extension |
3.3.4 |
yar extension |
2.2.1 |
msgpack extension |
2.1.2 |
psr extension |
1.2.0 |
phalcon extension |
4.1.2 |
xdebug extension |
3.1.3 |
Database Management Tools |
Version |
phpMyAdmin |
5.1.3 |
Adminer |
4.8.1 |
File Managerment Tool |
Version |
KodExplorer |
4.47 |
- If your server system: Amazon Linux 2/CentOS/Rocky Linux
yum -y install wget git
git clone https://github.com/teddysun/lamp.git
cd lamp
chmod 755 *.sh
./lamp.sh
- If your server system: Debian/Ubuntu
apt-get -y install wget git
git clone https://github.com/teddysun/lamp.git
cd lamp
chmod 755 *.sh
./lamp.sh
./lamp.sh -h
- Automation install mode example
./lamp.sh --apache_option 1 --apache_modules mod_wsgi,mod_security --db_option 1 --db_root_pwd teddysun.com --php_option 1 --php_extensions apcu,ioncube,imagick,redis,mongodb,libsodium,swoole --db_manage_modules phpmyadmin,adminer --kodexplorer_option 1
cd ~/lamp
git reset --hard // Resets the index and working tree
git pull // Get latest version first
chmod 755 *.sh
./upgrade.sh // Select one to upgrade
./upgrade.sh apache // Upgrade Apache
./upgrade.sh db // Upgrade MySQL or MariaDB
./upgrade.sh php // Upgrade PHP
./upgrade.sh phpmyadmin // Upgrade phpMyAdmin
./upgrade.sh adminer // Upgrade Adminer
- You must modify the config before run it
- Backup MySQL or MariaDB datebases, files and directories
- Backup file is encrypted with AES256-cbc with SHA1 message-digest (Depends on
openssl
command) (option)
- Auto transfer backup file to Google Drive (Depends on
rclone
command) (option)
- Auto transfer backup file to FTP server (Depends on
ftp
command) (option)
- Auto delete remote file from Google Drive or FTP server (option)
./backup.sh
./uninstall.sh
installationDefault Installation Location
Apache Location |
Path |
Install prefix |
/usr/local/apache |
Web root location |
/data/www/default |
Main configuration File |
/usr/local/apache/conf/httpd.conf |
Default virtual host conf |
/usr/local/apache/conf/vhost/default.conf |
Virtual host conf |
/usr/local/apache/conf/vhost/your_virtual_host.conf |
Virtual host SSL location |
/usr/local/apache/conf/ssl/your_virtual_host |
Virtual host location |
/data/www/your_virtual_host_names |
Virtual host log location |
/data/wwwlog/your_virtual_host_names |
phpMyAdmin Location |
Path |
Installation location |
/data/www/default/phpmyadmin |
Adminer Location |
Path |
Installation location |
/data/www/default/adminer.php |
KodExplorer Location |
Path |
Installation location |
/data/www/default/kod |
PHP Location |
Path |
Install prefix |
/usr/local/php |
Configuration file |
/usr/local/php/etc/php.ini |
ini additional location |
/usr/local/php/php.d |
MySQL Location |
Path |
Install prefix |
/usr/local/mysql |
Default data location |
/usr/local/mysql/data |
my.cnf configuration File |
/etc/my.cnf |
MariaDB Location |
Path |
Install prefix |
/usr/local/mariadb |
Default data location |
/usr/local/mariadb/data |
my.cnf configuration file |
/etc/my.cnf |
Process |
Command |
Apache |
/etc/init.d/httpd (start |
stop |
status |
restart) |
MySQL/MariaDB |
/etc/init.d/mysqld (start |
stop |
status |
restart) |
Memcached |
/etc/init.d/memcached (start |
stop |
restart) |
Redis-Server |
/etc/init.d/redis-server (start |
stop |
restart) |
Command |
Description |
lamp add |
Create a new Apache virtual host |
lamp del |
Delete a Apache virtual host |
lamp list |
List all of Apache virtual hosts |
lamp version |
Print version and exit |
LNMP的全称是:Linux + Nginx + Mysql + PHP/Perl/Python
LNMP一键安装包是什么?
LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP)生产环境的Shell程序。
LNMP一键安装包有哪些功能?
支持自定义Nginx、PHP编译参数及网站和数据库目录、支持生成LetseEcrypt证书、LNMP模式支持多PHP版本、支持单独安装Nginx/MySQL/MariaDB/Pureftpd服务器,同时提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常用缓存组件Redis/Xcache等的安装、重置MySQL root密码、502自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。
LNMP安装
安装前确认已经安装wget命令,如提示wget: command not found ,使用yum install wget
或 apt-get install wget
命令安装。 为防止掉线等情况,建议使用screen,可以先执行:screen -S lnmp 命令后,再执行LNMP安装命令: wget http://soft.vpser.net/lnmp/lnmp1.9beta.tar.gz -cO lnmp1.9beta.tar.gz && tar zxf lnmp1.9beta.tar.gz && cd lnmp1.9 && ./install.sh {lnmp|lnmpa|lamp}
如断线可使用screen -r lnmp
恢复。详细安装教程参考:https://lnmp.org/install.html
常用功能说明
以下操作需在lnmp安装包目录下执行,如lnmp1.9
自定义参数
lnmp.conf配置文件,可以修改lnmp.conf自定义下载服务器地址、网站/数据库目录及添加nginx模块和php编译参数;不论安装升级都会调用该文件里的设置(如果修改了默认的参数建议备份此文件);
FTP服务器
执行:./pureftpd.sh
安装,可使用 lnmp ftp {add|list|del}
进行管理。
升级脚本:
执行:./upgrade.sh
按提示进行选择 也可以直接带参数:./upgrade.sh {nginx|mysql|mariadb|php|phpa|m2m|phpmyadmin}
- 参数: nginx 可升级至任意Nginx版本。
- 参数: mysql 可升级至任意MySQL版本,MySQL升级风险较大,虽然会自动备份数据,依然建议自行再备份一下。
- 参数: mariadb 可升级已安装的Mariadb,虽然会自动备份数据,依然建议自行再备份一下。
- 参数: m2m 可从MySQL升级至Mariadb,虽然会自动备份数据,依然建议自行再备份一下。
- 参数: php 仅适用于LNMP,可升级至大部分PHP版本。
- 参数: phpa 可升级LNMPA/LAMP的PHP至大部分版本。
- 参数: mphp 多PHP版本升级工具,只支持7.2.x-7.2.x类似小版本升级,大版本直接新装即可;
- 参数: phpmyadmin 可升级phpMyadmin。
扩展插件
执行: ./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|opcache|redis|apcu|imagemagick|ioncube|exif|fileinfo|ldap|bz2|sodium|imap|swoole}
以下为扩展插件安装使用说明
缓存加速:
PHP组件/模块:
- 参数:exif 图片exif信息读取模块。
- 参数:fileinfo 文件MIME类型编码读取模块,安装要求至少有1GB以上内存,否则可能会安装失败。
- 参数:ldap LDAP扩展。
- 参数:bz2 bz2压缩扩展模块。
- 参数:imap imap模块。
- 参数:swoole PHP协程框架模块,第三方模块不支持通过lnmp.conf开启安装。
图像处理:
- imageMagick安装卸载执行:
./addons.sh {install|uninstall} imageMagick
imageMagick路径:/usr/local/imagemagick/bin/。
解密:
- IonCube安装执行:
./addons.sh {install|uninstall} ionCube
。
- Sodium加密库扩展模块安装/卸载执行:
./addons.sh {install|uninstall} sodium
,一般微信支付之类的需要使用,PHP 7.2以下版本不支持通过lnmp.conf开启安装。
其他常用脚本:
- 可选1,多PHP版本安装执行:
./install.sh mphp
可以安装多个PHP版本 ,只支持LNMP模式,lnmp vhost add时进行选择或使用时需要将nginx虚拟主机配置文件里的include enable-php.conf替换为 include enable-php5.6.conf 即可前面的5.6换成你刚才安装的PHP的大版本号5.* 或7.0之类的。
- 可选2,数据库安装执行:
./install.sh db
可以直接单独安装MySQL或MariaDB数据库。
- 可选3,Nginx安装执行:
./install.sh nginx
可以直接单独安装Nginx。 以下工具在lnmp安装包tools目录下可拷贝到其他目录下运行
- 可选4,执行:
./reset_mysql_root_password.sh
可重置MySQL/MariaDB的root密码。
- 可选5,执行:
./check502.sh
可检测php-fpm是否挂掉,502报错时重启,配合crontab使用。
- 可选6,执行:
./cut_nginx_logs.sh
日志切割脚本。
- 可选7,执行:
./remove_disable_function.sh
运行此脚本可删掉禁用函数。
无人值守安装
无人值守命令生成工具:https://lnmp.org/auto.html
变量名 |
变量值含义 |
LNMP_Auto |
启用无人值守自动安装 |
DBSelect |
数据库版本序号 |
DB_Root_Password |
数据库root密码(不可为空),不安装数据库时可不加该参数 |
InstallInnodb |
是否安装Innodb引擎,y 或 n ,不安装数据库时可不加该参数 |
PHPSelect |
PHP版本序号 |
SelectMalloc |
内存分配器版本序号 |
ApacheSelect |
Apache版本序号,仅LNMPA和LAMP模式需添加该参数 |
ServerAdmin |
管理员邮箱,仅LNMPA和LAMP模式需添加该参数 |
RHELRepo |
(非必选)设为 local 时,RHEL使用本地源,不设置源为163 centos源 |
CheckMirror |
(非必选)安装时不检查下载镜像,方便无网络安装 |
Bin |
(非必选)MySQL 8.0使用二进制方式安装,y 或 n,默认使用二进制方式安装 |
MySQL版本 |
对应序号 |
PHP版本 |
对应序号 |
内存分配器 |
对应序号 |
Apache版本 |
对应序号 |
MySQL 5.1 |
1 |
PHP 5.2 |
1 |
不安装 |
1 |
Apache 2.2 |
1 |
MySQL 5.5 |
2 |
PHP 5.3 |
2 |
Jemalloc |
2 |
Apache 2.4 |
2 |
MySQL 5.6 |
3 |
PHP 5.4 |
3 |
TCMalloc |
3 |
|
|
MySQL 5.7 |
4 |
PHP 5.5 |
4 |
|
|
|
|
MySQL 8.0 |
5 |
PHP 5.6 |
5 |
|
|
|
|
MariaDB 5.5 |
6 |
PHP 7.0 |
6 |
|
|
|
|
MariaDB 10.3 |
7 |
PHP 7.1 |
7 |
|
|
|
|
MariaDB 10.4 |
8 |
PHP 7.2 |
8 |
|
|
|
|
MariaDB 10.5 |
9 |
PHP 7.3 |
9 |
|
|
|
|
MariaDB 10.6 |
10 |
PHP 7.4 |
10 |
|
|
|
|
不安装数据库 |
0 |
PHP 8.0 |
11 |
|
|
|
|
|
|
PHP 8.1 |
12 |
|
|
|
|
- 以LNMP模式,默认选项安装MySQL 5.5、MySQL root密码设置为lnmp.org、启用InnoDB、PHP 5.6、不安装内存分配器为例,先执行(建议先运行screen),再下载解压lnmp安装包:
wget http://soft.vpser.net/lnmp/lnmp1.9beta.tar.gz -cO lnmp1.9beta.tar.gz && tar zxf lnmp1.9beta.tar.gz && cd lnmp1.9
然后设置无人值守参数并安装:
LNMP_Auto="y" DBSelect="2" DB_Root_Password="lnmp.org" InstallInnodb="y" PHPSelect="5" SelectMalloc="1" ./install.sh lnmp
(如果缺失参数的话还是会有要求选择缺失选项的提示)。
卸载
- 卸载LNMP、LNMPA或LAMP可执行:
./uninstall.sh
按提示选择即可卸载。
状态管理
- LNMP/LNMPA/LMAP状态管理:
lnmp {start|stop|reload|restart|kill|status}
- Nginx状态管理:
lnmp nginx或/etc/init.d/nginx {start|stop|reload|restart}
- MySQL状态管理:
lnmp mysql或/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
- MariaDB状态管理:
lnmp mariadb或/etc/init.d/mariadb {start|stop|restart|reload|force-reload|status}
- PHP-FPM状态管理:
lnmp php-fpm或/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
- PureFTPd状态管理:
lnmp pureftpd或/etc/init.d/pureftpd {start|stop|restart|kill|status}
- Apache状态管理:
lnmp httpd或/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status}
虚拟主机管理
- 添加:
lnmp vhost add
- 删除:
lnmp vhost del
- 列出:
lnmp vhost list
- 数据库管理:
lnmp database {add|list|edit|del}
- FTP用户管理:
lnmp ftp {add|list|edit|del|show}
- SSL添加:
lnmp ssl add
- 通配符/泛域名SSL添加:
lnmp dnsssl {ali|cf|dp|he|gd|aws|namecheap|namesilo}
需依赖域名dns api
相关图形界面
LNMP相关目录文件
目录位置
- Nginx:/usr/local/nginx/
- MySQL:/usr/local/mysql/
- MariaDB:/usr/local/mariadb/
- PHP:/usr/local/php/
- 多PHP目录:/usr/local/php5.6/ 版本号随安装版本不同而不同
- PHP扩展插件配置文件目录:/usr/local/php/conf.d/
- PHPMyAdmin:/home/wwwroot/default/phpmyadmin/
- 默认虚拟主机网站目录:/home/wwwroot/default/
- Nginx日志目录:/home/wwwlogs/
配置文件:
- Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
- MySQL/MariaDB配置文件:/etc/my.cnf
- PHP配置文件:/usr/local/php/etc/php.ini
- PHP-FPM配置文件:/usr/local/php/etc/php-fpm.conf
- PureFtpd配置文件:/usr/local/pureftpd/etc/pure-ftpd.conf
- Apache配置文件:/usr/local/apache/conf/httpd.conf
lnmp.conf 配置文件参数说明
参数名称 |
参数介绍 |
例子 |
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网站防火墙 |
Enable_Swap |
是否添加SWAP |
默认y,当内存不足时可提高编译安装成功概率 |
Enable_PHP_Exif |
是否添加PHP exif模块 |
默认n,更改为y即安装 |
Enable_PHP_Fileinfo |
是否添加PHP fileinfo模块 |
默认n,更改为y即安装,需1GB以上内存 |
Enable_PHP_Ldap |
是否添加PHP ldap模块 |
默认n,更改为y即安装 |
Enable_PHP_Bz2 |
是否添加PHP bz2模块 |
默认n,更改为y即安装 |
Enable_PHP_Sodium |
是否添加PHP sodium模块,PHP 7.2以下不支持lnmp.conf开启安装 |
默认n,更改为y即安装 |
Enable_PHP_Imap |
是否添加PHP imap模块 |
默认n,更改为y即安装 |