本脚本基于 LNMP 官方安装包(lnmp2.2)改造合并而来。由于官方下载镜像 (soft.lnmp.com)已无法访问,本版将全部软件的源码改为直接使用官方地址, 同时保留与原 LNMP 完全一致的安装目录结构,并移除 Apache 支持(仅保留 Nginx + MySQL/MariaDB + PHP)。
特性
- 一键安装 / 卸载:合并为
lnmp_install.sh与lnmp_uninstall.sh两个入口。 - 移除 Apache:Web 服务器固定为 Nginx(已删除 LNMPA / LAMP 相关流程)。
- 官方源下载:
- Nginx →
nginx.org - PHP →
www.php.net(老版本自动回退museum.php.net) - MySQL →
cdn.mysql.com/archives;MariaDB →downloads.mariadb.org - 其他依赖 → GNU / GitHub Releases / SourceForge / pecl.php.net / curl.se 等官方地址
- Nginx →
- 国内 / 海外双支持:
- 自动探测服务器地域(
Get_Country),国内服务器优先使用国内镜像 (华为云 nginx 镜像、清华/阿里云 GNU 镜像等),海外服务器优先官方源。 - 系统源(yum/apt)在国内服务器自动切换为阿里云 / 中科大镜像(沿用原 LNMP 逻辑)。
- 如访问 GitHub 较慢,可在
lnmp.conf中设置GITHUB_MIRROR加速前缀。
- 自动探测服务器地域(
- 目录结构与原 LNMP 完全一致:
- Nginx:
/usr/local/nginx - PHP:
/usr/local/php - MySQL:
/usr/local/mysql;MariaDB:/usr/local/mariadb - 网站目录:
/home/wwwroot/default - 管理命令:
/bin/lnmp(lnmp {start|stop|reload|restart|status|vhost})
- Nginx:
使用前提
- 全新(或已清理)的 CentOS/RHEL/Rocky/Alma/Ubuntu/Debian 等主流 Linux 服务器。
- 必须使用 root 用户运行。
- 已安装
wget、curl(脚本会自动补齐)。
部署到服务器(GitLab 一键执行)
项目仓库:https://gitlab.wonderbyte.ai/publicproject/lnmp.git(公开仓库,clone 无需登录)
方式一:git clone(推荐,便于后续 git pull 更新)
# 以 root 登录服务器后执行
git clone https://gitlab.wonderbyte.ai/publicproject/lnmp.git /root/lnmp \
&& cd /root/lnmp \
&& bash lnmp_install.sh install
方式二:不装 git,直接下载归档包
curl -L https://gitlab.wonderbyte.ai/publicproject/lnmp/-/archive/main/lnmp-main.tar.gz \
| tar xz -C /root \
&& cd /root/lnmp-main \
&& bash lnmp_install.sh install
前置条件:服务器可访问外网,具备
curl/git、tar、root 权限;编译依赖由脚本自动补齐。
#精简版ubuntu24没有git等工具,可通过以下命令安装
sudo apt update
sudo apt install -y git vim curl wget unzip zip \
build-essential ca-certificates gnupg lsb-release后续更新
服务器同步更新:
# git clone 方式部署的服务器
cd /root/lnmp && git pull
# 归档方式部署的服务器(重新下载覆盖)
curl -L https://gitlab.wonderbyte.ai/publicproject/lnmp/-/archive/main/lnmp-main.tar.gz \
| tar xz -C /root && cd /root/lnmp-main
安装
# 进入脚本目录
cd lnmp2.2
# 1) 安装全部(Nginx + MySQL/MariaDB + PHP,交互式选择版本)
bash lnmp_install.sh install
# 2) 只安装指定服务
bash lnmp_install.sh install nginx # 只装 Nginx
bash lnmp_install.sh install mysql # 只装 MySQL/MariaDB
bash lnmp_install.sh install php # 只装 PHP
# 3) 安装指定扩展(addons)
bash lnmp_install.sh install addons redis
bash lnmp_install.sh install addons swoole
bash lnmp_install.sh install addons sodium
bash lnmp_install.sh install addons memcached
# 其它: opcache apcu imagemagick ioncube sg exif fileinfo ldap bz2 imap eaccelerator xcache
# 4) 查看支持的版本/扩展
bash lnmp_install.sh list
安装全部时,脚本会依次询问:数据库版本、PHP 版本、内存分配器,随后自动编译安装, 全程日志写入 /root/lnmp-install.log。
卸载
# 交互式卸载全部
bash lnmp_uninstall.sh
# 直接卸载全部(会自动备份数据库目录到 /root/databases_backup_时间戳)
bash lnmp_uninstall.sh all
# 卸载指定服务
bash lnmp_uninstall.sh nginx
bash lnmp_uninstall.sh mysql # 卸载 MySQL 或 MariaDB
bash lnmp_uninstall.sh php
# 卸载指定扩展
bash lnmp_uninstall.sh addons redis
bash lnmp_uninstall.sh addons swoole
版本说明
| 软件 | 支持版本 | 默认 |
|---|---|---|
| Nginx | 1.26.3(可改 include/version.sh 中 Nginx_Ver 升级到任意版本) | 1.26.3 |
| MySQL | 5.1 / 5.5 / 5.6 / 5.7 / 8.0 / 8.4 | 5.7 |
| MariaDB | 5.5 / 10.4 / 10.5 / 10.6 / 10.11 | — |
| PHP | 5.2 ~ 8.5(含 8.4.8 / 8.5.0) | 8.4.8 |
提示:较新的 PHP(7.4+)使用内置 opcache,全程官方源即可完成安装。 PHP 5.2~5.6 已停止维护,其所需的 Zend 加速器(ZendOptimizer/ZendGuardLoader) 等闭源组件没有官方直链,若需安装请在
lnmp.conf中配置LNMP_MIRROR, 否则脚本会跳过该加速器(PHP 本身仍可正常编译运行)。
配置(lnmp.conf)
# 国内访问 GitHub 慢时,可设置加速前缀(例如 https://ghfast.top/)
GITHUB_MIRROR=''
# 极少数无官方直链的组件(Zend 加速器、SourceGuardian、旧版 eAccelerator/XCache)
# 需要时指向一个可用的第三方镜像
LNMP_MIRROR=''
# 是否自动探测地域并使用国内镜像(y=是,n=全部官方源)
CheckMirror='y'
# 数据库目录 / 网站目录(与原 LNMP 一致,一般无需修改)
MySQL_Data_Dir='/usr/local/mysql/var'
MariaDB_Data_Dir='/usr/local/mariadb/var'
Default_Website_Dir='/home/wwwroot/default'
# Nginx / PHP 附加模块、可选功能开关
Nginx_Modules_Options=''
PHP_Modules_Options=''
Enable_Nginx_Openssl='y'
Enable_Nginx_Lua='n'
Enable_Ngx_FancyIndex='n'
Enable_Swap='y'
Enable_PHP_Exif='n'
Enable_PHP_Fileinfo='n'
Enable_PHP_Ldap='n'
Enable_PHP_Bz2='n'
Enable_PHP_Sodium='n'
Enable_PHP_Imap='n'
目录结构(与原 LNMP 保持一致)
/usr/local/nginx # Nginx
/usr/local/php # PHP
/usr/local/mysql # MySQL(或 /usr/local/mariadb)
/usr/local/redis # Redis(安装 addons redis 后)
/usr/local/zend # Zend 加速器(可选)
/etc/init.d/nginx # 服务脚本(systemd 同步生成 *.service)
/etc/init.d/php-fpm
/etc/init.d/mysql
/home/wwwroot/default # 默认网站目录
/home/wwwlogs # 日志目录
/bin/lnmp # LNMP 管理命令
文件说明
| 文件 | 说明 |
|---|---|
lnmp_install.sh | 一键安装入口(install / install 服务 / install addons 扩展 / list) |
lnmp_uninstall.sh | 一键卸载入口(all / 服务 / 扩展) |
lnmp.conf | 配置文件 |
include/sources.sh | 官方源 + 国内镜像地址解析(核心新增文件) |
include/addons_common.sh | 扩展安装/卸载公共函数 |
include/*.sh | 各软件编译安装逻辑(复用原 LNMP,下载地址已改为官方源) |
conf/p.php | 内置环境探针(替代原镜像上的 p.tar.gz) |
常见问题(FAQ)
1. 访问 IP 无响应,浏览器默认跳到 https
现象:浏览器输入 IP 访问时页面转圈/提示连接被拒,但本机自测正常:
curl -I http://127.0.0.1 # 返回 HTTP/1.1 200,说明 Nginx 正常
ss -nltp | grep ':80' # 能看到 0.0.0.0:80 监听
原因:Chrome/Edge/Firefox 等现代浏览器默认开启「HTTPS-First」,输入裸 IP 或域名时会 自动先尝试 https://。此时服务器只装了 Nginx(仅监听 80、未配置 SSL 证书),所以 https 连接失败。
解决:
- 临时:访问时手动带上协议 ——
http://你的IP/ - 长期:绑定域名并用
lnmp vhost add一键签发 Let’s Encrypt 证书,让 443 也正常提供 服务(Let’s Encrypt 不支持纯 IP 签发,必须使用域名)。
2. 服务器端口没放行(阿里云等)
- ECS:控制台 → 安全组 → 入方向 → 添加规则,放行 TCP
80/80、443/443, 授权对象0.0.0.0/0;确认规则加在这台实例实际绑定的安全组上。 - 轻量应用服务器:放行端口在控制台的「防火墙」页面(不是安全组)。
- 脚本安装时已自动在系统 iptables 里放行 80/443,可
iptables -L -n | grep -E '80|443'复核。
备注
- 已删除原项目的 Apache/Caddy、多版本 PHP(mphp)、升级脚本、PureFTPd、tools 等遗留文件, 仅保留 Nginx + MySQL/MariaDB + PHP 以及扩展安装/卸载所需文件。
- 本脚本仅做源码的下载源替换与入口合并,编译逻辑沿用 LNMP 官方原版, 目录结构、配置文件、服务脚本均与原版保持一致。
