lnmp 一键安装环境会删除已经安装的 MySQL 问题

上周同事让我把项目 demo 部署到一台内网测试机上,测试机是 CentOS 环境,而且已经有 MySQL 在运行,那我只需要安装 Nginx + PHP 即可,我为了方便想当然的执行了 lnmp 一键安装命令

1
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp

我以为在选择 MySQL 版本的时候,选择不安装即可,悲剧出现了,随后就发现测试机上的 MySQL 被卸载了,好在 MySQL 的数据还在,同事重新安装 MySQL 帮我恢复了数据。

因为安装环境期间,没有执行任何其它操作,所以基本可以断定 lnmp 安装环境导致的问题,事后我开始查看 lnmp 代码,找到了如下代码

1
2
3
4
5
6
7
8
9
10
if [ "$PM" = "yum" ]; then
CentOS_InstallNTP
CentOS_RemoveAMP
CentOS_Dependent
elif [ "$PM" = "apt" ]; then
Deb_InstallNTP
Xen_Hwcap_Setting
Deb_RemoveAMP
Deb_Dependent
fi

其中 CentOS_RemoveAMP 如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CentOS_RemoveAMP()
{
Echo_Blue "[-] Yum remove packages..."
rpm -qa|grep httpd
rpm -e httpd httpd-tools --nodeps
rpm -qa|grep mysql
rpm -e mysql mysql-libs --nodeps
rpm -qa|grep php
rpm -e php-mysql php-cli php-gd php-common php --nodeps
Remove_Error_Libcurl
yum -y remove httpd*
yum -y remove mysql-server mysql mysql-libs
yum -y remove php*
yum clean all
}

也就是说 lnmp 一键安装方式,前提需要是一个完全干净的环境,否则也会被卸载,这是我没有预料到的。