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,并适配Laravel、Webman、Swoole项目需求。脚本包含服务管理、安全配置和依赖优化:

 #!/bin/bash
 # 部署脚本: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

脚本特性说明

  1. 多服务集成:通过官方源保证软件版本稳定性,PHP使用Remi源,Nginx使用官方源

  2. 安全加固 • MySQL自动生成强密码并修改root默认密码 • Redis默认开放外网访问(需按需调整防火墙) • PHP-FPM进程管理优化

  3. 性能优化 • 开启OPcache加速(默认配置优化) • Nginx工作进程数自动匹配CPU核心 • Redis内存分配策略优化

  4. 项目支持 • 预置Laravel的Nginx配置模板 • 全局安装Composer依赖管理 • Swoole扩展编译安装并启用协程支持

  5. 维护友好 • 服务状态自动验证 • 关键服务管理命令汇总输出 • 日志文件路径标准化(/var/log/各服务目录)

使用说明

  1. 保存为 deploy.sh 并赋予执行权限:

     chmod +x deploy.sh
  2. 执行部署脚本(需要root权限):

     ./deploy.sh
  3. 部署完成后根据输出的管理命令进行项目部署

扩展建议

• Laravel项目建议配置队列和任务调度:

 crontab -e
 * * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

• Webman项目需要单独配置Supervisor守护进程(脚本已包含基础启动命令) • 生产环境建议补充SSL证书配置和防火墙策略限制

该脚本已适配CentOS Stream 9的软件源特性,各组件版本会随官方源自动更新到最新稳定版。如需固定版本,可修改脚本中的版本变量。

所有用户都可以去薅羊毛,192元充值200元话费!先到先得!导航栏话费充值,正规可靠,快充慢充自由选择。
欧阳逸资源站 » CentOS Stream 9系统的一键部署脚本,支持PHP 8.0、Nginx最新稳定版、MySQL 8.0、Redis 7.x

发表评论