首页主机资讯LNMP如何实现自动部署

LNMP如何实现自动部署

时间2025-12-18 13:17:04发布访客分类主机资讯浏览1215
导读:LNMP自动部署实用方案 一、方案总览与选型 常见做法包括:使用Shell 一键脚本、集成安装脚本 oneinstack、Ansible 批量编排、Docker 容器化以及Terraform + User Data 云上自动初始化。下表给...

LNMP自动部署实用方案

一、方案总览与选型

  • 常见做法包括:使用Shell 一键脚本集成安装脚本 oneinstackAnsible 批量编排Docker 容器化以及Terraform + User Data 云上自动初始化。下表给出适用场景与要点:
方式 适用场景 核心优点 关键要点
Shell 一键脚本 单机快速交付 简单直观、可定制 版本锁定、幂等处理、错误处理与回滚
oneinstack 多版本/多组件选择 功能全、交互/自动均可 支持 Nginx/Tengine/OpenResty、多 PHP/DB 版本、SSL/备份
Ansible 批量/多环境 声明式、可复用、可审计 Playbook 管理、Idempotent、角色化
Docker 开发/测试/轻量生产 环境隔离、快速起停 多容器编排、数据卷持久化、网络与权限
Terraform 云上基础设施 + 初始化 IaC、可重复部署 User Data 执行安装脚本、与云资源联动

以上方案在实际工程中均被广泛采用,可按规模与运维成熟度选择或组合使用。

二、单机一键脚本思路与关键步骤

  • 准备与版本选择
    • 确认系统版本(如 CentOS 7/8Ubuntu 20.04/22.04),准备具备 root/sudo 权限的账号;选择 NginxMariaDB/MySQLPHP 的兼容版本。
  • 安装与启动 Nginx
    • 基于发行版仓库安装(如 yum/apt),启动并设置开机自启;验证:curl -I http://localhost 返回 200
  • 安装与初始化数据库
    • 安装 MariaDB(CentOS 7 常用)或 MySQL;执行安全初始化(设置 root 密码、移除匿名用户等)。
  • 安装 PHP 与 PHP-FPM
    • 使用官方或 Remi 仓库选择所需 PHP 版本(如 7.4/8.0/8.1/8.3),安装 php-fpm 与常用扩展(如 php-mysql、php-mbstring、php-xml、php-gd、php-opcache)。
  • 配置 Nginx 支持 PHP
    • 在 server 块中添加 .php 的 FastCGI 转发,典型为 fastcgi_pass 127.0.0.1:9000;设置 SCRIPT_FILENAME 为 $document_root$fastcgi_script_name
  • 验证与收尾
    • 创建 /usr/share/nginx/html/info.php(),访问验证;按需配置防火墙(如放行 80/443)、日志轮转与监控告警。

三、批量与云上自动化

  • Ansible 编排示例(节选)
    • 使用 apt/yum 安装 Nginx/MySQL/PHP-FPM,通过模板下发 Nginx 虚拟主机配置,notify 触发重启;集中管理多台主机、可版本化与审计。
  • Docker Compose 示例(开发/测试)
    • 以多容器方式启动 Nginx + PHP-FPM + MySQL,通过 volumes 挂载代码与数据,环境变量配置数据库口令与库名,快速拉起与销毁。
  • Terraform + User Data(云上自动初始化)
    • 定义云主机资源,在 user_data 中嵌入安装脚本(如 yum/apt 安装 Nginx/MySQL/PHP-FPM、启动服务、写入 info.php),实现实例创建即完成环境就绪。

四、一键脚本最小可用示例 CentOS 7

  • 使用说明
    • rootCentOS 7 执行;按需修改密码与版本;脚本包含基础错误处理与验证步骤。
  • 脚本内容
    • 保存为 lnmp_install.sh,执行:chmod +x lnmp_install.sh & & ./lnmp_install.sh
#!/usr/bin/env bash
set -Eeuo pipefail

# 可配置参数
DB_ROOT_PASS="${
DB_ROOT_PASS:-MyStrongPass123!}
"
PHP_VER="${
PHP_VER:-74}
"   # 74/80/81/83
NGINX_ROOT="/usr/share/nginx/html"
INFO_PHP="${
NGINX_ROOT}
    /info.php"

echo "[1/5] 安装 EPEL 与 Nginx"
yum install -y epel-release
yum install -y nginx
systemctl start nginx &
    &
 systemctl enable nginx
curl -I http://localhost | grep -q "200 OK" || {
     echo "Nginx 启动或访问异常";
     exit 1;
 }
    

echo "[2/5] 安装 MariaDB 并初始化"
yum install -y mariadb-server mariadb
systemctl start mariadb &
    &
     systemctl enable mariadb
mysql_secure_installation <
    <
EOF
y
${
DB_ROOT_PASS}

${
DB_ROOT_PASS}

y
y
y
y
EOF

echo "[3/5] 安装 PHP ${
PHP_VER}
 与常用扩展"
yum install -y yum-utils
yum install -y "http://rpms.remirepo.net/enterprise/remi-release-7.rpm"
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable "remi-php${
PHP_VER}
    "
yum install -y php php-fpm php-mysqlnd php-mbstring php-xml php-gd php-opcache

systemctl start php-fpm &
    &
     systemctl enable php-fpm

echo "[4/5] 配置 Nginx 支持 PHP"
cat >
    /etc/nginx/conf.d/default.conf <
    <
'EOF'
server {
    
    listen 80;
    
    server_name _;
    
    root /usr/share/nginx/html;
    
    index index.php index.html index.htm;

    location / {
    
        try_files $uri $uri/ /index.php?$query_string;

    }

    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
systemctl reload nginx

echo "[5/5] 创建 PHP 测试页并验证"
echo "<
    ?php phpinfo();
     ?>
    " >
 "$INFO_PHP"
curl -I http://localhost/info.php | grep -q "200 OK" || {
     echo "PHP 页面测试失败";
     exit 1;
 }


echo "LNMP 部署完成:Nginx + MariaDB + PHP ${
PHP_VER}
    "
echo "访问 http://服务器IP/info.php 验证"
  • 安全与优化建议
    • 使用 防火墙(firewalld/ufw)仅放行 80/443;为数据库与后台设置强口令最小权限;禁用不必要的 PHP 函数;开启 SELinux/AppArmor(如适用);配置 HTTPS/TLS(Let’s Encrypt/certbot);将 PHP 错误日志与 Nginx 访问/错误日志接入集中监控/告警

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: LNMP如何实现自动部署
本文地址: https://pptw.com/jishu/775025.html
LNMP如何提高访问速度 LNMP如何监控服务器

游客 回复需填写必要信息