当前位置: 首页 > news >正文

自动化一键部署 LNMP 环境

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

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/bashecho "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/bashecho "Hello LNMP"echo ">>> 安装 Nginx..."
yum install -y epel-release
yum install -y nginxecho ">>> 启动并设置 Nginx 开机自启..."
systemctl start nginx
systemctl enable nginxecho ">>> 检查 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 mariadbecho ">>> 启动并设置 MariaDB 开机自启..."
systemctl start mariadb
systemctl enable mariadbecho ">>> 初始化 MariaDB(设置 root 密码并开启安全选项)..."
DB_ROOT_PASS="123456"  # 这里可以换成你想要的密码
mysql_secure_installation <<EOFy
$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-cliecho ">>> 启动并设置 PHP-FPM 开机自启..."
systemctl start php-fpm
systemctl enable php-fpmecho ">>> 配置 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;}
}
EOFecho ">>> 创建 PHP 测试页面..."
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.phpecho ">>> 重新加载 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 --reloadecho ">>> 检测 LNMP 是否正常工作..."
sleep 3
if curl -s -I http://localhost | grep -q "200 OK"; thenecho "✅ LNMP 部署成功!可以访问 http://你的服务器IP"
elseecho "❌ 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 脚本参数处理与流程控制

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

http://www.dtcms.com/a/322256.html

相关文章:

  • NodeJs学习日志(3):express,sequelize进行增删改查(CRUD)
  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • java之父-新特性
  • 数据结构(一)顺序表
  • 【JVM】深入解析Java虚拟机
  • Ubuntu下搭建LVGL模拟器
  • react之React.cloneElement()
  • 深入剖析C++ STL原理:打开高效编程大门的钥匙
  • [每周一更]-(第155期):深入Go反射机制:架构师视角下的动态力量与工程智慧
  • Web3: DeFi借贷的安全基石, 了解喂价与清算机制的原理与重要性
  • Typora上传图片保存到assets目录下
  • ARM CPU 安全更新:Training Solo(关于 Spectre-v2 攻击中域隔离机制的局限性)
  • 学习:JS[8]本地存储+正则表达式
  • Matlab系列(004) 一 Matlab分析正态分布(高斯分布)
  • 《C++进阶之继承多态》【普通类/模板类的继承 + 父类子类的转换 + 继承的作用域 + 子类的默认成员函数】
  • pgAdmin 仪表盘的system部分不能显示,报SYSTEM_STATS扩展没有安装
  • git命令详解
  • TensorFlow深度学习实战(29)——强化学习(Reinforcement learning,RL)
  • elementui input无法输入问题
  • JAVA基础-使用BIO / NIO实现聊天室功能
  • Day 36: 复习
  • 康养休闲旅游服务虚拟仿真实训室:助力康养人才培养的创新引擎
  • 《算法导论》第 14 章 - 数据结构的扩张
  • SupChains团队:Animalcare公司供应链需求预测模型案例分享(十三)
  • [激光原理与应用-203]:光学器件 - 增益晶体 - 增益晶体的使用方法
  • GitCode 疑难问题诊疗:让你的开发流程重回正轨
  • 2025年渗透测试面试题总结-10(题目+回答)
  • C语言:构造类型
  • 【Python 语法糖小火锅 · 第 5 涮 · 完结】
  • 使用小诺框架报错:NoResourceFoundException: No static resource exercise/tag/page.