首页 > 系统相关 >shell脚本部署lamp

shell脚本部署lamp

时间:2024-09-08 15:53:45浏览次数:10  
标签:脚本 shell -- null dev echo lamp mysql php

[root@node1 ~]# yum -y install lrzsz
//先将包文件拖进来
[root@node1 ~]# cd /opt/
[root@node1 opt]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz   httpd-2.4.54.tar.gz  mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz    php-8.2.5.tar.gz
[root@node1 ~]# cd /
[root@node1 ~]# vim lamp.sh 
//在里面写入以下内容
#!/bin/bash

#安装工具包
echo "正在安装需要的工具包,请稍等..."
yum -y install bzip2  vim make wget openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ libxml2-devel &>/dev/null
echo "安装完成"

#解压apr包
echo "解压apr包文件"
cd /opt
tar -zxvf apr-1.7.0.tar.gz -C /usr/local/ &>/dev/null
tar -zxvf apr-util-1.6.1.tar.gz -C /usr/local &>/dev/null

#安装apr包
cd /usr/local/apr-1.7.0/
sed -i '/$RM "$cfgfile"/d' configure
echo "正在编译安装apr,请耐心等待..."
./configure --prefix=/usr/local/apr &> /dev/null
make &> /dev/null
make install &> /dev/null
echo "apr安装完成"

#安装apr-util
cd /usr/local/apr-util-1.6.1/
echo "正在编译安装apr-util,请耐心等待..."
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr &> /dev/null
make &> /dev/null
make install &> /dev/null
echo "apr-util安装完成"

#安装httpd
echo "正在解压httpd源码包"
cd /opt
tar -zxvf httpd-2.4.54.tar.gz &>/dev/null
echo “httpd源码包解压完成”
cd /opt/httpd-2.4.54
echo "正在编译安装httpd,请耐心等待..."
./configure --prefix=/usr/local/apache \
	--sysconfdir=/etc/httpd24 \
	--enable-so \
	--enable-ssl \
	--enable-cgi \
	--enable-rewrite \
	--with-zlib \
	--with-pcre \
	--with-apr=/usr/local/apr \
	--with-apr-util=/usr/local/apr-util/ \
	--enable-modules=most \
	--enable-mpms-shared=all \
	--with-mpm=prefork &>/dev/null
make &> /dev/null
make install &> /dev/null
cd
echo "httpd安装完成"

#配置systemctl管理httpd
echo "正在配置systemctl管理httpd"
# 定义服务单元文件路径
cat > /usr/lib/systemd/system/httpd.service <<EOF
[Unit]
Description=Apache HTTP Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/apache/bin/apachectl start
ExecStop=/usr/local/apache/bin/apachectl stop
ExecReload=/bin/kill -HUP \$MAINPID

[Install]
WantedBy=multi-user.target
EOF

echo "启动httpd服务"
systemctl restart httpd
systemctl enable httpd

#部署lamp-mysql
echo "-----正在部署mysql-----"
#创建mysql用户
echo "正在验证mysql用户..."
id mysql &> /dev/null
if [ $? -eq 0 ];then
	echo "mysql用户已存在"
else
	echo "正在创建mysql用户..."
	useradd -r -M -s /sbin/nolgin mysql
	echo "mysql用户创建成功"
fi
#安装依赖包
echo "正在安装依赖包..."
yum -y install libncurses* &> /dev/null
echo "安装完成"

#配置mysql
echo "正在配置mysql..."
tar -zxvf /opt/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ &> /dev/null
ln -sv /usr/local/mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql &> /dev/null
chown -R mysql.mysql /usr/local/mysql &> /dev/null
mkdir -p /opt/data &> /dev/null
chown -R mysql.mysql /opt/data/ &> /dev/null
yum -y install libaio &> /dev/null

#数据库初始化
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/ &> /dev/null
ln -sv /usr/local/mysql/include/ /usr/local/include/mysql &> /dev/null
echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf &> /dev/null
ldconfig &> /dev/null

#编辑mysql配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
EOF

sed -ri "s#^(basedir=).*#\1/usr/local/mysql#g"  /usr/local/mysql/support-files/mysql.server
sed -ri "s#^(datadir=).*#\1/opt/data#g"  /usr/local/mysql/support-files/mysql.server

