环境: CentOS 7 x86_64

1、安装jdk

rpm -ivh jdk-8u60-linux-x64.rpm

2、创建普通用户

getent group tomcat || groupadd -r tomcat
getent passwd tomcat || useradd -r -d /opt -s /bin/nologin tomcat

3、下载tomcat 7

cd /opt
wget http://mirrors.ustc.edu.cn/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gz
tar zxvf apache-tomcat-7.0.64.tar.gz
mv apache-tomcat-7.0.64 tomcat01
chown -R tomcat:tomcat tomcat01tar zxvf apache-tomcat-7.0.64.tar.gz
mv apache-tomcat-7.0.64 tomcat02
chown -R tomcat:tomcat tomcat02

两个实例同时监听8080端口必然会产生冲突,所以必须修改.

sed -i 's/8080/8081/g' /opt/tomcat01/conf/server.xml
sed -i 's/8005/8001/g' /opt/tomcat01/conf/server.xml
sed -i 's/8080/8082/g' /opt/tomcat02/conf/server.xml
sed -i 's/8005/8002/g' /opt/tomcat02/conf/server.xml

AJP通常用不上,这里统一关闭

sed -i '/8009/d' /opt/tomcat01/conf/server.xml
sed -i '/8009/d' /opt/tomcat01/conf/server.xml

tomcat在Linux下默认工作模式是bio,性能非常低,建议使用apr或者nio,

这里改为nio,即非阻塞IO,性能比较好。

sed -i.bak 's#HTTP/1.1#org.apache.coyote.http11.Http11NioProtocol#' /opt/tomcat01/conf/server.xml
sed -i.bak 's#HTTP/1.1#org.apache.coyote.http11.Http11NioProtocol#' /opt/tomcat02/conf/server.xml

(如果想起用apr模式,需要安装apr-devel、tomcat-native两个软件包,无需改配置)

3、创建启动文件

cd /usr/lib/systemd/system
cat >tomcat01.service <<EOF
[Unit]
Description=Apache Tomcat 7
After=network.target
[Service]
Type=oneshot
ExecStart=/opt/tomcat01/bin/startup.sh
ExecStop=/opt/tomcat01/bin/shutdown.sh
RemainAfterExit=yes
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF

tomcat02同理

sed 's/tomcat01/tomcat02/g' tomcat01.service > tomcat02.service

4、启动服务

systemctl enable tomcat01
systemctl enable tomcat02
systemctl start tomcat01
systemctl start tomcat02

5、日志轮转

由于tomcat是作为后台服务持续运行,天长日久,日志必定会越来越大,在当初部署tomcat之时很容易忽略这个问题,否则硬盘迟早会被撑爆。

创建文件/etc/logrotate.d/tomcat,内容如下:

/opt/tomcat01/logs/catalina.out
/opt/tomcat02/logs/catalina.out
{copytruncatedailyrotate 7missingoknotifemptycompresscreate 0644 tomcat tomcat
}

6、查看进程

ps aux |grep tomcat

附上一份nginx反向代理tomcat的配置文件

proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=static:10m inactive=30d max_size=1g;upstream tomcat {ip_hash       ;#hash           $remote_addr consistent;server          127.0.0.1:8081 max_fails=1 fail_timeout=2s ;server          127.0.0.1:8082 max_fails=1 fail_timeout=2s ; keepalive       16;
}server {listen          80;server_name     tomcat.example.com;charset         utf-8;access_log      /var/log/nginx/tomcat.access.log  main;root            /usr/share/nginx/html;index           index.html index.htm index.jsp;location / {proxy_pass              http://tomcat;proxy_redirect          off;proxy_set_header        Host $host;proxy_set_header        X-Real-IP $remote_addr;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;proxy_cache_use_stale   error timeout invalid_header updating http_500 http_502 http_503 http_504;proxy_connect_timeout   300;proxy_send_timeout      300;proxy_read_timeout      300;proxy_http_version      1.1;proxy_set_header        Connection "";add_header              X-Backend "$upstream_addr";}location ~* ^.+\.(js|css|ico|gif|jpg|jpeg|png)$ {proxy_pass              http://tomcat ;proxy_redirect          off;proxy_set_header        Host $host;proxy_set_header        X-Real-IP $remote_addr;proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;proxy_cache_use_stale   error timeout invalid_header updating http_500 http_502 http_503 http_504;proxy_connect_timeout   300;proxy_send_timeout      300;proxy_read_timeout      300;proxy_http_version      1.1;proxy_set_header        Connection "";proxy_cache             static;proxy_cache_key         $host$uri$is_args$args;proxy_cache_valid       200 302 7d;proxy_cache_valid       404 1m;proxy_cache_valid       any 1h;add_header              X-Cache $upstream_cache_status;#log_not_found off;#access_log off;expires max;}location ~ /\.ht {deny  all;}}

本文理论上也适用于tomcat8,未经测试。

转载于:https://blog.51cto.com/purplegrape/1702292

利用systemd 实现 tomcat 多实例相关推荐

  1. 17102101_CentOS7下利用systemd机制实现tomcat开机自启动

    在之前的博文中已经对CentOS7下利用init.d目录下创建开机启动服务脚本,实现tomcat开机启动的介绍.但作为CentOS7来说,通过init.d建立启动脚本的机制已经不被推荐,推荐的方式是利 ...

  2. Tomcat多实例和负载均衡

    文章目录 一.Tomcat多实例 1.1 Tomcat多实例的步骤(理论) 1.安装好 jdk 2.安装 tomcat 3.配置 tomcat 环境变量 4.修改 tomcat2 中的 server. ...

  3. Nginx+Tomcat 搭建负载均衡、动静分离(tomcat多实例)

    文章目录 一.Tomcat多实例配置 1.关闭防火墙 2.将软件包上传到/opt目录下 3.安装JDK 4.安装Tomcat 5.配置tomcat环境变量 6.修改tomcat2中的server.xm ...

  4. Tomcat多实例与负载均衡

    Tomcat多实例与负载均衡 前言 一.Tomcat多实例 (1)安装jdk (2)安装tomcat (3)配置tomcat环境变量 (4)修改tomcat2中的主配置文件 (5)修改启动脚本和关闭脚 ...

  5. 单tomcat多实例的实现

    2019独角兽企业重金招聘Python工程师标准>>> 单tomcat多实例的实现 缘起 考虑这样一个场景:在一台机器上需要启动多个tomcat实例,通常的做法是创建多个tomcat ...

  6. tomcat 多实例启动脚本

    为什么80%的码农都做不了架构师?>>>    tomcat 多实例启动脚本 代码如下: #!/bin/sh# # Tomcat start/stop shell multiple ...

  7. docker tomcat 多开 实例_Docker zabbix-agent 监控 docker tomcat 多实例

    目录 监控方案概述 我们使用 zabbix-agent 的方式来监控 多个 tomcat 8.5.51 ,由于我们需要监控的是 Docker 容器里的 Tomcat ,而 zabbix 官方模板并不支 ...

  8. 数据挖掘 python roc曲线_利用scikitlearn画ROC曲线实例

    一个完整的数据挖掘模型,最后都要进行模型评估,对于二分类来说,AUC,ROC这两个指标用到最多,所以 利用sklearn里面相应的函数进行模块搭建. 具体实现的代码可以参照下面博友的代码,评估svm的 ...

  9. python ks值计算_利用Python计算KS的实例详解

    在金融领域中,我们的y值和预测得到的违约概率刚好是两个分布未知的两个分布.好的信用风控模型一般从准确性.稳定性和可解释性来评估模型.sOf免费资源网 一般来说.好人样本的分布同坏人样本的分布应该是有很 ...

最新文章

  1. 技术图文:如何进行代码的重构?以封装 BigOne API 为例
  2. windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
  3. 通过微信公众号获取用户信息(java版)
  4. libtool: Version mismatch error. 解决方法
  5. 【活动(深圳)DevOps/.NET 微服务 秋季分享会】火热报名中!
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线点餐系统
  7. HTML DOM教程 18-HTML DOM Body 对象
  8. 宏睿达智慧酒店云桌面系统远程控制台V4.1.4及前端桌面app V2.0.3支持直播的组播和单播格式、私密投屏、点播、周边、wifi管理、广告推送、多级管理、多主题管理
  9. 数据同步工具oracle goldengate安装与配置
  10. PHP微信公众号授权登录
  11. ligerui联动清空控件值
  12. 免证书发布ipa文件真机测试
  13. 【LaTex-错误和异常】\verb ended by end of line.原因是因为闭合边界符没有在\verb命令所属行中出现;\verb命令的正确和错误用法、verbatim环境的用法
  14. 计算机毕业设计选题推荐之nodejs+vue校园外卖订餐配送系统
  15. 华为云云耀云服务器 中小企业的福音
  16. 3DMAX、C4D、Maya导出fbx到Unity设置
  17. 没看错!用游戏测试人工智能。
  18. danpianji与ros通信_ROS和Arduino通讯新模式——StandardFirmata
  19. 素民党的故事 (01) 什么是素民党
  20. 高中数学必修4知识点:第三章三角恒等变形

热门文章

  1. MarkDown入门及技巧
  2. Swift 获取渐变色颜色值
  3. js函数声明和函数表达式的区别
  4. 第八章 Health Check
  5. C# ConfigurationManager不存在问题解决
  6. JAVA语言概述和基本语法知识点
  7. linux /etc/profile和/etc/bashrc
  8. JavaWeb学习总结(十七)——JSP中的九个内置对象
  9. Web网站的性能测试工具
  10. mac下使用git的冲突的解决方案