Ubuntu 24.04 LNMP+Redis自动安装脚本
开发学院2026-06-11 13:00:10
之前一直使用lnmp.com的自动套件,但是那个好像很久不维护了,bug也不修复,这两天发现网站也打不开了,索性自己写一个自动安装的的 Shell 脚本,适用于 Ubuntu 24.04 服务器,自动部署 LNMP 环境(Nginx 官方稳定版 + MySQL8.0 + PHP8.3),并附带 Redis 缓存、防火墙安全配置。
之前一直使用lnmp.com的自动套件,但是那个好像很久不维护了,bug也不修复,这两天发现网站也打不开了,索性自己写一个自动安装的的 Shell 脚本,适用于 Ubuntu 24.04 服务器,自动部署 LNMP 环境(Nginx 官方稳定版 + MySQL8.0 + PHP8.3),并附带 Redis 缓存、防火墙安全配置。
脚本全程自动执行:更新系统源、安装依赖、配置 Nginx 解析 PHP、初始化 MySQL、集成 php-redis 扩展、放行防火墙端口,无需手动修改多处配置,新手也能一键搭建网站运行环境。
环境清单
Nginx:官方源最新稳定版
MySQL 8.0:自动初始化 root 账号、清理危险默认配置
PHP 8.3:Ondrej 官方 PPA 源,预装网站常用全套扩展
Redis:系统官方 redis-server,自动开启 php-redis 扩展
防火墙 UFW:自动放行 22 (ssh)、80 (http)、443 (https) 端口
前置要求
服务器系统:纯净 Ubuntu 24.04
操作权限:必须使用 root 用户执行脚本
网络:服务器可正常访问外网(拉取 Nginx 密钥、PHP PPA 源)
关闭冲突:服务器无已手动安装的 Nginx、MySQL、PHP、Redis,避免端口冲突
完整一键安装脚本
新建 lnmp_install.sh 文件,复制下方全部代码:
#!/bin/bash
# LNMP + Redis 一键安装脚本 (适配 Ubuntu 24.04)
# Nginx官方最新 + PHP 8.3 (通过PPA) + MySQL 8.0 + Redis
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
if [[ $EUID -ne 0 ]]; then
echo -e "${RED}错误:请使用 root 用户执行此脚本${NC}"
exit 1
fi
echo -e "${YELLOW}[1/9] 更新系统软件源...${NC}"
apt update -y && apt upgrade -y
echo -e "${YELLOW}[2/9] 安装基础工具...${NC}"
apt install -y curl wget vim git ufw software-properties-common apt-transport-https ca-certificates gnupg lsb-release
echo -e "${YELLOW}[3/9] 安装 Nginx 最新稳定版...${NC}"
curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | tee /etc/apt/sources.list.d/nginx.list
apt update -y
apt install -y nginx
systemctl enable nginx
systemctl start nginx
echo -e "${YELLOW}[4/9] 安装 MySQL 8.0...${NC}"
apt install -y mysql-server
systemctl enable mysql
systemctl start mysql
MYSQL_ROOT_PASSWORD="root"
echo -e "${GREEN}MySQL root 密码: ${MYSQL_ROOT_PASSWORD}${NC}"
mysql <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}';
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
EOF
echo -e "${YELLOW}[5/9] 安装 PHP 8.3 (通过 PPA)...${NC}"
# 添加 Ondrej PHP PPA (Ubuntu 24.04 需要这个才能装 PHP 8.3)
add-apt-repository -y ppa:ondrej/php
apt update -y
# 注意:移除了 php8.3-xmlrpc 和 php8.3-opcache(后者已内置)
apt install -y php8.3 php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd \
php8.3-mbstring php8.3-xml php8.3-zip php8.3-soap php8.3-redis php8.3-intl
PHP_VERSION=$(php -v | head -n1 | cut -d' ' -f2)
echo -e "${GREEN}已安装 PHP 版本: ${PHP_VERSION}${NC}"
echo -e "${YELLOW}[6/9] 配置 Nginx 与 PHP-FPM...${NC}"
#cat > /etc/nginx/conf.d/php_fpm.conf <<EOF
#index index.php index.html index.htm;
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
# fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
#}
#EOF
rm -f /etc/nginx/conf.d/default.conf
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
EOF
mkdir /var/www/
mkdir /var/www/html
chown -R www-data:www-data /var/www/html
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
systemctl restart nginx
systemctl restart php8.3-fpm
echo -e "${YELLOW}[7/9] 安装 Redis...${NC}"
apt install -y redis-server
systemctl enable redis-server
systemctl start redis-server
echo -e "${YELLOW}[8/9] 确认 php-redis 扩展...${NC}"
phpenmod redis
systemctl restart php8.3-fpm
echo -e "${YELLOW}[9/9] 配置 UFW 防火墙...${NC}"
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
echo "y" | ufw enable
clear
echo -e "${GREEN}========== LNMP 安装完成 ==========${NC}"
echo -e "Nginx: $(nginx -v 2>&1)"
echo -e "MySQL: $(mysql --version)"
echo -e "PHP: ${PHP_VERSION}"
echo -e "Redis: $(redis-server --version | cut -d' ' -f3)"
echo -e "php-redis: $(php -m | grep redis)"
echo ""
echo -e "${YELLOW}MySQL root 密码: ${MYSQL_ROOT_PASSWORD}${NC}"
echo -e "测试页: http://YOUR_IP/info.php"
echo -e "\n${RED}安全建议:${NC}"
echo "1. 修改 MySQL 密码: sudo mysql_secure_installation"
echo "2. 为 Redis 设置密码: 修改 /etc/redis/redis.conf"
echo "3. 删除测试文件: rm /var/www/html/info.php"
echo "=========================================="相关文章
- Ubuntu24 LNMP Nginx 启动失败 & PHP 页面 502 错误完整排查
- Ubuntu 24.04 LNMP+Redis自动安装脚本
- JAVA大整数传递给前端丢失精度问题解决指南
- JDK21实现高性能 Snowflake ID生成器
- Rocky Linux 10 tmux安装使用教程
- 新版 Ollama 中导入外部模型 GGUF 模型
- 当 Web 开发绕回 “一体化”,PHP 玩家的底气在哪?
- 重磅:LFM2.5-1.2B-Thinking发布 1GB内存即可实现端侧高效推理
- MyBatis-Plus升级踩坑记录:一个依赖缺失引发的“惨案”
- spring+netty实现一个最小可运行的im server
- windows修改ollama程序和模型保存位置
- UE5中使用蓝图实现对象池功能
- UE5开发2D/3D混合平台跳跃游戏优化操作体验
- UE5敌人直接放置场景ok,代码生成不执行AI
- UE5中开发HD-2D游戏的优化设置与2D角色导入技巧
- nginxSpringboot项目常见配置
- 在MacOS上部署ComfyUI的指南
- 解决UE5开发Topdown2D动作游戏的旋转问题
- UE5开发2D游戏设置排序的步骤.
- 大幅提升FPS!Unreal Engine 5 最佳 2D 设置