#定义mysql服务可以使用systemd来进行管理
cat > /usr/lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=mysql server daemon
After=network.targe

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP \$MAINPID

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && echo "*****重新加载成功*****"
systemctl enable --now mysqld && echo "*****开机自启mysql成功*****"

#设置数据库密码
read -p "请输入您要设置的数据库密码:" mysql_password
/usr/local/mysql/bin/mysql -uroot -e "set password=password('$mysql_password')"

#做一个链接,添加mysql命令的变量到环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
echo "-----mysql部署完成-----"


#部署lamp-php
#安装依赖包,安装GD库和GD库关联程序,用来处理和生成图片
echo "正在安装依赖包"
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel   &>/dev/null
yum -y install wget gcc gcc-c++ autoconf automake libtool make libxml2 libxml2-devel openssl openssl-devel sqlite-devel libpng libpng-devel libpsl libpsl-devel libicu-devel libcurl-devel &> /dev/null
yum -y install openldap openldap-devel  &>/dev/null
cp -frp /usr/lib64/libldap* /usr/lib/
yum --enablerepo=devel -y install oniguruma-devel &>/dev/null
echo  "依赖包已经安装完成"
#解压php包文件
cd  /opt
tar -zxvf  php-8.2.5.tar.gz &>/dev/null
echo "解压php包文件成功"


#配置编译安装php
cd php-8.2.5
echo  "正在配置php"
./configure --prefix=/usr/local/php \
	--with-apxs2=/usr/local/apache/bin/apxs \
	--with-mysql-sock=/tmp/mysql.sock \
	--enable-fpm \
	--enable-mysqlnd \
	--enable-mysqlnd-compression-support \
	--with-zlib \
	--enable-xml \
	--disable-rpath \
	--enable-bcmath \
	--enable-shmop \
	--enable-sysvsem \
	--enable-mbregex \
	--enable-mbstring \
	--enable-intl \
	--enable-ftp \
	--enable-gd-jis-conv \
	--with-openssl \
	--with-mhash \
	--enable-pcntl \
	--enable-sockets \
	--enable-soap \
	--with-gettext \
	--enable-fileinfo \
	--enable-opcache \
	--with-pear \
	--with-ldap=shared \
	--without-gdbm \
	--with-curl \
	--enable-ctype \
	--without-pear  --disable-phar &>/dev/null
echo "正在编译安装php"
make  &>/dev/null
make install  &>/dev/null
echo "php编译安装完成"

#配置php
echo  "正在配置php"

#测试环境时使用php.ini-development文件,生产环境使用php.ini-production文件
cp php.ini-development /usr/local/php/lib/php.ini

#修改php配置文件,设置时区
sed -i 's/;date.timezone =/date\.timezone = \Asia\/Shanghai/' /usr/local/php/lib/php.ini

#修改httpd服务配置文件,让apache支持php
echo "AddType application/x-httpd-php .php" >> /etc/httpd24/httpd.conf
echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd24/httpd.conf

sed  -i 's/index.html/index\.php index\.html/' /etc/httpd24/httpd.conf

#验证php测试页
rm -f /usr/local/apache/htdocs/index.html

cat > /usr/local/apache/htdocs/index.php <<EOF
<?php
phpinfo();
?>
EOF

echo "php配置完成"

#启动apache服务
/usr/local/apache/bin/apachectl restart
echo "lamp部署完成"

[root@node1 ~]# chmod +x lamp.sh 
[root@node1 ~]# ./lamp.sh 
正在安装需要的工具包,请稍等...
安装完成
解压apr包文件
正在编译安装apr,请耐心等待...
apr安装完成
正在编译安装apr-util,请耐心等待...
apr-util安装完成
正在解压httpd源码包
“httpd源码包解压完成”
正在编译安装httpd,请耐心等待...
httpd安装完成
正在配置systemctl管理httpd
启动httpd服务
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
-----正在部署mysql-----
正在验证mysql用户...
正在创建mysql用户...
useradd: Warning: missing or non-executable shell '/sbin/nolgin'
mysql用户创建成功
正在安装依赖包...
安装完成
正在配置mysql...
*****重新加载成功*****
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
*****开机自启mysql成功*****
请输入您要设置的数据库密码:redhat
-----mysql部署完成-----
正在安装依赖包
依赖包已经安装完成
解压php包文件成功
正在配置php
正在编译安装php
php编译安装完成
正在配置php
php配置完成
lamp部署完成

