先上传XunRuiCMS-Study.zip包到当前目录,可以去官网下载
#!/bin/bash
# function: install nginx mysql php on Rocky Linux 9.5 with fixed PHP-FPM configip=$(hostname -I | awk '{print $1}')
yh=xunrui
password=xunrui@123# 检查是否为root用户
if [ "$USER" != "root" ]; thenecho "错误:非root用户,权限不足!"exit 0
fi# 关闭防火墙和SElinux
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"
sleep 5# 添加Nginx官方源
cat > /etc/yum.repos.d/nginx.repo << EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF# 安装Nginx
dnf install -y nginx
if [ $? = 0 ]; thenecho "Nginx安装成功"
elseecho "Nginx安装失败,10秒后退出"sleep 10exit 0
fi
sleep 5# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx# 安装MariaDB (Rocky Linux 9默认仓库中的版本)
dnf install -y mariadb-server mariadb
if [ $? = 0 ]; thenecho "MariaDB安装成功"
elseecho "MariaDB安装失败,10秒后退出"sleep 10exit 0
fi
sleep 5# 启动并设置开机自启
systemctl start mariadb
systemctl enable mariadb# 添加Remi源
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sleep 5
dnf install -y dnf-utils
sleep 5# 启用PHP8.1源安装PHP及常用扩展
dnf module enable php:remi-8.1 -y
if [ $? = 0 ]; thenecho "启用PHP8.1源完成"
elseecho "启用PHP8.1源失败,5秒后退出"sleep 5exit 0
fi
sleep 5# 安装PHP及常用扩展
dnf -y install php-fpm php-mysqlnd php-gd php-xml php-mbstring php-curl php-opcache php-json php-zip
if [ $? = 0 ]; thenecho "安装PHP及常用扩展完成"
elseecho "安装PHP及常用扩展失败,5秒后退出"sleep 5exit 0
fi
sleep 5# 修正PHP-FPM配置文件(关键修改部分)
# 先备份原配置
cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.bak# 写入正确的配置(确保套接字、用户、权限正确)
cat > /etc/php-fpm.d/www.conf << 'EOF'
[www]
user = nginx
group = nginxlisten = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10request_terminate_timeout = 60
request_slowlog_timeout = 5
slowlog = /var/log/php-fpm/slow.logcatch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_flag[log_errors] = on
php_value[session.save_path] = /var/lib/php/session
EOF# 创建套接字目录并设置权限
mkdir -p /var/run/php-fpm /var/lib/php/session
chown -R nginx:nginx /var/run/php-fpm /var/lib/php/session
chmod -R 755 /var/run/php-fpm /var/lib/php/session# 启动并设置开机自启
systemctl start php-fpm
systemctl enable php-fpm# 创建网站目录
mkdir -p /var/www/html
chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html# 配置Nginx虚拟主机
cat > /etc/nginx/conf.d/default.conf << EOF
server {listen 80;server_name localhost;root /var/www/html;index index.php index.html index.htm;# 日志配置access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;# 静态文件处理location / {try_files \$uri \$uri/ =404;}# PHP 文件处理(确保与PHP-FPM套接字路径一致)location ~ \.php$ {fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;include fastcgi_params;}# 安全配置location ~ /\.ht {deny all;}
}
EOF# 重启Nginx
systemctl restart nginx# PHP配置文件调整
sed -i 's/default_charset = .*/default_charset = "UTF-8"/g' /etc/php.ini
sed -i 's/mbstring.internal_encoding = .*/mbstring.internal_encoding = "UTF-8"/g' /etc/php.ini
sed -i 's/mbstring.http_output = .*/mbstring.http_output = "UTF-8"/g' /etc/php.ini# 重启PHP-FPM服务
systemctl restart php-fpm# 设置MySQL root密码
read -ep "设置root密码:" mm
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$mm';"
#mysql -u root -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$mm');" #适用于旧MariaDB版本
mysql -u root -p"$mm" -e "DELETE FROM mysql.user WHERE User='';"
mysql -u root -p"$mm" -e "DROP DATABASE IF EXISTS test;"
mysql -u root -p"$mm" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
mysql -u root -p"$mm" -e "FLUSH PRIVILEGES;"
mysql -u root -p"$mm" -e "FLUSH PRIVILEGES;"# 登录MySQL创建新用户并授权
mysql -u root -p"$mm" -e "CREATE DATABASE $yh CHARACTER SET utf8mb4;"
mysql -u root -p"$mm" -e "CREATE USER '$yh'@'%' IDENTIFIED BY '$password';"
mysql -u root -p"$mm" -e "GRANT ALL PRIVILEGES ON *.* TO '$yh'@'%';"
mysql -u root -p"$mm" -e "FLUSH PRIVILEGES;"
mysql -u root -p"$mm" -e "FLUSH PRIVILEGES;"# 解压XunRuiCMS包
rm -rf /var/www/html/*
unzip ./XunRuiCMS-Study.zip -d /var/www/html/ && rm -rf XunRuiCMS-Study.zip
if [ $? = 0 ]; thenecho "解压成功"echo "通过如下地址访问XunRuiCMS http://$ip/index.php 数据库默认已创建用户$yh,密码为$password "
elseecho "解压失败,请先上传XunRuiCMS-Study.zip到当前目录,10秒后退出"sleep 10exit 0
fichmod -R 777 /var/www/html/
systemctl restart nginx php-fpm mariadb
运行完成后,如图
游览器访问,输入数据库用户名和密码
安装完成后