一键部署 LNMP 环境的 Shell 脚本

LNMP(Linux, Nginx, MySQL, PHP)是一种常见的 Web 服务器环境,适用于运行动态网站和应用程序。以下是一个自动化部署脚本,适用于 Ubuntu 20.04 或更高版本的系统。脚本将完成以下步骤:

  1. 更新系统软件包。
  2. 安装 Nginx Web 服务器。
  3. 安装 MySQL 数据库,并安全设置 root 密码(脚本会提示用户输入)。
  4. 安装 PHP 及常用扩展(如 PHP-FPM 和 MySQL 连接支持)。
  5. 配置 Nginx 与 PHP 集成。
  6. 重启服务并验证安装。

脚本使用 Shell 编写,确保在终端中以 root 权限 运行(例如使用 sudo bash script.sh)。脚本已处理常见依赖和错误检测。

Shell 脚本代码
#!/bin/bash

# 步骤1: 更新系统
echo "更新系统软件包..."
apt update && apt upgrade -y

# 步骤2: 安装 Nginx
echo "安装 Nginx..."
apt install nginx -y
systemctl start nginx
systemctl enable nginx

# 步骤3: 安装 MySQL 并设置 root 密码
echo "安装 MySQL..."
apt install mysql-server -y
systemctl start mysql
systemctl enable mysql

# 安全设置 MySQL root 密码
echo "请设置 MySQL root 密码(输入时不会显示):"
read -s mysql_root_password
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${mysql_root_password}'; FLUSH PRIVILEGES;"

# 步骤4: 安装 PHP 及扩展
echo "安装 PHP 和扩展..."
apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml -y

# 步骤5: 配置 Nginx 支持 PHP
echo "配置 Nginx..."
# 备份默认配置
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
# 修改配置以启用 PHP 处理
sed -i 's/index index.html index.htm;/index index.php index.html index.htm;/' /etc/nginx/sites-available/default
sed -i '/#location ~ \\.php$/,/#}/ s/^#//' /etc/nginx/sites-available/default
# 更新 PHP-FPM 套接字路径(适配默认版本)
sed -i 's/fastcgi_pass unix:\/run\/php\/php[0-9.]*-fpm.sock;/fastcgi_pass unix:\/run\/php\/php7.4-fpm.sock;/' /etc/nginx/sites-available/default

# 步骤6: 重启服务并验证
systemctl restart nginx
systemctl restart php7.4-fpm

# 创建测试 PHP 页面
echo "<?php phpinfo(); ?>" > /var/www/html/info.php

echo "LNMP 环境部署完成!"
echo "验证: 访问 http://服务器IP/info.php 查看 PHP 信息页面。"
echo "安全提示: 验证后删除测试文件: rm /var/www/html/info.php"

使用说明
  1. 保存脚本:将上述代码复制到文件(如 deploy_lnmp.sh)。
  2. 赋予执行权限:在终端运行:
    chmod +x deploy_lnmp.sh
    

  3. 运行脚本:使用 root 权限执行:
    sudo ./deploy_lnmp.sh
    

  4. 交互步骤:脚本会提示输入 MySQL root 密码,请确保密码强度足够。
  5. 验证安装
    • 访问 http://服务器IP/info.php 应显示 PHP 信息页。
    • 检查 Nginx 状态:systemctl status nginx
    • 检查 MySQL 登录:mysql -u root -p
注意事项
  • 系统兼容性:脚本基于 Ubuntu 20.04 设计。其他 Linux 发行版(如 CentOS)需调整包管理命令(如将 apt 改为 yum)。
  • 安全性
    • MySQL 密码通过 read -s 安全输入,避免明文存储。
    • 部署后建议运行 mysql_secure_installation 强化数据库安全。
    • 删除测试文件 /var/www/html/info.php 以防止信息泄露。
  • 自定义配置:如需修改 PHP 版本或 Nginx 站点,编辑相关文件(如 /etc/php/7.4/fpm/php.ini/etc/nginx/sites-available/default)。

此脚本已简化错误处理,适合快速部署。对于生产环境,建议添加更详细的日志和回滚机制。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