在CentOS系统中,实现LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境的自动化主要依赖Shell脚本封装和第三方一键安装工具,两者均通过标准化流程减少手动操作,提升部署效率。以下是具体实现方式及关键步骤:
Shell脚本是实现LNMP自动化的基础方式,通过编写脚本封装依赖安装、软件下载、配置修改、服务管理等步骤,实现“一键式”部署。
一个完整的LNMP自动化脚本需包含以下关键环节:
gcc
、make
)及库文件(如pcre-devel
、openssl-devel
);yum
)或源码编译安装Nginx、MySQL/MariaDB、PHP;systemctl enable
);firewalld
)放行HTTP(80)、HTTPS(443)端口,或通过mysql_secure_installation
强化MySQL安全。以下是一个简化的Shell脚本示例,展示核心逻辑:
#!/bin/bash
# LNMP自动化部署脚本(CentOS 7/8适用)
# 1. 检查root权限
if [ "$(id -u)" != "0" ]; then
echo "错误:必须使用root用户运行此脚本!"
exit 1
fi
# 2. 安装依赖
install_dependencies() {
echo "正在安装系统依赖..."
yum install -y epel-release wget gcc make cmake openssl-devel pcre-devel zlib-devel \
libxml2-devel libjpeg-devel libpng-devel freetype-devel
yum groupinstall -y "Development Tools"
}
# 3. 安装Nginx
install_nginx() {
echo "正在安装Nginx..."
yum install -y nginx
systemctl enable nginx
systemctl start nginx
}
# 4. 安装MySQL(MariaDB)
install_mysql() {
echo "正在安装MariaDB..."
yum install -y mariadb-server mariadb
systemctl enable mariadb
systemctl start mariadb
# 安全设置
TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
mysql_secure_installation <<EOF
$TEMP_PASSWORD
y
y
y
y
y
EOF
}
# 5. 安装PHP
install_php() {
echo "正在安装PHP 8.2..."
yum install -y yum-utils
yum-config-manager --enable remi-php82
yum install -y php php-fpm php-mysqlnd php-opcache php-gd
systemctl enable php-fpm
systemctl start php-fpm
# 配置Nginx支持PHP
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html;
location / {
try_files \$uri \$uri/ =404;
}
location ~ \.php\$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
}
# 6. 执行主流程
install_dependencies
install_nginx
install_mysql
install_php
echo "LNMP环境部署完成!"
NGINX_VERSION
、PHP_VERSION
)支持自定义软件版本;set -e
(脚本出错立即退出)和trap
(捕获错误并记录日志);./install.sh > install.log 2>&1
),便于排查问题;第三方工具(如官方LNMP套件、Yum仓库预编译包)封装了更完善的自动化流程,适合快速部署且稳定性更高。
官方提供的lnmp
套件是国内常用的自动化部署工具,支持CentOS、Ubuntu等系统,特点包括:
lnmp start/stop/restart/status
等命令,方便管理服务。使用步骤:
wget http://soft.vpser.net/lnmp/lnmp1.4-full.tar.gz
tar zxf lnmp1.4-full.tar.gz
cd lnmp1.4-full
./install.sh lnmp # 选择“lnmp”表示安装Nginx+MySQL+PHP;选“lnmpa”表示增加Apache支持
通过配置EPEL、Remi等Yum仓库,可直接使用yum
命令安装预编译的LNMP组件,无需手动编译,适合追求快速部署的场景:
# 安装EPEL仓库
yum install -y epel-release
# 安装Nginx
yum install -y nginx
systemctl enable nginx
systemctl start nginx
# 安装MariaDB
yum install -y mariadb-server
systemctl enable mariadb
systemctl start mariadb
# 安装PHP(通过Remi仓库)
yum install -y yum-utils
yum-config-manager --enable remi-php82
yum install -y php php-fpm php-mysqlnd
systemctl enable php-fpm
systemctl start php-fpm
这种方式依赖仓库的更新,适合不需要特定版本的生产环境。
curl http://localhost
检查Nginx是否响应,通过mysql -uroot -p
验证MySQL是否可登录,通过phpinfo()
页面检查PHP是否正常;通过上述方法,可实现CentOS下LNMP环境的快速、标准化自动化部署,显著降低运维成本,提升部署效率。