【实践】Ansible 部署 Tomcat

同步更新 微信公众号【爱写代码的小任】 欢迎关注

1. 引言

Tomcat 是一个广泛使用的开源 Java Servlet 容器,通过使用 Ansible,您可以实现自动化部署和配置 Tomcat,简化应用程序的部署和管理,并提高系统的可靠性和性能。

2. Tomcat 的使用场景

Tomcat 在以下场景中特别有用:

2.1 Web 应用程序托管

Tomcat 是一个强大的 Web 应用程序服务器,支持 Java Servlet、JavaServer Pages (JSP) 和 Java WebSocket 等技术。通过部署和托管 Web 应用程序在 Tomcat 上,您可以轻松地构建和运行 Java Web 应用程序,提供动态内容和交互性。

2.2 企业级应用程序部署

Tomcat 作为 Java 应用程序服务器的首选之一,广泛应用于企业级应用程序的部署。通过使用 Tomcat,您可以在生产环境中部署和管理大规模的企业应用程序,提供高可靠性、可伸缩性和性能。

2.3 开发和测试环境

Tomcat 提供了一个轻量级的开发和测试环境,使开发人员能够快速构建和调试 Web 应用程序。通过在本地开发机器上部署 Tomcat,开发人员可以进行本地开发和单元测试,并模拟生产环境的行为。

3. Ansible 部署 Tomcat 的最佳实践

下面是使用 Ansible 部署 Tomcat 的最佳实践步骤:

先执行过安装 supervisor,openjdk 
$ ansible-playbook -i inventory/deploy-tomcat-host.ini playbook/supervisor/deploy-supervisor.yaml
$ ansible-playbook -i inventory/deploy-tomcat-host.ini playbook/openjdk/deploy-openjdk.yaml

3.1 创建 Ansible Inventory 文件

创建文件 deploy-tomcat-host.ini

[deploy]
aliyun_ecs ansible_ssh_host=47.96.162.196 ansible_ssh_port=22 ansible_user=ecs-user ansible_ssh_pass=Ecs-user123 ansible_sudo_pass=Ecs-user123

3.2 创建开机启动脚本

创建文件 tomcat-supervisord.ini.j2

[program:tomcat]
environment=JAVA_HOME="{{ java_home }}"           ;
directory={{ tomcat_home_dir }}                   ;
command={{ tomcat_home_dir }}/bin/catalina.sh run ;
stderr_logfile=/var/log/supervisor/tomcat.err     ;
stdout_logfile=/var/log/supervisor/tomcat.out     ;
stdout_logfile_maxbytes=10MB                      ;
stdout_logfile_backups=10                         ;
user={{ tomcat_install_user }}                    ;
umask=022                                         ;
autostart=true                                    ;
autorestart=true                                  ;
startsecs=10                                      ;
startretries=3                                    ;
stopasgroup=true                                  ;
killasgroup=true                                  ;
redirect_stderr=false                             ;
stopsignal=KILL                                   ;

3.3 创建 Ansible Playbook

创建一个名为 deploy-tomcat.yml 的 Ansible Playbook 文件,并使用文本编辑器打开。在 Playbook 中,定义以下任务:

- name: 安装 Tomcat
  hosts: deploy
  become: true
  vars:
    java_home: /home/ecs-user/jdk-11.0.2
    tomcat_version: 10.1.13
    tomcat_name_dir: "apache-tomcat-{{ tomcat_version }}"
    tomcat_source_tar_name: "{{ tomcat_name_dir }}.tar.gz"
    tomcat_install_user: ecs-user
    tomcat_home_dir: "/home/{{ tomcat_install_user }}/{{ tomcat_name_dir }}"
  tasks:
    - name: 下载 Linux 通用包
      ansible.builtin.get_url:
        url: "http://i-ansible.oss-cn-hangzhou-internal.aliyuncs.com/{{ tomcat_source_tar_name }}"
        validate_certs: false
        dest: "/tmp/{{ tomcat_source_tar_name }}"
        mode: "0644"
        force: true
        owner: "{{ tomcat_install_user }}"
        group: "{{ tomcat_install_user }}"

    - name: 解压
      ansible.builtin.unarchive:
        remote_src: true
        src: "/tmp/{{ tomcat_source_tar_name }}"
        dest: "/home/{{ tomcat_install_user }}"
        owner: "{{ tomcat_install_user }}"
        group: "{{ tomcat_install_user }}"
      become_user: "{{ tomcat_install_user }}"

    - name: 复制启动文件
      ansible.builtin.template:
        src: "{{ item }}.j2"
        dest: "/etc/supervisord.d/conf.d/{{ item }}"
        mode: "0755"
        owner: root
        group: root
      with_items:
        - tomcat-supervisord.ini

    - name: 更新启动文件
      ansible.builtin.shell:
        chdir: /tmp
        cmd: /usr/bin/supervisorctl -c /etc/supervisord.d/supervisor.conf update
      changed_when: false

    - name: 检查端口是否运行
      ansible.builtin.wait_for:
        port: 8080
        state: started
        delay: 5
        timeout: 120

3.4 执行 Ansible Playbook

在终端中,导航到包含 Playbook 的目录,并运行以下命令来执行 Ansible Playbook:

$ ansible-playbook -i inventory/deploy-tomcat-host.ini playbook/tomcat/deploy-tomcat.yaml
PLAY [安装 Tomcat] *************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************
ok: [aliyun_ecs]

TASK [下载 Linux 通用包] *******************************************************************************************
ok: [aliyun_ecs]

TASK [解压] ********************************************************************************************************
ok: [aliyun_ecs]

TASK [复制启动文件] ************************************************************************************************
changed: [aliyun_ecs] => (item=tomcat-supervisord.ini)

TASK [更新启动文件] ************************************************************************************************
ok: [aliyun_ecs]

TASK [检查端口是否运行] ********************************************************************************************
ok: [aliyun_ecs]

PLAY RECAP *********************************************************************************************************
aliyun_ecs                 : ok=6    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Ansible 将在目标主机上下载、解压并启动 Tomcat 服务。您可以检查目标主机上的 Tomcat 进程和服务状态,确保一切正常。

4. 结论

本文介绍了使用 Ansible 部署 Tomcat 的最佳实践。通过自动化配置和部署 Tomcat,您可以简化应用程序的部署和管理过程,提高系统的可靠性和性能。Tomcat 在 Web 应用程序托管、企业级应用程序部署和开发/测试环境等场景中具有广泛的应用。使用 Ansible Playbook,您可以定义安装和配置任务,并在目标主机上执行。这种自动化方式能够节省时间和减少手动操作的出错风险。希望这篇文章对您有所帮助!如果您有任何其他问题,请随时提问。

关注我,实时获取我的更新动态,和我一起讨论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的小任

感谢老板打赏,我将会再接再厉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值