Advertisement

Shell自动化部署应用

阅读量:

文章目录

  • ==Shell自动化部署应用==
      • 一、基础版:为woniusales系统编写一个完整的Shell脚本部署方案(40分)
          • 1.在Linux系统中安装MySQL Community Server 5.6版本,并确保MySQL服务能够正常启动(8分)
      • 2.在MySQL数据库中创建woniusales数据库,并生成远程访问权限的用户账号;同时向数据库中导入初始数据(8分)
      • 3.解压并配置Tomcat服务器至/opt/tomcat目录,并设置运行端口为8088;启动服务后进行测试以确认网站是否正常运行(8分)
      • 4.若Tomcat服务成功运行,则将woniusales.war文件放置于Tomcat的webapps目录下,并更新数据库连接配置信息(8分)
      • 5.使用curl命令访问woniusales服务器,并通过curl发送Post请求实现对系统的登录认证;验证登录操作是否成功(8分)

二、进阶版:编写一个Shell脚本用于实现全自动无人值守部署WoniuNote系统(60分)

具体要求如下:

  1. 服务器配置参数设置
  2. 文件管理系统模块的建立
  3. 日志管理模块的配置
  4. 数据备份与恢复机制的实现
  5. 用户权限管理系统的配置
  6. 系统监控与报警机制的 setup

Shell自动化部署应用

一、基础版本:编写一个Shell脚本用于部署woniusales系统, 自动完成无值守安装流程(40分)

vi /opt/install.sh

前提条件:最新精简版的 CentOS 操作系统已经配置完成。系统中已获取到压缩格式的 woniusales.war 文件以及与其匹配的 SQL 语句文档,并将这些关键资源存储于 /opt 路径下。目前系统中不包含其他附加文件或目录

1.在线安装 MySQL Community Server 5.6 版本,并确保MySQL服务正常启动(8分)
复制代码
    wget -b -O mysql.rpm https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
    rpm -ivh mysql.rpm  #将mysql下载的源安装在 /etc/yum.repos.d/ 目录下
    
    linea=$(grep -n "mysql56-community" /etc/yum.repos.d/mysql-community.repo | awk -F : '{print $1}')
    
    ((linea+=3))
    
    sed -i "${linea}c enabled=1" /etc/yum.repos.d/mysql-community.repo
    
    lineb=$(grep -n "mysql80-community" /etc/yum.repos.d/mysql-community.repo | awk -F : '{print $1}')
    
    ((lineb+=3))
    
    sed -i "${lineb}c enabled=0" /etc/yum.repos.d/mysql-community.repo
    
    yum install mysql-server -y
    
    systemctl start mysqld
  • 使用-b选项启动该过程并避免在终端显示相关信息
  • 使用-O选项完成下载后自动重命名文件
  • 在sed命令中涉及变量时,请确保括号内的空格被替换为双引号
    • sed -i "${lineb}c enabled=0"

建议我们对 /etc/yum.repos.d/mysql-comnunity.repo 文件进行编辑,在该文件中指定mysql5.6版本的enable字段设置为1,并将其他所有mysql-server版本的enable字段设置为0。这样就不能直接打开vi命令行界面,并且因为我们需要实现完全自动化的工作流程, 因此只能依赖于sed命令和awk工具来进行操作。关于sed命令的操作方法如下:首先在文件末尾追加一行内容, 允许后续脚本继续运行;其次定位到指定字段的位置并进行相应的数值修改;再次利用通配符功能匹配所需模式;最后确保未被明确指定的内容自动采用默认值;并在执行各项操作时添加详细的注释说明以提高可读性

新增功能可以在a的后部接收字符串,并且这些字符串会实际出现在当前的下一行位置。

(2)c:取代,c的后面可以接字符串,这些字符串可以取代n1,n2 之间的行(按行取代)

(3)d:删除,因为是删除,所以 d 后面通常不会接任何字符串

(4)i:添加操作,在其后端部分可容纳字符内容块,并使这些字符块位于下一行,并与当前所在的行形成对应关系

(5)P:打印,将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行

6)s用于替代,在编程中可以直接执行替代操作(通常该操作可以通过结合正则表达式来进行查找替换)

在MySQL数据库中建立一个名为woniusales的数据库,并生成一个可远程登录的账号;同时自动生成相应的数据内容。(8分)

注意:当下需要用语句来创建数据库用于远程登录用户,并且过去也需要进入交互模式。该怎么办呢?

复制代码
    #因mysql5.6默认root用户无密码,故使用 mysql -uroot -e " " ,引号内执行语句即可
    mysql -uroot -e "use mysql;"
    mysql -uroot -e "create database woniusales character set utf8 collate utf8_general_ci;"
    mysql -uroot -e "create user remote@'%' identified by 'p-0p-0p-0';"
    mysql -uroot -e "grant all priveleges on woniusales.* to remote@'%';"
    mysql -uroot -e "source woniusales.sql"

但是即使在MySQL 5.6中可以实现这种方式登录,
那如果换成MySQL 5.7会是什么情况呢?
MySQL 5.7会自动为用户设置密码,
那么该如何进行操作呢?

  • 首先需要获取默认用户的密码信息,
    然后在MySQL控制台中修改root用户的密码设置,
    最后按照之前的步骤进行配置。

解压Tomcat程序至/opt/tomcat目录,并更改为使用端口号8088启动服务以使网站能够正常访问(8分)

复制代码
    #下载java,注意版本
    #配置java环境变量,每次开启都生效
    #下载tomcat,并配置
    #使用curl来测试网站是否正常

当Tomcat启动成功时,在其应用目录下将woniusales.war部署至 Tomcat的应用程序目录中,并相应地更新woniusales的应用数据库配置参数(共8分)