标签:脚本,shell,--,null,dev,echo,lamp,mysql,php
From: https://blog.csdn.net/q911326/article/details/142028114

相关文章

  • Lamp+发布社区网页
    Lamp+发布discuz社区网页搭建lamp环境还原初始快照,桥接网卡,关闭防火墙和selinux,更改主机名为web写入/etc/hosts本地域名解析,测试是否能ping通示例:(1)使用yum安装httpd mariadb phpyum-yinstallhttpdmariadb-servermariadbphpphp-mysql (2)启动httpd、mar......
  • 在Linux中,可以使用以下命令来获取脚本所在的目录:
    在Linux中,有几种方式可以获取当前正在执行的脚本所在的路径。这些方法依赖于你正在使用的shell(比如bash)或者脚本语言(比如Python,Perl等)。以下是一些常见的方法,特别是在bash脚本中获取脚本路径:###1.使用`$0`和`dirname`命令在bash脚本中,`$0`变量包含了脚本的名称或者路......
  • SAPIEN PowerShell HelpWriter crack
    SAPIENPowerShellHelpWritercrackKeyFeaturesofSAPIENPowerShellHelpWriter:SwiftPerformancewithCachedDataandMulti-threadedCodeVersatileExplorationofLocalandRemoteMachinesAdvancedSearchOptionsandPowerfulFilters......
  • 【工具推荐】0x7eTeamTools v1.2(最新版) -全能的渗透测试工具,一键getshell
    工具介绍:0x7eTeamTools是一个集成了多种渗透测试功能,javafx练习,JS接口提取,漏洞检测的工具,旨在帮助用户进行高效、全面的网络安全测试。从基本的编码转换到复杂的空间测绘和漏洞检测,这款工具提供了全方位的功能支持。下载链接:链接:https://pan.quark.cn/s/8c4268ee6b79软......
  • shell的简单编写
    shebang行shell脚本的第一行是#!/bin/bash,/bin/bash是我们用来解释该脚本的shell的路径,这里是用bash,也可以替换成其他的注释#这是一个注释以#开头表示该符号右侧是注释变量变量赋值在shell中,变量都是以字符串形式存储的,数字字符串会在进行算术运算时自动转换#不......
  • Oracle数据库配置大页脚本
    编辑脚本su-oracle$vihugepages_settings.sh------------------------------------------#!/bin/bash##hugepages_settings.sh##Linuxbashscripttocomputevaluesforthe#recommendedHugePages/HugeTLBconfiguration#onOracleLinux##Note:Thisscri......
  • Linux shell编程学习笔记77:tar命令——快照 & 备份(下)
     0 前言在Linuxshell编程学习笔记76:tar命令——快照&备份(上)中我们研究了 tar命令 的功能、格式、选项说明。现在我们来实践一下。1 应用实例1.1 创建演示文件和目录我们使用echo 命令和输出重定向创建文件f1 和f2,使用mkdir命令创建目录d1[purpleendurer@bash~]e......
  • Linux shell编程学习笔记76:tar命令——快照 & 备份(上)
    0 前言提取系统快照和备份文件都是我们的日常工作。在Windows中,我们可以创建系统还原点,在需要的时候可以把系统还原回去。在Linux中,我们可以使用tar命令来实现。1tar命令的功能,帮助信息,格式,选项和参数说明1.1 tar命令的功能tar名字来自"tapearchive"(磁带归档),最初用于将文件......
  • shell_AWK 获取系统状态信息
    #!/bin/bash#定义巡检日志文件路径,所有日志将记录在此文件中LOG_FILE="/var/log/system_inspection.log"#定义一个函数,将消息输出到日志文件并同时显示在屏幕上log(){#使用`date`获取当前时间,并将消息格式化后追加到日志文件,同时输出到屏幕echo"$(dat......
  • 探索最佳 Shell 工具:全面测评 Bash、Zsh、Fish、Tcsh 和 Ksh
    感谢浪浪云支持发布浪浪云活动链接:https://langlangy.cn/?i8afa52文章目录1.简介2.测评工具3.测评标准4.Bash测评4.1易用性4.2功能特性4.3性能4.4可定制性4.5社区和支持5.Zsh测评5.1易用性5.2功能特性5.3性能5.4可定制性5.5社区和支持6.Fish测......