LNMP 一键环境管理脚本(官方源版)

本脚本基于 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 等官方地址
  • 国内 / 海外双支持:
    • 自动探测服务器地域(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})

使用前提

  • 全新(或已清理)的 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

版本说明

软件支持版本默认
Nginx1.26.3(可改 include/version.sh 中 Nginx_Ver 升级到任意版本)1.26.3
MySQL5.1 / 5.5 / 5.6 / 5.7 / 8.0 / 8.45.7
MariaDB5.5 / 10.4 / 10.5 / 10.6 / 10.11—
PHP5.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 官方原版, 目录结构、配置文件、服务脚本均与原版保持一致。

Leave a Comment

Your email address will not be published.

*

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。