共耗时10多个小时

思路一

总体设计

ansible-playbook目录结构

[root@ansible ~]# tree /etc/ansible/roles/tomcat
/etc/ansible/roles/tomcat
├── files
│ ├── catalina.sh
│ ├── context.xml
│ └── setenv.sh
├── handlers
│ └── main.yaml
├── tasks
│ ├── install_jdk.yaml
│ ├── install_tomcat.yaml
│ └── main.yaml
├── templates
│ ├── catalina.sh
│ ├── server.xml
│ ├── tomcat.service
│ └── tomcat-users.xml
└── vars
└── main.yaml

入口文件

[root@ansible ~]# ll /etc/ansible/work_dir/tomcat.yaml
-rw-r--r-- 1 root root 55 Mar 29 19:58 /etc/ansible/work_dir/tomcat.yaml

执行与结果

[root@ansible work_dir]# pwd
/etc/ansible/work_dir
[root@ansible work_dir]# ansible-playbook tomcat.yaml

实现过程问题记录

tomcat应用程序是root用户启动的,root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限,这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本修改整个硬盘里的文件,非常危险。

[root@cilent apache-tomcat-8.5.53]# ll tomcat.pid
-rw-r----- 1 root root 6 Mar 30 13:47 tomcat.pid

尝试解决

1.TOMCAT_USER=tomcat

[root@cilent ~]# grep "&& TOMCAT_USER" /usr/local/apache-tomcat-8.5.53/bin/daemon.sh
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat

搜索到的文章大多都是这样解决,但在CentOS7+Tomcat8上不适用

2.重写startup.sh和shutdown.sh脚本

思路:启动和关闭Tomcat应用程序的时候切换到tomcat用户执行

报错如下:

[tomcat@cilent ~]# systemctl restart nginx
==== AUTHENTICATING FOR org.freedesktop.systemdl.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root

3.解决成功

yum安装了tomcat,有系统标准启动方式,查看其配置文件找到了解决办法

在tomcat.service添加个 User=tomcat 就好了

[root@cilent apache-tomcat-8.5.53]# ll tomcat.pid
-rw-r----- 1 tomcat tomcat 6 Mar 30 17:38 tomcat.pid

其他问题记录

1.linux下部署tomcat ,启动和停止分别使用startup.sh和shutdown.sh,它们都会调用catalina.sh,进而调用到setenv.sh

2.配置管理用户conf/tomcat-users.xml

<tomcat-users>
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui" />
</tomcat-users>

3.访问Manager App 403 Access Denied

搜索的文章都只提到了在tomcat-users.xml里添加上面的语句,无法解决

通过403页面的官方文档,找到解决办法

By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you'll need to edit the Manager App's context.xml file

#cat webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

这段代码的作用是限制来访IP,127.d+.d+.d+|::1|0:0:0:0:0:0:0:1 是正则表达式,表示IPv4和IPv6的本机环回地址,所以其他主机无法访问

修改为所有人都可以访问 allow="^.*$"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+"

思路二(失败)

yum安装了tomcat,需要配置JAVA变量,有系统标准启动方式,所以想能不能仿照其配置文件进行ansible自动安装配置

配置了JAVA变量,复制了配置文件/etc/tomcat,/usr/libexec/tomcat目录(按实际情况配置)

报错如下:

猜测是漏了配置文件


有时间再继续探索

