Lnmp和XunRuiCMS一鍵部署(Rocky linux)

先上傳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

運行完成后,如圖

?游覽器訪問,輸入數據庫用戶名和密碼

安裝完成后

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910612.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910612.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高精度OFDR設備在CPO交換機中的應用

光電共封裝&#xff08;CPO&#xff09;交換機的特點 核心需求&#xff1a;CPO將光模塊與交換芯片集成封裝&#xff0c;縮短電互連距離&#xff0c;降低功耗和延遲&#xff0c;但需解決以下挑戰&#xff1a; 1.光器件微型化&#xff1a;硅光芯片、光纖陣列等需高精度制造。 …

Vulkan 通過 CMake 集成 Dear ImGUI

一、 目錄與文件部署 從官網獲取 IMGUI 代碼庫&#xff0c;在項目 extern 目錄下新建 imgui 目錄&#xff0c;將相關文件復制進去&#xff0c;構建出如下目錄結構&#xff1a; . ├── build ├── extern │ ├── glfw │ ├── glm │ └── imgui │ ├…

Linux設備框架:kset與kobject基本介紹

系列文章目錄 Linux設備框架&#xff1a;kset與kobject基本介紹 [link] Linux設備框架&#xff1a;kset與kobject源碼分析 [link] kset與kobject基本介紹 一、前言二、kobject、kset和設備的關系2.1 kset 結構體2.2 kobject 結構體 三、總結 一、前言 Linux 設備模型如同一座擁…

【AI論文】擴展大型語言模型(LLM)智能體在測試時的計算量

摘要&#xff1a;擴展測試時的計算量在提升大型語言模型&#xff08;LLMs&#xff09;的推理能力方面已展現出顯著成效。在本研究中&#xff0c;我們首次系統地探索了將測試時擴展方法應用于語言智能體&#xff0c;并研究了該方法在多大程度上能提高其有效性。具體而言&#xf…

LeapMotion-PhysicalHandsManager 類詳解

PhysicalHandsManager 類詳解 這個類是 Ultraleap 物理手交互系統的核心管理器,負責處理手部物理交互的不同模式。下面我將詳細解析這個類的結構和功能: 類概述 PhysicalHandsManager 繼承自 LeapProvider,是物理手交互系統的中央控制器: public class PhysicalHandsMa…

vue-22(理解組合式 API:setup、ref、reactive)

Vue.js 中的組合式 API 代表了我們構建和組織組件方式的重大轉變。它為傳統的選項式 API 提供了一種更靈活、更強大的替代方案&#xff0c;尤其適用于復雜的應用程序。本章將深入探討組合式 API 的核心概念&#xff1a;setup函數、ref和reactive&#xff0c;為你構建更可維護、…

【Golang玩轉MCP】-實現一個加減乘除MCP服務

