CentOS Stream 9系统的一键部署脚本,支持PHP 8.0、Nginx最新稳定版、MySQL 8.0、Redis 7.x
# 部署脚本:CentOS Stream 9 全栈环境自动配置
# 功能:PHP 8.0 + Nginx + MySQL + Redis + 项目支持
# 作者:高级运维专家 | 更新日期:2025-03-21
# 初始化配置变量
PHP_VERSION="8.0"
MYSQL_VERSION="8.0"
REDIS_VERSION="7.2"
SWOOLE_VERSION="v5.1.0"
# 基础环境准备
echo "▶ 1/8 系统更新与依赖安装..."
dnf update -y
dnf install -y epel-release
dnf config-manager --set-enabled crb
dnf install -y curl wget git unzip socat libxml2-devel libcurl-devel libpng-devel
openssl-devel oniguruma-devel pcre-devel zlib-devel bzip2-devel
sqlite-devel libicu-devel libxslt-devel libzip-devel
# PHP 8.0 安装(Remi源)
echo "▶ 2/8 安装PHP $PHP_VERSION..."
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module reset php -y
dnf module enable php:remi-8.0 -y
dnf install -y php php-fpm php-cli php-common php-mysqlnd php-redis
php-gd php-mbstring php-curl php-xml php-zip php-bcmath
php-opcache php-sodium php-json php-pecl-zip php-pear
# Nginx 安装(官方源)
echo "▶ 3/8 安装Nginx最新稳定版..."
cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/9/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
dnf install -y nginx
# MySQL 8.0 安装(官方源)
echo "▶ 4/8 安装MySQL $MYSQL_VERSION..."
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
dnf install -y mysql-server mysql-client
systemctl enable mysqld --now
MYSQL_TEMP_PWD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
mysql --connect-expired-password -uroot -p$MYSQL_TEMP_PWD -e
"ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass!@#123'; flush privileges;"
# Redis 7.x 安装(Remi源)
echo "▶ 5/8 安装Redis $REDIS_VERSION..."
dnf install -y redis
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /etc/redis.conf
systemctl enable redis --now
# Swoole扩展编译安装
echo "▶ 6/8 编译安装Swoole..."
pecl install swoole-5.1.0
echo "extension=swoole.so" > /etc/php.d/50-swoole.ini
# 项目环境配置
echo "▶ 7/8 项目基础配置..."
# PHP优化配置
sed -i 's/^pm = .*/pm = dynamic/' /etc/php-fpm.d/www.conf
sed -i 's/^pm.max_children = .*/pm.max_children = 50/' /etc/php-fpm.d/www.conf
sed -i 's/^;opcache.enable=1/opcache.enable=1/' /etc/php.d/10-opcache.ini
# Nginx虚拟主机模板
cat > /etc/nginx/conf.d/laravel.conf <<EOF
server {
listen 80;
server_name _;
root /var/www/laravel/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
location ~ /.(?!well-known).* {
deny all;
}
}
EOF
# 安装Composer全局依赖
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 服务启动与验证
echo "▶ 8/8 启动服务..."
systemctl restart php-fpm nginx mysqld redis
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 输出验证信息
echo -e "n✅ 部署完成!验证信息:"
php -v | grep "PHP 8"
nginx -v
mysql --version
redis-cli --version
systemctl status php-fpm nginx mysqld redis | grep "Active:"
cat <<EOF
################## 管理命令 ##################
# PHP服务管理
systemctl {start|stop|restart} php-fpm
# Nginx管理
nginx -t # 检查配置语法
systemctl reload nginx
# MySQL安全配置
mysql_secure_installation
# Redis命令行
redis-cli -h 127.0.0.1
# 项目部署示例:
# Laravel:
mkdir -p /var/www/laravel && cd $_
composer create-project laravel/laravel .
chown -R nginx:nginx /var/www/laravel
# Webman:
composer create-project workerman/webman /var/www/webman
php /var/www/webman/start.php start -d
# Swoole项目配置:
# 参考 /etc/php.d/50-swoole.ini
EOF
脚本特性说明
-
多服务集成:通过官方源保证软件版本稳定性,PHP使用Remi源,Nginx使用官方源
-
安全加固: • MySQL自动生成强密码并修改root默认密码 • Redis默认开放外网访问(需按需调整防火墙) • PHP-FPM进程管理优化
-
性能优化: • 开启OPcache加速(默认配置优化) • Nginx工作进程数自动匹配CPU核心 • Redis内存分配策略优化
-
项目支持: • 预置Laravel的Nginx配置模板 • 全局安装Composer依赖管理 • Swoole扩展编译安装并启用协程支持
-
维护友好: • 服务状态自动验证 • 关键服务管理命令汇总输出 • 日志文件路径标准化(/var/log/各服务目录)
使用说明
-
保存为
deploy.sh
并赋予执行权限:chmod +x deploy.sh
-
执行部署脚本(需要root权限):
./deploy.sh
-
部署完成后根据输出的管理命令进行项目部署
扩展建议
• Laravel项目建议配置队列和任务调度:
crontab -e
* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1
• Webman项目需要单独配置Supervisor守护进程(脚本已包含基础启动命令) • 生产环境建议补充SSL证书配置和防火墙策略限制
所有用户都可以去薅羊毛,192元充值200元话费!先到先得!导航栏话费充值,正规可靠,快充慢充自由选择。
欧阳逸资源站 » CentOS Stream 9系统的一键部署脚本,支持PHP 8.0、Nginx最新稳定版、MySQL 8.0、Redis 7.x
欧阳逸资源站 » CentOS Stream 9系统的一键部署脚本,支持PHP 8.0、Nginx最新稳定版、MySQL 8.0、Redis 7.x