企业级自动化部署方案——ansible实现tomcat自动安装和配置的更多相关文章

  1. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  2. 自动化部署方案CICD

    自动化部署方案   由于来来也的时间不久,可能对现有的部署情况不是很了解,以下是个人对POC自动化部署的设计方案. 自动化部署优点 降低成本,提高生产力,高可用,更可靠,性能优化   与gitlab持 ...

  3. 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结

    系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...

  4. TomCat的安装与配置方法

    经过自己的研究,各种烦,所以要写个博客,帮助大家安装这个软件. 一.安装TomCat(因为大家都安装了jdk,所以就不写了) 1.下载TomCat 网址如下:http://tomcat.apache. ...

  5. JDK和TOMCAT的安装与配置环境变量

    一.JDK该怎么安装与配置环境变量 步骤1.安装JDK选择安装目录,安装jdk1.8.0_77过程中会出现安装提示. 步骤2.(1)安装jdk随意选择目录 只需把默认安装目录\java之前的目录修改即 ...

  6. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

  7. 1、Web容器的理解&Tomcat的安装与配置

    Web容器的理解 <Java Web开发实战经典——基础篇>一书中对Web容器这一概念阐述得很好,借用其观点对Web容器加以理解: 想要运行一个Java Web的程序,则必须有相应的Web ...

  8. Tomcat+JDK安装和配置

    Tomcat+JDK安装和配置 一.打开FlashFXP软件,建立连接,选择需要的包,右击传输到 /home/guest中 二.进入到:cd /home/guest中,对tomcat包进行解压 三.将 ...

  9. linux下jdk与tomcat的安装与配置

    Linux中jdk与tomcat的安装与配置 1.搭建环境: (1)Linux环境:CentOS6.1 (2)jdk-1.8 (3)tomcat-9.0 2.在Linux系统上创建目录 在usr/lo ...

随机推荐

  1. 《自动化平台测试开发-Python测试开发实战》第2次印刷

    书籍货源比较紧张.紧张啊,如此短的时间,已经第2次印刷.第2次印刷. 第2次印刷. 同时该书已确认与台湾出版社合作翻译成繁体版,甚至有可能与国外出版社合作翻译成英文版. 2018年7月 第1次印刷 2 ...

  2. MyBatis 判断条件为等于的时候,常量需要加 .toString()

    当MyBatis 判断条件为等于的时候,常量需要加 .toString() 来转换,这种方法是稳定的,推荐使用,比如: <!-- 正确的,稳定,推荐使用 --> <if test=& ...

  3. CSS 加载动画

    CSS加载动画 实现加载动画效果,需要的两个关键步骤: 1.做出环形外观 border:16px solid #f3f3f3; border-radius:50%; border-top:16px s ...

  4. win10下LoadRunner12 下载安装图文教程

    1.下载安装包: 链接:https://pan.baidu.com/s/1hiGC9FjfKOFRWHVfMAHaeg 提取码:sr8x 如下图所示,咱们直接安装社区版“HP_LoadRunner_1 ...

  5. 【Spring Data 系列学习】了解 Spring Data JPA 、 Jpa 和 Hibernate

    在开始学习 Spring Data JPA 之前,首先讨论下 Spring Data Jpa.JPA 和 Hibernate 之前的关系. JPA JPA 是 Java Persistence API ...

  6. Webpack 核心开发者 Sean Larkin 盛赞 Vue

    dev.io 近日邀请了 Webpack 核心开发者 Sean Larkin 回答开发者提问,其中几个问提比较有意思,和掘金的小伙伴们分享一下. 先上点前菜: 有一个开发者问 Sean 如何成为一个热 ...

  7. Linux apache开启虚拟主机伪静态.htaccess

    打开apache配置文件 /etc/httpd/conf/httpd.conf 查找“#LoadModule rewrite_module modules/mod_rewrite.so” 去掉前面的# ...

  8. 关于“关键字synchronized不能被继承”的一点理解

    网上看到很多对关键字synchronized继承性的描述只有一句"关键字synchronized不能被继承",并没有描述具体场景,于是自己做了以下测试. //父类 public c ...

  9. Java反射之Class类

    接下来的几章,我们谈一谈java的反射机制. 反射就是从一个java类中映射出一个java类或是一个实例.通常在很多框架中都用到反射,比如常用的ssm框架,在配置文件中总是会写到类的全名,框架通过读取 ...

  10. sklearn-转换器与机器学习流程

    一.sklearn估计器 二.机器学习开发流程 .