先上傳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
運行完成后,如圖
?游覽器訪問,輸入數據庫用戶名和密碼
安裝完成后