文章目錄 概要1 首先創建一個MCP服務器2 添加MCP工具如何測試我們的MCP服務功能是否正常呢小結 概要 今天我們使用golang簡單實現一個加減乘除MCP服務 1 首先創建一個MCP服務器 s : server.NewMCPServer("Hello World Server","1.0.0",server.WithToolCa…

計算機網絡期末 網絡基礎概述

目錄 網絡的定義歷史發展(了解) 網絡的分類&#xff0c;功能和應用(熟悉) 網絡的組成與結構(理解) 網絡的 OSI 七層參考模型(熟悉) 網絡的 TCP/IP 四次模型(理解) 網絡有關性能指標(掌握) 網絡的定義歷史發展(了解) 計算機網絡是什么 四個階段 總結 網絡 互連網 因特網的…

SwiftUI學習筆記day4: Lecture 4 | Stanford CS193p 2023

Lecture 4 | Stanford CS193p 2023 課程鏈接&#xff1a;https://www.youtube.com/watch?v4CkEVfdqjLw 代碼倉庫&#xff1a;iOS 課程大綱&#xff1a; 簡要課程大綱&#xff1a;SwiftUI 高級主題 Swift 訪問控制&#xff08;Access Control&#xff09; 5 個級別&#xff1…

Docker 高級管理——容器通信技術與數據持久化

目錄 一、Docker 容器的網絡模式 1. Bridge 模式 2. Host 模式 3. Container 模式 4. None 模式 5. Overlay 模式 6. Macvlan 模式 7. 自定義網絡模式 二、端口映射 1. 端口映射 2. 隨機映射端口 3. 指定映射端口 &#xff08;1&#xff09;固定端口 &#xff08;…

git操作案例 -設置遠程分支,并提交到新遠程新分支

文章目錄 前言一、分析當前的問題二、修改遠程倉庫地址&#xff08;一&#xff09;修改遠程倉庫地址場景 現有保留遠程分支場景替換現有遠程分支 二、 找回已經提交的文件場景&#xff1a;提交后&#xff0c;代碼在本地倉庫但未推送 三、同步遠程分支四、提交到新遠程的新分支 …

mysql一張表,其中一個字段設置了唯一索引,又設置了普通索引,查詢的時候很慢,沒有走普通索引,是const

問題分析 在 MySQL 中&#xff0c;當一個字段同時存在唯一索引和普通索引時&#xff0c;查詢優化器通常會優先選擇最嚴格的索引&#xff08;即能最快縮小結果集的索引&#xff09;。在你的場景中&#xff0c;優化器選擇了唯一索引并將查詢視為const類型&#xff0c;這通常是高…

ARCGIS國土超級工具集1.6更新說明

ARCGIS國土超級工具集V1.6版本&#xff0c;功能已增加至60 個。本次更新在V1.5版本的基礎上&#xff0c;除修復了使用時發現的若干小問題外&#xff0c;還更新及新增了若干工具。其中勘測定界工具欄更新了界址點西北角重排工具&#xff0c;新增了提示圖斑起始點、指定圖斑起始點…

零基礎學習RabbitMQ(2)--Linux安裝RabbitMQ

注意&#xff1a;這里使用的是ubuntu系統 1. 安裝Erlang RabbitMQ需要Erlang語言的支持&#xff0c;在安裝rabbitMQ之前需要安裝Erlang #更新軟件包 sudo apt-get update #安裝erlang sudo apt-get install erlang 安裝后輸入 rel可查看Erlang版本&#xff1a; 輸入halt().…

Centos進單用戶模式

一、開機按E 二、修改里面的linux行 把ro 修改成rw init/sysroot/bin/sh 修改前&#xff1a; 修改后&#xff1a; 三、ctrl x退出&#xff0c;進入單用戶模式

RabbitMQ 的工作流程

RabbitMQ 是一個消息中間件&#xff0c;實現了生產者消費者模型&#xff0c;可以用來接收、存儲、轉發消息。 專有名詞介紹 要了解 RabbitMQ 的工作流程&#xff0c;我們需要先了解下面幾個關鍵詞&#xff1a; 1、Producer 生產者&#xff0c;即向 RabbitMQ 發送消息。 2…

HTTP——不同版本區別

目錄 HTTP1.0和HTTP1.1的區別 HTTP1.1相比HTTP1.0性能上的改進&#xff1a; 但是HTTP1.1還是有性能瓶頸&#xff1a; HTTP/2做了什么優化&#xff1f; HTTP/3的優點 HTTP與HTTPS的區別 HTTPS的工作原理 1.ClientHello 2.ServerHello 3.客戶端回應 4.服務器的最后回應…

關于M0+芯片的IAP應用導致延時不準確解釋

前言&#xff1a;在給項目中使用的M0芯片做IAP功能時一切一切都是那么的自然水到渠成&#xff0c;但是筆者在實現完IAP功能后&#xff0c;卻發現APP端掛載的單總線功能崩潰了&#xff0c;最開始沒有懷疑是bootload導致的。因為筆者在使用同一篇代碼的時候單總線掛載的設備不同&…

安卓登錄學習筆記

1. 背景與目標 (Background and Goal) 背景: 我們要創建一個用戶登錄界面。用戶輸入用戶名和密碼&#xff0c;點擊“登錄”按鈕。應用會顯示一個加載中的“圈圈”&#xff08;ProgressBar&#xff09;&#xff0c;然后模擬一個耗時2秒的網絡請求。根據請求結果&#xff0c;界面…

Git(三):分支管理

文章目錄 Git(三)&#xff1a;分支管理理解分支創建分支切換分支合并分支刪除分支合并沖突分支管理策略分支策略Bug分支刪除臨時分支 Git(三)&#xff1a;分支管理 理解分支 本章介紹Git的殺手級功能之一&#xff1a;分支 分支就 是科幻電影里面的平行宇宙&#xff0c;當你正…