复制代码
    先判断tomcat是否启动成功
    mv /opt/woniusales.war /opt/tomcat/webapps/
    /opt/tomcat/bin/startup.sh
    rm -f /opt/tomcat/webapps/woniusales/WEB_INF/classes/db.profiles
    vi /opt/tomcat/webapps/woniusales/WEB_INF/classes/db.profiles
    输入:
    db_url=jdbc:mysql://localhost:3306/woniusales?useUnicode=true&characterEncoding=utf8 
    db_username=root
    db_password=p-0p-0p-0
    db_driver=com.mysql.jdbc.Driver
    保存退出,重启 tomcat
    /opt/tomcat/bin/shutdown.sh
    /opt/tomcat/bin/startup.sh
5. 调用curl指令访问woniusales网站,并利用curl工具发送一个POST请求数组至系统进行登录,请确认该操作完成后将返回相应的结果状态码。(8分)
复制代码
    curl -d "username=admin&password=admin123&verifycode=0000" http://192.168.230.147:8083/woniusales/user/login

Shell脚本应当具有中文注释,并在上述作业过程中每个关键阶段的日志记录内容以中文形式存储至/opt/woniusales.log文件中(若未执行脚本操作日志输出或未能正确添加中文注释,则可能因违反规定而被扣除10分)。

最终执行代码

复制代码
    rpm -qa | grep mysql-community-server 1> /dev/null 2> /dev/null
    if [ $? -eq 0 ]; then
    	echo "MySQL数据库已经安装" | tee -a /opt/mysqlinstall.log
    else
    	echo "MySQL数据库没有安装,准备安装" | tee -a /opt/mysqlinstall.log
    
    	yum install wget -y 1> /dev/null
    	slepp 7
    	
    	wget -b -O mysql.rpm https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 1> /dev/null
    	slepp 7
    	
    	rpm -ivh mysql.rpm 1> /dev/null
    	slepp 3
    	
    	linea=$(grep -n "mysql56-community" /etc/yum.repos.d/mysql-community.repo | awk -F : '{print $1}')
    	((linea+=3))
    	sed -i "${linea}c enabled=1" /etc/yum.repos.d/mysql-community.repo
    
    	lineb=$(grep -n "mysql80-community" /etc/yum.repos.d/mysql-community.repo | awk -F : '{print $1}')
    	((lineb+=3))
    	sed -i "${lineb}c enabled=0" /etc/yum.repos.d/mysql-community.repo
    	echo "MySQL数据库源配置完成,开始安装" | tee -a /opt/mysqlinstall.log
    
    	yum install mysql-server -y 1> /dev/null
    	slepp 30
    	systemctl list-unit-files | grep mysqld
    	if [ $? -eq 0 ]; then 
    		echo "MySQL数据库安装成功" | tee -a /opt/mysqlinstall.log
    		systemctl start mysqld 1> /dev/null
    		echo "MySQL数据库打开成功" | tee -a /opt/mysqlinstall.log
    	else
    		echo "MySQL数据库安装失败" | tee -a /opt/mysqlinstall.log
    		exit 1
    	fi
    	
    fi
    
    systemctl list-unit-files | grep mysqld
    if [$? -eq 0]; then
    	mysql -uroot -e "use mysql;" 1> /dev/null 2> /dev/null
    	mysql -uroot -e "create database woniusales character set utf8 collate utf8_general_ci;" 1> /dev/null 2> /dev/null
    	echo "woniusales数据库创建完成" | tee -a /opt/woniusalesinstall.log 
    	
    	mysql -uroot -e "create user remote@'%' identified by 'p-0p-0p-0';" 1> /dev/null 2> /dev/null
    	mysql -uroot -e "grant all priveleges on woniusales.* to remote@'%';" 1> /dev/null 2> /dev/null
    	echo "woniusales远程用户创建完成" | tee -a /opt/woniusalesinstall.log 
    	
    	mysql -uroot -e "source woniusales.sql" 1> /dev/null 2> /dev/null
    	echo "woniusales数据库数据插入成功" | tee -a /opt/woniusalesinstall.log 
    else
    	echo "MySQL数据库安装失败" | tee -a /opt/mysqlinstall.log
    	exit 1;

这里只展示到配置tomcat之前,即安装配置好数据库

二、进阶版:编写一段Shell脚本部署WoniuNote系统,全自动无人值守实现如下功能:(60分)

预设前提:全新Cent0S最小化安装版,已经有woniunote.zip文件,和对应的数据库SQL语句,均保存于/opt目录下,无其他文件

1.在线安装MySQL Community Server 5.7版本,并确保MySQL服务正常启动,同时修改root的密码为MyPass12!! (10分)

2.为MySQL创建woniunote数据库并创建可以远程登录的账号,同时为woniunote生成数据(6分)

3.在线安装PHP 7.3版本并配置环境变量和www账号,完成后启动php-fpm服务,用于与Nginx进行通信(10分)

4.从Nginx官网自动下载最新版本Nginx,并进行源码安装(不要求LuaJIT等额外模块),测试Nginx是否安装成功(8分)

5.解压woniunote.zip文件到/www/web目录,修改woniunote与数据库的连接信息,确保可以正常连接到数据库(8分)

6.配置Nginx与PHP的连接,将默认首页指向/www/web/woniunote/public,并确保nginx.conf配置文件支持URL重定向(8分)

7.使用curl命令访问woniunote,并将成功与否的测试结果以及上述操作步骤的日志信息发送到你的QQ邮箱(10分)

要求:Shell脚本必须有中文注释,同时,将上述操作过程中,每一个关键步骤的日志,以中文信息输出到/opt/woniunote.log文件中(上述7题如果没有
输出脚本操作日志或者没有写好中文注释,最高可扣10分)

全部评论 (0)

还没有任何评论哟~