当前位置: 首页 > news >正文

Lamp和友点CMS一键部署脚本(Rocky linux)

先上传youdiancms9.3.0.zip包,可以去官网下载

#!/bin/bash
#function:install apache mysql php for youdiancms9.3.0ip=$(hostname -I | awk '{print $1}')
yh=youdian
password=youdian@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#安装Apache
dnf install -y httpd
if [ $? = 0 ]; thenecho "Apache服务安装成功"
elseecho "Apache服务安装失败,10秒后退出"sleep 10exit 0
fi
sleep 5#启动并设置开机自启
systemctl start httpd
systemctl enable httpd#启用EPEL和CRB源
dnf install -y epel-release
dnf config-manager --set-enabled crb#安装Remi源以获取PHP 7.4
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module reset php -y
dnf module enable php:remi-7.4 -y#安装PHP及友点CMS所需扩展
dnf install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-curl php-opcache php-json php-pdo php-zip php-bcmath php-intl php-pecl-redis php-mcrypt php-pecl-memcached
if [ $? = 0 ]; thenecho "安装PHP及常用扩展完成"
elseecho "安装PHP及常用扩展失败,5秒后退出"sleep 5exit 0
fi
sleep 5#配置PHP-FPM使用TCP端口
if [ -f /etc/php-fpm.d/www.conf ]; then# 确保PHP-FPM使用TCP端口并设置正确的权限sed -i 's|listen = /run/php-fpm/www.sock|listen = 127.0.0.1:9000|g' /etc/php-fpm.d/www.confsed -i 's|listen.owner = apache|;listen.owner = apache|g' /etc/php-fpm.d/www.confsed -i 's|listen.group = apache|;listen.group = apache|g' /etc/php-fpm.d/www.confsed -i 's|listen.mode = 0660|;listen.mode = 0660|g' /etc/php-fpm.d/www.conf# 如果没有找到listen配置行,则添加它if ! grep -q "listen = 127.0.0.1:9000" /etc/php-fpm.d/www.conf; thensed -i '/\[www\]/a listen = 127.0.0.1:9000' /etc/php-fpm.d/www.conffi# 确保php-fpm以apache用户运行sed -i 's|user = apache|user = apache|g' /etc/php-fpm.d/www.confsed -i 's|group = apache|group = apache|g' /etc/php-fpm.d/www.conf
fi# 配置Apache使用TCP端口连接PHP-FPM
cat > /etc/httpd/conf.d/php.conf << EOF
<FilesMatch "\.php$">SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
EOF#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 start php-fpm
systemctl enable php-fpm#重启Apache使PHP生效
systemctl restart httpd#安装MariaDB
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#设置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创建新用户并授权
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 $yh.* TO '$yh'@'%';"
mysql -u root -p"$mm" -e "FLUSH PRIVILEGES;"#解压友点CMS包
rm -rf /var/www/html/*
unzip ./youdiancms9.3.0.zip -d /var/www/html/ && rm -rf youdiancms9.3.0.zip
if [ $? = 0 ]; thenecho "解压成功,安装完成!"echo "通过如下地址访问友点CMS  http://$ip/Install/index.php 数据库默认已创建用户$yh,密码为$password "
elseecho "解压失败,请先上传youdiancms9.3.0.zip到当前目录,10秒后退出"sleep 10exit 0
fi
chown -R apache:apache /var/www/html/
chmod -R 777 /var/www/html/
sed -i 's/^/#/' /etc/httpd/conf.d/welcome.conf
sed -i 's@    DirectoryIndex.*@    DirectoryIndex index.php index.html@g' /etc/httpd/conf/httpd.conf
systemctl restart httpd php-fpm mariadb

 运行后如图

游览器访问,输入数据库用户名和密码

安装成功后

http://www.lqws.cn/news/492175.html

相关文章:

  • Flink维表应用:从思考到实践的全面解析
  • Linux切换中文输入法
  • 使用.detach()代替requires=False避免计算图错误
  • GPIO-LED驱动
  • STM32学习笔记
  • 深入浅出Node.js后端开发
  • 可信计算的基石:TPM技术深度解析与应用实践
  • 2025.06.23【甲基化】methylKit:甲基化测序数据分析安装与详细使用教程
  • 常用终端命令(Linux/macOS/bash 通用)分类速查表
  • Docker 永久换源步骤
  • C++之二叉搜索树及其实现
  • 嘉讯科技:医院电子病历系统的关键性作用
  • 【Java开发日记】我们详细讲解一下 Java 中 new 一个对象的流程
  • 智慧水利新引擎,数字孪生流域解决方案
  • 领域驱动设计(DDD)【7】之数据库设计
  • 基于 Spark 实现 COS 海量数据处理
  • AntDesign栅格系统全解析:Row与Col实战指南
  • Java封装过程中的getter/setter究竟有什么用?
  • 爬虫003----requests库
  • ABP VNext + Apache Kafka Streams:构建高吞吐、生产级实时流处理服务
  • 自回归(AR)与掩码(MLM)的核心区别:续写还是补全?
  • 采集MFC软件的数据方法记录
  • 【Java面试】你是怎么控制缓存的更新?
  • Linux系统能ping通ip但无法ping通域名的解决方法
  • 【源码+文档+调试讲解】基于web的运动健康小程序的设计与实现y196
  • 【科研绘图系列】R语言绘制论文组合图(multiple plots)
  • 【Leetcode】有效的括号、用栈实现队列、用队列实现栈
  • 数据赋能(313)——合作共享——跨界融合
  • STM32 ADC(DMA)双缓冲采集+串口USART(DMA)直接传输12位原始数据到上位机显示并保存WAV格式音频文件 收藏住绝对实用!!!
  • 马斯克YC技术核弹全拆解:Neuralink信号编译器架构·星舰着陆AI代码·AGI防御协议(附可复现算法核心/开源替代方案/中国技术对标路径)