自动化一键部署 LNMP 环境

发布于:2025-08-10 ⋅ 阅读:(13) ⋅ 点赞:(0)

第一步:准备环境 & 准备脚本文件

1. 你在 CentOS 7 的服务器/虚拟机里打开终端,确认你有 root 权限或者能用 sudo

输入下面命令确认你的系统版本:

cat /etc/centos-release

你应该看到类似:

CentOS Linux release 7.9.2009 (Core)


2. 用 vimnano 创建脚本文件

假设文件名叫 lnmp_install.sh

vim lnmp_install.sh

打开后,先不要急着输入内容,咱们先做个简单的测试,确保能保存和运行。

i 进入编辑模式,写入:

#!/bin/bash

echo "Hello LNMP"

然后按 Esc,输入 :wq 保存并退出。


3. 给予脚本执行权限

chmod +x lnmp_install.sh

4. 运行脚本试试

./lnmp_install.sh

你应该看到输出:

Hello LNMP

第二部. 编辑脚本,加入安装 Nginx 的代码

打开刚才的脚本:

vim lnmp_install.sh

i 进入编辑模式,把原来的内容改成下面这样(我保留了 Hello LNMP,方便你确认脚本执行流程):

#!/bin/bash

echo "Hello LNMP"

echo ">>> 安装 Nginx..."
yum install -y epel-release
yum install -y nginx

echo ">>> 启动并设置 Nginx 开机自启..."
systemctl start nginx
systemctl enable nginx

echo ">>> 检查 Nginx 状态..."
systemctl status nginx --no-pager

2. 保存并退出

Esc,输入 :wq 回车。


3. 运行脚本

./lnmp_install.sh

4. 验证 Nginx 是否成功安装

curl -I http://localhost

HTTP/1.1 200 OK Server: nginx/1.20.1 ...

或者你也可以在浏览器访问你的服务器 IP,看是否出现 Nginx 默认欢迎页。


第三步:安装 MySQL(MariaDB 版本)

CentOS 7 默认用 MariaDB 代替 MySQL,指令兼容,而且安装更简单。


1. 编辑脚本

打开脚本:

vim lnmp_install.sh

在安装 Nginx 代码的 后面,加上这段 MariaDB 安装和初始化的内容:

echo ">>> 安装 MariaDB(MySQL兼容版)..."
yum install -y mariadb-server mariadb

echo ">>> 启动并设置 MariaDB 开机自启..."
systemctl start mariadb
systemctl enable mariadb

echo ">>> 初始化 MariaDB(设置 root 密码并开启安全选项)..."
DB_ROOT_PASS="123456"  # 这里可以换成你想要的密码
mysql_secure_installation <<EOF

y
$DB_ROOT_PASS
$DB_ROOT_PASS
y
y
y
y
EOF

2. 保存并退出

Esc:wq → 回车。


3. 运行脚本(测试 MariaDB 部分)

./lnmp_install.sh 

4. 验证 MySQL(MariaDB)是否安装成功


mysql -uroot -p

输入你刚才脚本里设定的密码(默认 123456),如果能看到:

Welcome to the MariaDB monitor. Commands end with ; or \g.

说明数据库安装成功。


第四步:安装 PHP 并配置 Nginx 支持 PHP

1. 编辑脚本

继续在 lnmp_install.sh 里,MariaDB 安装的后面加上 PHP 部分代码:

echo ">>> 安装 PHP 及扩展..."
# 安装 Remi 仓库(支持不同 PHP 版本)
yum install -y yum-utils
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

# 启用 PHP 7.4 源(可以改成 72 / 80 / 81 等版本)
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74

# 安装 PHP-FPM 和常用扩展
yum install -y php php-fpm php-mysql php-mbstring php-xml php-gd php-opcache php-cli

echo ">>> 启动并设置 PHP-FPM 开机自启..."
systemctl start php-fpm
systemctl enable php-fpm

echo ">>> 配置 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 index.htm;

    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

echo ">>> 创建 PHP 测试页面..."
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.php

echo ">>> 重新加载 Nginx..."
systemctl reload nginx

2. 保存并退出

Esc:wq → 回车。


3. 运行脚本

./lnmp_install.sh

4. 验证 LNMP 是否成功

方式 1:命令行验证

curl -I http://localhost

返回 200 OK 表示页面存在。

方式 2:浏览器访问

用浏览器访问服务器 IP,例如:

http://你的服务器IP

如果看到 PHP 信息页面(phpinfo),说明 LNMP 完全 OK。

第五步:加上防火墙自动放行端口 + 自动检测 LNMP 页面可访问

1. 编辑脚本

打开你的 lnmp_install.sh

vim lnmp_install.sh

在脚本 最后一部分(Nginx reload 之后) 加上这段代码:

cho ">>> 配置防火墙,放行 80 和 443 端口..."
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

echo ">>> 检测 LNMP 是否正常工作..."
sleep 3
if curl -s -I http://localhost | grep -q "200 OK"; then
    echo "✅ LNMP 部署成功!可以访问 http://你的服务器IP"
else
    echo "❌ LNMP 部署失败,请检查 Nginx/PHP/MySQL 日志"
fi

2. 保存退出

Esc:wq → 回车。


3. 再运行一遍脚本(测试自检功能)

./lnmp_install.sh
  • 它会自动放行 80、443 端口

  • 等 3 秒后用 curl 请求首页

  • 成功则输出 ✅ LNMP 部署成功!


4. 浏览器访问测试

在浏览器访问:

http://你的服务器IP

如果出现 PHP 信息页面(phpinfo),LNMP 就已经完全跑起来了。
 

项目名称:专业 LNMP 一键部署自动化脚本
项目描述:
基于 CentOS 7,使用 Shell 脚本实现 Nginx、MariaDB(MySQL 兼容)、PHP 环境的一键自动化安装和配置。
支持参数化输入 PHP 版本和数据库密码,自动检测并释放端口冲突,防火墙自动放行 HTTP/HTTPS 端口,实现全流程无人值守部署。

技术栈:
Shell 脚本、CentOS 7、Nginx、MariaDB、PHP-FPM、firewalld、systemctl、自动化运维

项目亮点:

通过参数化设计,支持用户自定义 PHP 版本及 MySQL 密码,提高脚本适用性和灵活性

实现端口占用自动检测和释放,避免服务启动冲突,提升部署稳定性

自动配置防火墙放行80/443端口,保证服务外部访问

部署后自动测试服务状态,输出彩色日志,提升运维体验

项目脚本可在多台机器快速复用,极大节省环境搭建时间

提升运维自动化能力,适用于开发测试和生产环境部署

收获与反思:

深入理解 Linux 服务管理与防火墙配置

掌握 Shell 脚本参数处理与流程控制

实践自动化部署思路,提高了实际动手能力和问题排查能力


网站公告

今日签到

点亮在社区的每一天
去签到