一键安装配置tomcat脚本的多层考虑
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了一键安装配置tomcat脚本的多层考虑,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5438字,纯文字阅读大概需要8分钟。
内容图文
对于这个一键脚本,我最初的想法是比较简单的,就是将所有安装的命令都一行行的写好,然后使用固定的命令,一键执行就等于成功了,第一版的内容如下:
#!/bin/bash user=$1 dr=$2 #关闭防火墙 sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service sudo systemctl disable firewalld.service #修改内核参数 sudocp /etc/security/limits.conf /etc/security/limits.conf_bak sudoecho"* soft nproc 65535" >> /etc/security/limits.conf sudoecho"* hard nproc 65535" >> /etc/security/limits.conf sudoecho"* soft nofile 65536" >> /etc/security/limits.conf sudoecho"* hard nofile 65536" >> /etc/security/limits.conf #创建运行用户和目录 sudo groupadd $user;useradd -g $user $user sudoecho"tom!23cat" | passwd $user --stdin sudochown -R $user:$user /$dr/* sudo chmod 755 -R /$dr/* sudo mkdir -p /$dr/software/ sudo chmod 777 /$dr/software/ #修改防火墙参数 cp /etc/selinux/config /etc/selinux/config_bak se1=`grep ^SELINUX= /etc/selinux/config | grep -v "#"|awk -F‘=‘ ‘{print $NF}‘` sed -i -e "s/$se1/disabled/g" /etc/selinux/config grep ^SELINUX= /etc/selinux/config | grep -v "#"
然而,当我给上司看了的时候,瞬间惊呆了,因为太烂了,运维5年写出如此幼稚的安装脚本,有如下的问题需要判断:
1、若是运行用户或者安装目录已存在,有做判断?不存在,又有做判断?
2、怎么确定你limits配置没有错误?
3、若是给了多个参数,脚本又如何判断是否执行?
4、若是执行创建的用户名称或者目录,包含特殊字符,执行是否停止,有做判断?如何限制只允许用户使用数字或者字母创建?
5、怎么判断tomcat安装成功?
6、是否有安装完成后,就能让人知道那些账号密码还有访问路径等信息?
7、/这个符号的问题,如何保证目录名称无论是是/a/b 或者ab/sb/等,都可以正常创建?
8、若是脚本跟安装文件,不在同一个目录下,是否做了执行判断?如安装脚本是调用当前目录下的,tomcat目录文件,若是当前目录没有,又会怎么样?
涵盖了上述的问题,一直修改了很多次,最终完成了下面这个可用的版本,跟最初的版本差距甚大,脚本里面涵盖的命令不难,只是没有深思,之前完全没有考虑那么多,导致出版写那么糟糕
同时主要原因是之前考虑的层面太浅显了,没有多层次的,深入去思考,各个方面的可能引发安装失败的问题,希望以此为鉴。
1 #!/bin/bash 2###安装目录文件检测,确认安装文件跟脚本是在同一个目录下## 3for i in {tomcat,jdk1.8.0_251} 4do 5 Path=`pwd`/$i 6if [[ -d "$Path" ]] 7then 8echo $i 9else 10 eche “$i,不存在,请确认执行脚本所在的目录是否存在安装文件” 11 exit 1; 12fi 13done 14###安装前判断命名,只能输入两个参数,多或者少都会退出##### 15 [ $# -ne 2 ] && { 16echo “缺少参数,不要使用特殊字符命名,请使用这个格式执行安装命令: shinstall.sh 运行用户名 运行目录名,且只允许使用字母或者数字命名用户或者目录,如sh install.sh ap123ps /abc/abs/ 或 shinstall.sh apps /abc/ 或 shinstall.sh ags /ab/c/等“; 17 exit 1; 18} 19 ###这行是为了去掉/这个符号,方便去确认目录名称,是否包含特殊符号 20 dr_tmp=`echo $2| sed -e ‘s/\///g‘` 21for i in {$1,$dr_tmp} 22do 23####$i这个字符串里面是否只有一个或者多个的数字、大或小写的字母,如果有那么命名正确##### 24if [[ $i =~ ^[a-z\|A-Z\|0-9]+$ ]] 25then 26echo $i 命名正确 27else 28echo $i 命名有误,请用字母或数字,重新执行安装 29 exit 1; 30fi 31done 32 user=$1 33 #####这行就是为了清楚 目录名称首尾的/,避免下面的代码里面出现//a//这样的情况出现#### 34 dr=`echo $2 | sed -e "s/^\///g" |sed -e "s/\/$//g"` 35echo"开始安装,预计两分钟内完成" 36echo"安装用户 $user " 37 38 ##函数设置,判断用户是否存在,使用mkdir -p 不管目录是否存在都可以执行成功,所不需要加判断## 39user_create_check(){ 40 b=`cat /etc/passwd | awk -F‘:‘‘{print $1}‘ | grep ^$user$` 41if [[ $user == $b ]] 42thenecho “用户已经存在” 43sudomkdir -p /$dr/ 44sudomv jdk1.8.0_251 tomcat /$dr/ 45sudochown -R $user:$user /$dr/* 46 sudo chmod 755 -R /$dr/* 47 sudo mkdir -p /$dr/software/ 48 sudo chmod 777 /$dr/software/ 49 echo “运行tomcat用的户和目录准备完成” 50 else 51 sudo groupadd $user;useradd -g $user $user 52 sudo echo "tom#123cat" | passwd $user --stdin 53 sudo mkdir -p /$dr/ 54 sudo mv jdk1.8.0_251 tomcat /$dr/ 55 sudo chown -R $user:$user /$dr/* 56 sudo chmod 755 -R /$dr/* 57 sudo mkdir -p /$dr/software/ 58 sudo chmod 777 /$dr/software/ 59 echo “运行tomcat用的户和目录准备完成” 60 fi 61} 62 63limit_wirte_check(){ 64 limit=`tail -4 /etc/security/limits.conf | grep ^\*| awk -F" " ‘{print $NF}‘ | awk ‘{sum += $1};END {print sum}‘` 65 limi_sum=262142 66 if [[ $limit -eq $limi_sum ]] 67 then echo “内核参数配置完成” 68 else 69 echo “内核参数配置未完成,请手动向/etc/security/limits.conf 添加:* soft nproc 65535 ,* hard nproc 65535 ,* soft nofile 65536 ,* hard nofile 65536,这四行配置” 70 fi 71} 72#创建用户和修改tomcat目录权限 73user_create_check 74#关闭防火墙 75sudo systemctl stop firewalld.service 76sudo systemctl disable firewalld.service 77sudo systemctl disable firewalld.service 78#修改内核参数 79sudo cp /etc/security/limits.conf /etc/security/limits.conf_bak 80sudo echo "* soft nproc 65535" >> /etc/security/limits.conf 81sudo echo "* hard nproc 65535" >> /etc/security/limits.conf 82sudo echo "* soft nofile 65536" >> /etc/security/limits.conf 83sudo echo "* hard nofile 65536" >> /etc/security/limits.conf 84limit_wirte_check 85#修改防火墙参数 86cp /etc/selinux/config /etc/selinux/config_bak 87se1=`grep ^SELINUX= /etc/selinux/config | grep -v "#"|awk -F‘=‘ ‘{print $NF}‘` 88sudo sed -i -e "s/$se1/disabled/g" /etc/selinux/config 89sudo grep ^SELINUX= /etc/selinux/config | grep -v "#" 90#修改环境参数 91sudo cp /etc/profile /etc/profile_bak 92sudo echo "export JAVA_HOME=/$dr/jdk1.8.0_251" >> /etc/profile 93sudo echo "export JAVA_BASE=/$dr/jdk1.8.0_251" >> /etc/profile 94sudo echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile 95 96#创建运行用户,配置运行环境参数 97sudo cp /home/$user/.bash_profile /home/$user/.bash_profile_bak 98sudo echo "export CATALINA_HOME=/$dr/tomcat" >> /home/$user/.bash_profile 99sudo echo "export CATALINA_BASE=/$dr/tomcat" >> /home/$user/.bash_profile 100###这里$里面多一个\是为了转义,让它以字符串的形式重定向到文件里面,这样写入的和看到的内容才会一致### 101sudo echo "export PATH=\$PATH:\$CATALINA_HOME/bin" >> /home/$user/.bash_profile 102sudo chmod 755 /home/$user/.bash_profile 103sudo chown $user.$user -R /home/$user/ 104echo $user passwd:"tom!23cat" 105su - $user -c "source ~/.bash_profile" 106su - $user -c "startup.sh" 107sleep 10s 108su - $user -c "curl localhost:8880" 109echo -e 110echo “web访问测试路径 http://服务器公网访问地址:8080,本地访问localhost:8880“ 111echo “tomcat运行用户$user ,如果它是新建的用户,那么$user访问密码tom#123cat” 112echo “tomcat安装目录 /$dr/”
原文:https://www.cnblogs.com/hardxuexi/p/14275127.html
内容总结
以上是互联网集市为您收集整理的一键安装配置tomcat脚本的多层考虑全部内容,希望文章能够帮你解决一键安装配置tomcat脚本的多层考虑所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。