Shell脚本自动化部署LAMP环境

[root@localhost ~]# vim liang.sh
#!/bin/bash# LAMP终极部署cat <<-EOF+-------------------------------------------------------------------------+| LAMP终极部署 V1.0 |+-------------------------------------------------------------------------+| a. 部署Apache服务 || b. 部署php服务 || c. 部署Mysql服务 || d. 一键部署LAMP || q. 按q键退出程序 |+-------------------------------------------------------------------------+EOF# 安装Apacheinstall_Apache(){systemctl stop firewalldsystemctl disable firewalldsetenforce 0"liang.sh" 475L, 6051C                                                     
#!/bin/bash# LAMP终极部署cat <<-EOF+-------------------------------------------------------------------------+| LAMP终极部署 V1.0 |+-------------------------------------------------------------------------+| a. 部署Apache服务 || b. 部署php服务 || d. 一键部署LAMP || q. 按q键退出程序 |+-------------------------------------------------------------------------+EOF# 安装Apacheinstall_Apache(){systemctl stop firewalldsystemctl disable firewalldsetenforce 0sed -i '/^\bSELINUX\b/c SELINUX=disabled' /etc/selinux/configmkdir /usr/local/apr &> /dev/nullmkdir /usr/local/apr-util &> /dev/nullmkdir /usr/local/apache &> /dev/nullcd /usr/local/srcecho "正在下载Apache服务,请稍等!!!"wget http://archive.apache.org/dist/apr/apr-1.6.5.tar.gz &> /dev/nullwget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz &> /dev/nullif [ $? -eq 0 ]thenecho "download success"elseecho "download failed"exitfitar xf apr-1.6.5.tar.gztar xf apr-util-1.6.1.tar.gztar xf httpd-2.4.37.tar.gzecho "正在安装所需的依赖包"yum -y install gcc gcc-c++ openssl openssl-devel expat-devel &> /dev/nullthenecho "依赖包安装成功"elseecho "依赖包安装失败"exitficd /usr/local/src/apr-1.6.5/echo "正在配置和编译安装apr,请喝口水稍等!!!"./configure --prefix=/usr/local/apr/ &> /dev/nullmake &> /dev/null && make install &>/dev/nullif [ $? -eq 0 ]elseecho "apr installed failed"exitficd /usr/local/src/apr-util-1.6.1/make &> /dev/null && make install &> /dev/nullif [ $? -eq 0 ]thenecho "apr-util installed"elseecho "apr-util installed failed"exitficd /usr/local/src/httpd-2.4.37/echo "正在配置Apache"make &> /dev/null && make install &> /dev/nullif [ $? -eq 0 ]thenecho "Apache installed"echo "Apache installed failed"exitficd /usr/local/apache/bin/echo ServerName www.fangxi.com >> /usr/local/apache/conf/httpd.conf./apachectl startif [ $? -eq 0 ]thenecho "Apache安装成功并启动"elseecho "Apache启动失败"exitfi}#安装phpinstall_php(){echo "正在安装php服务"php-mbstring php-xml php-dom &> /dev/nullif [ $? -eq 0 ]thenelseecho "php安装失败"exitfisystemctl start php-fpm &> /dev/nullif [ $? -eq 0 ]thenecho "php安装成功"elseecho "php安装失败"fi}#编译安装Mysqlinstall_mysql(){echo "开始安装mysql"echo "正在准备编译环境,wait a minute"&> /dev/nullif [ $? -eq 0 ]thenecho "编译环境已准备好"elseecho "编译环境准备失败"exitfiecho "正在下载源码包----请稍稍等一下"groupadd mysqluseradd -r -g mysql -s /bin/nologin mysqltar xf mysql-boost-5.7.26.tar.gzcd mysql-5.7.26/echo "正在配置中,请再喝口水,小憩一下"cmake . \-DWITH_BOOST=boost/boost_1_59_0/ \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DSYSCONFDIR=/etc \-DMYSQL_DATADIR=/usr/local/mysql/data \-DINSTALL_MANDIR=/usr/share/man \-DMYSQL_TCP_PORT=3306 \-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \-DDEFAULT_CHARSET=utf8 \-DEXTRA_CHARSETS=all \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_READLINE=1 \-DWITH_SSL=system \-DWITH_EMBEDDED_SERVER=1 \-DENABLED_LOCAL_INFILE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 &> /dev/nullif [ $? -eq 0 ]thenecho "mysql配置成功"elseecho "mysql配置失败"fiecho "----------正在安装编译安装Mysql请稍等-----------"make &> /dev/null && make install /dev/nullif [ $? -eq 0 ]thenecho "mysql编译安装成功"elseecho "mysql编译安装失败"exitfiecho [mysqld] > /etc/my.cnfecho basedir=/usr/local/mysql >> /etc/my.cnfecho datadir=/usr/local/mysql/data >> /etc/my.cnfecho "mysql配置文件successed"cd /usr/local/mysql/mkdir mysql-fileschown -R mysql.mysql /usr/local/mysqlecho "-------------正在初始化Mysql请稍等--------------"--datadir=/usr/local/mysql/data &> mima.txtmima=awk '/password/ {print $NF}' mima.txtecho "初始密码为:$mima"if [ $? -eq 0 ]thenecho "mysql初始化成功"elseecho "mysql初始化失败"exitfibin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data#给数据库加密cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqldchkconfig mysqld on#添加到开机启动项systemctl start mysqldif [ $? -eq 0 ]thenecho "mysql启动成功"elseecho "mysql启动失败"exitfiecho "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profilesource /etc/profileecho "----------修改数据库初始密码----------"read -p "请输入你要设置的数据库密码" new_mimamysqladmin -uroot -p${mima} password "$new_mima"if [ $? -eq 0 ]thenecho "mysql初始密码修改成功,mysql部署完成"elseecho "mysql初始密码修改失败"exitfi}while :doread -p "请输入你要选择的参数: " varcase $var ina)install_Apache;;
mima=awk '/password/ {print $NF}' mima.txtecho "初始密码为:$mima"if [ $? -eq 0 ]thenecho "mysql初始化成功"elseecho "mysql初始化失败"exitfibin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data#给数据库加密cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqldchkconfig mysqld on#添加到开机启动项systemctl start mysqldif [ $? -eq 0 ]thenecho "mysql启动成功"elseecho "mysql启动失败"exitfiecho "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profilesource /etc/profileecho "----------修改数据库初始密码----------"read -p "请输入你要设置的数据库密码" new_mimamysqladmin -uroot -p${mima} password "$new_mima"if [ $? -eq 0 ]thenecho "mysql初始密码修改成功,mysql部署完成"elseecho "mysql初始密码修改失败"exitfi}while :doread -p "请输入你要选择的参数: " varcase $var ina)install_Apache;;b)install_php;;c)install_mysql;;d)install_Apacheinstall_phpinstall_mysql;;q)exit;;*)printf "请按照上方提供的选项输入!!!\n";;esacdone[root@localhost ~]# chmod +x liang.sh 
[root@localhost ~]# bash liang.sh +-------------------------------------------------------------------------+| LAMP终极部署 V1.0 |+-------------------------------------------------------------------------+| a. 部署Apache服务 || b. 部署php服务 || c. 部署Mysql服务 || d. 一键部署LAMP || q. 按q键退出程序 |+-------------------------------------------------------------------------+请输入你要选择的参数: 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/588815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 泛型之明确使用时机与泛型实现原理

