运维必看--Shell脚本实现LAMP自动部署!

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本篇内容记录了Shell脚本实现LAMP自动部署!

1.apache函数


#! /bin/bash
# by caq 0530
# auto_install_lamp
#链接:https://pan.baidu.com/s/1ZOaqgznBZsTStWaaM7S2Ag 
#提取码:wjrz
#方便下载,当然也可以在官网下载
apache()
{
H_FILES=httpd-2.4.43.tar.gz
H_PREFIX=/usr/local/httpd/
a=apr-1.7.0.tar.gz
b=apr-util-1.6.1.tar.gz
c=apr-1.7.0
d=apr-util-1.6.1
systemctl stop firewalld
setenforce 0
yum -y install \
gcc \
gcc-c++ \
expat-devel \
perl \
net-tools \
vim
if [[ ! -f $a ]];then
        echo "Please Download $a"
elif [[ ! -f $b ]];then
        echo "Please Download $b"
elif [[ ! -f $H_FILES ]];then
        echo "Please Download $H_FILES"
else
        tar xvf $a
        tar xvf $b
        tar xvf $H_FILES
fi
mv $c $H_FILES_DIR/srclib/apr
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,please check $H_FILE_DIR!"
fi
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
sed '/bash/a # chkconfig: 35 85 21' /etc/init.d/httpd
chkconfig --add httpd
systemctl daemon-reload
sed -i 's/#ServerName www.example.com:80/ServerName www.example.com/g' /etc/httpd.conf
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
ln -s /usr/local/httpd/bin/* /usr/local/bin/
systemctl start httpd
systemctl enable httpd
echo '--------------------------------'
echo "apache install sueccessful"             
echo '-------------------------------'
}


装完apachel后可以访问测试页面,看是否安装成功


微信图片_20220509195915.png


(注意,网页默认显示内容为:/usr/local/httpd/htdocs/index.html)


2.Mysql函数


mysql()
{
M_FILE=mysql-5.5.62.tar.gz
M_DIR=mysql-5.5.62
C_FILE=cmake-2.8.11.2.tar.gz
C_DIR=cmake-2.8.11.2
# install cmake
# edit install
cd
cd $C_DIR
./configure
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,please $C_DIR!"
fi
cd
# config mysql
mkdir -p /usr/local/mysql/data
groupadd mysql
useradd -g mysql -s /usr/sbin/nologin mysql
if [[ ! -f $M_FILE ]];then
        echo "Please Download $M_FILE"
else
        tar zxvf $M_FILE
fi
cd $M_DIR
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,please CMAKE!"
fi
rm -rf /etc/my.cnf
cp support-files/my-medium.cnf /etc/my.cnf
#set authority
chmod +x /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
#config auto start
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
cat << EOF >> /root/qwe.txt
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
tmpdir = /tmp
EOF
sed -i '/\[mysqld\]/r /root/qqqq.txt' /etc/my.cnf
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source  /etc/profile
service mysqld start
service mysqld enable
mysqladmin -u root password "123"
echo "-------------------------"
echo "mysql install successful!"
echo "-------------------------"
}


Mysql安装成功可以查看能不能登录mysql,登录成功即安装成功


mysql的3306端口已经打开


[root@a ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::* 


mysql登录测试,成功!


[root@a ~]# mysql -uroot -p123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.62-log Source distribution
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)


3.php函数


php()
{
P_FILES=php-5.5.14.tar.gz
P_DIR=php-5.5.14
cd
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
if [[ ! -f $P_FILES ]];then
    echo "Please install $P_FILES"
else
        tar zxvf $P_FILES
fi
cd $P_DIR
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,Please $P_DIR!"
fi
cp php.ini-development /usr/local/php/lib/php.ini
sed -i 's/;date.timezone =/date\.timezone = \Asia\/Shanghai/' /usr/local/php/lib/php.ini
echo "AddType application/x-httpd-php .php" >> /etc/httpd.conf
echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd.conf
sed  -i 's/index.html/index\.php index\.html/' /etc/httpd.conf
rm -f /usr/local/httpd/htdocs/index.html
cat << EOF >> /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
EOF
systemctl restart httpd
systemctl enable httpd
echo "------------------------"
echo "PHP install successful!"
echo "------------------------"
}


4.调用函数


read -p "Please Input Your Install [1.apache 2.mysql 3.php 4.exit]" caq
if [[ $caq -eq 1 ]];then
        apache
elif [[ $caq -eq 2 ]];then
        mysql
elif [[ $caq -eq 3 ]];then
        php
elif [[ $caq -eq 4 ]];then
        exit 0
else
        echo "error,input number[1、2、3、4]"
fi


5.源码


#! /bin/bash
# by caq 0530
# auto_install_lamp
#链接:https://pan.baidu.com/s/1ZOaqgznBZsTStWaaM7S2Ag 
#提取码:wjrz
#方便下载,当然也可以在官网下载
apache()
{
H_FILES=httpd-2.4.43.tar.gz
H_PREFIX=/usr/local/httpd/
a=apr-1.7.0.tar.gz
b=apr-util-1.6.1.tar.gz
c=apr-1.7.0
d=apr-util-1.6.1
systemctl stop firewalld
setenforce 0
yum -y install \
gcc \
gcc-c++ \
expat-devel \
perl \
net-tools \
vim
if [[ ! -f $a ]];then
        echo "Please Download $a"
elif [[ ! -f $b ]];then
        echo "Please Download $b"
elif [[ ! -f $H_FILES ]];then
        echo "Please Download $H_FILES"
else
        tar xvf $a
        tar xvf $b
        tar xvf $H_FILES
fi
mv $c $H_FILES_DIR/srclib/apr
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,please check $H_FILE_DIR!"
fi
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
sed '/bash/a # chkconfig: 35 85 21' /etc/init.d/httpd
chkconfig --add httpd
systemctl daemon-reload
ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
ln -s /usr/local/httpd/bin/* /usr/local/bin/
systemctl start httpd
systemctl enable httpd
echo '--------------------------------'
echo "apache install sueccessful"             
echo '-------------------------------'
}
mysql()
{
M_FILE=mysql-5.5.62.tar.gz
M_DIR=mysql-5.5.62
C_FILE=cmake-2.8.11.2.tar.gz
C_DIR=cmake-2.8.11.2
# install cmake
# edit install
cd
cd $C_DIR
./configure
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,please $C_DIR!"
fi
cd
# config mysql
mkdir -p /usr/local/mysql/data
groupadd mysql
useradd -g mysql -s /usr/sbin/nologin mysql
if [[ ! -f $M_FILE ]];then
        echo "Please Download $M_FILE"
else
        tar zxvf $M_FILE
fi
cd $M_DIR
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,please CMAKE!"
rm -rf /etc/my.cnf
cp support-files/my-medium.cnf /etc/my.cnf
#set authority
chmod +x /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
#config auto start
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
cat << EOF >> /root/qwe.txt
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
tmpdir = /tmp
EOF
sed -i '/\[mysqld\]/r /root/qqqq.txt' /etc/my.cnf
echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source  /etc/profile
service mysqld start
service mysqld enable
mysqladmin -u root password "123"
echo "-------------------------"
echo "mysql install successful!"
echo "-------------------------"
}
php()
{
P_FILES=php-5.5.14.tar.gz
P_DIR=php-5.5.14
cd
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
if [[ ! -f $P_FILES ]];then
        tar zxvf $P_FILES
fi
cd $P_DIR
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
if [[ $? -eq 0 ]];then
        make && make install
else
        echo "error,Please $P_DIR!"
fi
cp php.ini-development /usr/local/php/lib/php.ini
sed -i 's/;date.timezone =/date\.timezone = \Asia\/Shanghai/' /usr/local/php/lib/php.ini
echo "AddType application/x-httpd-php .php" >> /etc/httpd.conf
echo "AddType application/x-httpd-php-source .phps" >> /etc/httpd.conf
sed  -i 's/index.html/index\.php index\.html/' /etc/httpd.conf
rm -f /usr/local/httpd/htdocs/index.html
cat << EOF >> /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
EOF
systemctl restart httpd
systemctl enable httpd
echo "------------------------"
echo "PHP install successful!"
echo "------------------------"
}
read -p "Please Input Your Install [1.apache 2.mysql 3.php 4.exit]" caq
if [[ $caq -eq 1 ]];then
        apache
elif [[ $caq -eq 2 ]];then
        mysql
elif [[ $caq -eq 3 ]];then
        php
elif [[ $caq -eq 4 ]];then
        exit 0
else
        echo "error,input number[1、2、3、4]"
fi


6.成果图


微信图片_20220509200425.png


撒花完结^^)

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
120 1
|
30天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
2月前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
2月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
73 2
6种方法打造出色的Shell脚本
|
2月前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
2月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。
|
2月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
72 1
|
2月前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
103 3
|
2月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
66 2
|
2月前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
33 3

热门文章

最新文章