技术干货:Shell脚本一键部署及运用企业级LNMP架构----------------------------小董偷懒系列

本文主要是介绍技术干货:Shell脚本一键部署及运用企业级LNMP架构----------------------------小董偷懒系列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Shell脚本一键部署及运用企业级LNMP架构

  • 来了来了干货来了 ~~偷懒就对了~~

来了来了干货来了 偷懒就对了

在这里插入图片描述
不懂什么意思 请移步我上上一篇博客点击这里

#!/bin/bash
#
IP=20.0.0.27
PASSWORD=123456clear# 判断脚本执行者是否为root用户
if [ "`whoami`" != "root" ];thenecho "请以root用户身份执行该脚本!" exit 1
fi# 交互提示是否确认进行安装
echo "----------欢迎使用LAMP+Discuz一键安装脚本 V1.1---2020-09-04-----"
echo "软件包版本:httpd-2.4.29、mysql-5.6.26、php-5.6.11"
echo "注意事项:"
echo "1.本脚本适用于Centos7.x(其他系统未测试),请在安装前先将安装包拷贝到/opt目录下"
echo "2.本脚本适用于阿里云服务器,在安装前请修改脚本第3、4行的IP,服务器内、外网IP地址"
echo "3.在安装过程中请保证网络畅通"
echo "4.请使用source命令执行该脚本"
echo "---------------------------------------------------------------"
echo ""
while true;do
read -p "是否进行开始安装?(y/n)" a
if [ $a = y ];thenecho "开始为您安装Apache..."breakelif [ $a = n ];thenecho "用户已取消安装,退出程序..."exit 1elseecho "输入有误,请重新输入!" 
fi
done# 安装LAMP服务依赖环境
yum -y install gcc gcc-c++ make pcre-devel expat-devel perl bzip2 expect ncurses-devel autoconf cmake gd libpng libpng-devel pcre pcre-devel libxml2-devel libjpeg-devel# 安装Apache
tar jxvf /opt/httpd-2.4.29.tar.bz2 -C /opt
tar zxvf /opt/apr-util-1.6.0.tar.gz -C /opt
tar zxvf /opt/apr-1.6.2.tar.gz -C /opt
mv /opt/apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
mv /opt/apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util
cd /opt/httpd-2.4.29
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
make && make install
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
sed -i '2a# chkconfig:35 85 21' /etc/init.d/httpd
cd /etc/init.d/
chkconfig --add httpd
sed -i "51c Listen ${IP}:80" /usr/local/httpd/conf/httpd.conf
sed -i "52c #Listen 80" /usr/local/httpd/conf/httpd.conf
sed -i "198c ServerName www.test.com:80" /usr/local/httpd/conf/httpd.conf
ln -s /usr/local/httpd/bin/* /usr/local/bin/
setenforce 0 && systemctl stop firewalld
service httpd start# 安装MySQL
tar zxvf /opt/mysql-5.6.26.tar.gz -C /opt
cd /opt/mysql-5.6.26/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc/ \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
make && make install
/usr/bin/expect <<-EOF
spawn cp support-files/my-default.cnf /etc/my.cnf 
expect { "?"{send "\r";}
}
expect eof
EOF
cp /opt/mysql-5.6.26/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add /etc/init.d/mysqld
chkconfig mysqld --level 35 on
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
cd /usr/local/mysql/scripts/
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
sed -i '46c basedir=/usr/local/mysql' /etc/init.d/mysqld
sed -i '47c datadir=/home/mysql' /etc/init.d/mysqld
echo "bind-address=0.0.0.0" >> /etc/my.cnf
service mysqld start
/usr/bin/expect <<-EOF
spawn mysqladmin -u root -p password "$PASSWORD"
expect { ":"{send "\r";}
}
expect eof
EOF# 安装PHP
tar xjvf /opt/php-5.6.11.tar.bz2 -C /opt
cd /opt/php-5.6.11
./configure \
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring
make && make install
cp /opt/php-5.6.11/php.ini-development /usr/local/php5/php.ini
ln -s /usr/local/php5/bin/* /usr/local/bin/
sed -i '381aAddType application/x-httpd-php .php' /usr/local/httpd/conf/httpd.conf
sed -i '382aAddType application/x-httpd-php-source .phps' /usr/local/httpd/conf/httpd.conf
sed -i '255cDirectoryIndex index.php index.html' /usr/local/httpd/conf/httpd.conf
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
service httpd stop
service httpd start
  • 安装包可以私聊我
  • 代码不是太严谨 但是可以看
    在这里插入图片描述

这篇关于技术干货:Shell脚本一键部署及运用企业级LNMP架构----------------------------小董偷懒系列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/350748

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到