Go 泛型之明确使用时机与泛型实现原理 文章目录 Go 泛型之明确使用时机与泛型实现原理一、引入二、何时适合使用泛型&#xff1f;场景一&#xff1a;编写通用数据结构时场景二&#xff1a;函数操作的是 Go 原生的容器类型时场景三&#xff1a;不同类型实现一些方法的逻辑相同时…

pycharm python环境安装

目录 1.Python安装 2.PyQt5介绍 3.安装pyuic 4.启动designer.exe 5.pyinstaller(打包发布程序) 6.指定源安装 7.PyQt5-tools安装失败处理 8.控件介绍 9.错误记录 1.NameError: name reload is not defined 10.开发记录 重写报文输出和文件 ​编辑 1.Python安装 点…

docker里面不能使用vim的解决办法

docker里面不能使用vim的解决办法 目录 docker里面不能使用vim的解决办法 1.在使用时会出现 2.在使用这些都不能解决的时候考虑 3.测试是否可用 1.在使用时会出现 bash: vim: command not found 出现这种错误时首先考虑使用 apt-get update 然后在用 apt-get install …

vue3中pinia的使用及持久化(详细解释)

解释一下pinia&#xff1a; Pinia是一个基于Vue3的状态管理库&#xff0c;它提供了类似Vuex的功能&#xff0c;但是更加轻量化和简单易用。Pinia的核心思想是将所有状态存储在单个store中&#xff0c;并且将store的行为和数据暴露为可响应的API&#xff0c;从而实现数据&#…

中国历史长河图

历史是一种传承和记忆&#xff0c;不管你是否承认&#xff0c;他就在那里。你也身处其中&#xff0c;就像一条小鱼身处波澜壮阔的大河中&#xff0c;没留下一点痕迹。 了解历史&#xff0c;不是只为了多知道些古代人物、历史事件&#xff0c;或者为了应付考试。而是应该想到&am…

今年努力输出的嵌入式Linux视频

今年努力了一波&#xff0c;几个月周六日无休&#xff0c;自己在嵌入式linux工作有些年头&#xff0c;结合自己也是一直和SLAM工程师对接&#xff0c;所以输出了一波面向SLAM算法工程师Linux课程&#xff0c;当然嵌入式入门的同学也可以学习。下面是合作的官方前面发的宣传文章…

【c++】使用vector存放键值对时,明明给vector的不同键赋了不同的值,但为什么前面键的值会被后面键的值给覆盖掉?

错误描述 运行程序得到结果如下图所示&#xff08;左边是原始数据&#xff0c;xxml文件中真实数据的样子&#xff0c;右图是程序运行得到的结果结果&#xff09;&#xff1a; 对比以上两图可以发现&#xff0c;右图中两个实例的三个属性值都来自左图中的第二个User实例&#x…

【模拟电路】软件Circuit JS

一、模拟电路软件Circuit JS 二、Circuit JS软件配置 三、Circuit JS 软件 常见的快捷键 四、Circuit JS软件基础使用 五、Circuit JS软件使用讲解 欧姆定律电阻的串联和并联电容器的充放电过程电感器和实现理想超导的概念电容阻止电压的突变&#xff0c;电感阻止电流的突变LR…

一二三应用开发平台文件处理设计与实现系列之3——后端统一封装设计与实现

背景 前面介绍了前端通过集成vue-simple-uploader实现了文件的上传&#xff0c;今天重点说一下后端的设计与实现。 功能需求梳理 从功能角度而言&#xff0c;实际主要就两项&#xff0c;一是上传&#xff0c;二是下载。其中上传在文件体积较大的情况下&#xff0c;为了加快上…

Hadoop安装笔记1单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

年度总结 | 回味2023不平凡的一年

目录 前言1. 平台成就2. 自我提升3. Bug连连4. 个人展望 前言 每年CSDN的总结都不能落下&#xff0c;回顾去年&#xff1a;年度总结 | 回味2022不平凡的一年&#xff0c;在回忆今年&#xff0c;展望下年 1. 平台成就 平台造就我&#xff08;我也造就平台哈哈&#xff09; 每…

MATLAB中./和/,.*和*,.^和^的区别

MATLAB中./和/&#xff0c;.*和*&#xff0c;.^ 和^ 的区别 MATLAB中./和/&#xff0c;.*和*&#xff0c;.^ 和^ 的区别./ 和 / 的区别.//实验实验结果 .* 和 * 的区别.**实验实验结果 .^ 和^ 的区别.^n^n实验运行结果 MATLAB中./和/&#xff0c;.和&#xff0c;.^ 和^ 的区别 …

Plantuml之JSON数据语法介绍(二十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

设计模式(4)--对象行为(11)--访问者

1. 意图 表示一个作用于某对象结构中的各元素的操作。 使你可以在不改变各元素的类的前提下定义于作用于这些元素的新操作。 2. 五种角色 抽象访问者(Visitor)、具体访问者(Concrete Visitor)、抽象元素(Element)、 具体元素(Concrete Element)、对象结构(ObjectStructure) 3…

学习笔记15——前端和http协议

学习笔记系列开头惯例发布一些寻亲消息&#xff0c;感谢关注&#xff01; 链接&#xff1a;https://baobeihuijia.com/bbhj/ 关系 客户端&#xff1a;对连接访问到的前端代码进行解析和渲染&#xff0c;就是浏览器的内核服务器端&#xff1a;按照规则编写前端界面代码 解析标准…

Mysql 高级语句

目录 高阶查询select语句&#xff1a; 显示表格中一个或数个字段的所有数据记录&#xff1a; 不显示重复的数据记录&#xff1a;distinct and且&#xff0c;or或 显示已知的值的数据记录&#xff1a;in 显示两个值范围内的数据记录&#xff1a;between 通配符&#xff1…

UE蓝图 RPG动作游戏(一) day15

角色状态制作 制作角色动画混合空间 创建一个动混合空间 添加动作在混合空间 动画蓝图 创建一个动画蓝图 先使用混合空间进行移动&#xff0c;后续优化后再使用状态机 编写垂直水平速度逻辑初始化&#xff0c;获取到此动画的角色组件 获取Horizontal与Vertical的速度逻辑 …

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn不能正常启动&#xff0c;而在CHD Web页面&#xff0c;flink日志报错提示不明确&#xff0c;不能定位具体错误。CM WEB启动失败错误日志如下图所示&#xff1a; CM查看完成错误日志 [31/Dec/2023 10:45:09 0000] 26000…

osg::DrawElements*系列函数及GL_QUAD_STRIP、GL_QUADS绘制四边形效率对比

目录 1. 前言 2. osg::DrawElements*系列函数用法说明 3. GL_QUADS、GL_QUAD_STRIP用法及不同点 4. 效率对比 5. 总结 6. 参考资料 1. 前言 利用osg绘制图元&#xff0c;如&#xff1a;三角形、四边形等&#xff0c;一般用osg::PrimitiveSet类。其派生出了很多子类&#…

使用docker build构建image

文章目录 环境步骤准备例1&#xff1a;基本用法例2&#xff1a;缓存layer例3&#xff1a;Multi-stage例4&#xff1a;Mountcache mountbind mount 例5&#xff1a;参数例6&#xff1a;Export文件例7&#xff1a;测试 参考 环境 RHEL 9.3Docker Community 24.0.7 步骤 在Dock…