设为首页 收藏本站
查看: 1170|回复: 0

[经验分享] 从零开始搭建高性能高可用Tomcat服务器

[复制链接]

尚未签到

发表于 2017-12-26 10:39:08 | 显示全部楼层 |阅读模式
#sudo passwd  
#使用管理员来进行配置
  

sudo su  
#更新软件列表
  
apt
-get update  
#安装所需依赖文件
  
apt
-get install gcc zlib1g zlib1g-dev openssl libssl-dev libpcre3 libpcre3-dev libevent-dev  
#重启(建议)
  
reboot
  

  

  

sudo su  
#安装配置JDK,下载地址:http:
//www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html  
tar -zxvf jdk-8u131-linux-x64.tar.gz
  

mv jdk1.8.0_131 /usr/local/jdk  

  
#配置JDK环境变量
  

sed -i '$a ulimit -n 65535' /etc/profile  

sed -i '$a export JAVA_HOME=/usr/local/jdk' /etc/profile  

sed -i '$a export JRE_HOME=$JAVA_HOME/jre' /etc/profile  

sed -i '$a export>
sed -i '$a export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' /etc/profile  
source
/etc/profile  

  

rm jdk-8u131-linux-x64.tar.gz  

  

  

  
#安装配置memcached
  

wget http://www.memcached.org/files/memcached-1.4.36.tar.gz  
tar -zxvf memcached-1.4.36.tar.gz
  
cd memcached-1.4.36
  
./configure --prefix=/usr/local/memcached
  
make && make install
  
cd .. && rm -rf memcached-1.4.36 && rm memcached-1.4.36.tar.gz
  

  

  

  
#安装配置Tomcat
  
wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14.tar.gz
  
tar -zxvf apache-tomcat-8.5.14.tar.gz
  

  
#下载加入lib文件以支持共享session
  
cd apache-tomcat-8.5.14/lib
  
wget http://central.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/2.1.1/memcached-session-manager-2.1.1.jar
  
wget http://central.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc8/2.1.1/memcached-session-manager-tc8-2.1.1.jar
  
wget http://central.maven.org/maven2/net/spy/spymemcached/2.11.1/spymemcached-2.11.1.jar
  
wget http://central.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/2.1.1/msm-javolution-serializer-2.1.1.jar
  
wget http://central.maven.org/maven2/javolution/javolution/5.4.5/javolution-5.4.5.jar
  
cd .. && cd ..
  

  
#禁止TLDs扫描新加入的jar包
  
sed -i '134c xom-*.jar,javolution-5.4.5.jar,memcached-session-manager-2.1.1.jar,memcached-session-manager-tc8-2.1.1.jar,msm-javolution-serializer-2.1.1.jar,spymemcached-2.11.1.jar' apache-tomcat-8.5.14/conf/catalina.properties
  
#tomcat的优化配置,在102行处插入内容
  
sed -i '102c export JAVA_OPTS="-server -Xms1000M -Xmx1000M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"' apache-tomcat-8.5.14/bin/catalina.sh
  

  
rm -rf apache-tomcat-8.5.14/webapps
  
mkdir -vp apache-tomcat-8.5.14/webapps/ROOT
  
cp -r apache-tomcat-8.5.14 /usr/local/tomcat
  
mv apache-tomcat-8.5.14 /usr/local/tomcat2
  
chown ubuntu.ubuntu -R /usr/local/tomcat
  
chown ubuntu.ubuntu -R /usr/local/tomcat2
  
rm apache-tomcat-8.5.14.tar.gz
  

  
#创建测试网页
  
touch /usr/local/tomcat/webapps/ROOT/index.jsp
  
echo '<%@ page language="java" contentType="text/html; " pageEncoding="UTF-8"%><html><head><title>Tomcat1</title></head><body><%=session.getId()%></body></html>' >/usr/local/tomcat/webapps/ROOT/index.jsp
  
touch /usr/local/tomcat2/webapps/ROOT/index.jsp
  
echo '<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>Tomcat2</title></head><body><%=session.getId()%></body></html>' >/usr/local/tomcat2/webapps/ROOT/index.jsp
  

  
#配置共享session
  
#由于我们静态文件交由nginx处理,所以无需配置requestUriIgnorePattern
  
#同时我们配置使用了Javolution序列化框架
  
vim /usr/local/tomcat/conf/context.xml
  
#在<Context>标签内加入下面的内容
  
##################################################

  <Manager>  memcachedNodes="n1:127.0.0.1:11211,n2:127.0.0.1:11311"
  failoverNodes="n1"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
  />
  
##################################################
  

  
#同样的tomcat2也需要加入内容,唯一不同是failoverNodes改为n2
  
vim /usr/local/tomcat2/conf/context.xml
  
##################################################

  <Manager>  memcachedNodes="n1:127.0.0.1:11211,n2:127.0.0.1:11311"
  failoverNodes="n2"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
  />
  
##################################################
  

  
#修改端口配置,修改下面的内容
  
vim /usr/local/tomcat/conf/server.xml
  
##################################################
  
#由于我们的tomcat是运行在一台服务器上,所以需要在Engine节点分别添加jvmRoute="tomcat"和jvmRoute="tomcat2"
  
#依旧是优化过的配置,并且没有开启gzip,因为nginx已经开启了
  <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" URIEncoding="UTF-8"
  maxHttpHeaderSize="8192" maxThreads="1000"
  minSpareThreads="100" maxSpareThreads="1000"
  minProcessors="100" maxProcessors="1000"
  connectionTimeout="25000" acceptCount="1000"
  enableLookups="false" disableUploadTimeout="true" redirectPort="8443" />
  ........
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat">
  
##################################################
  

  
#同样修改tomcat2端口配置
  
vim /usr/local/tomcat2/conf/server.xml
  
##################################################
  <Connector port="8180" protocol="org.apache.coyote.http11.Http11AprProtocol" URIEncoding="UTF-8"
  maxHttpHeaderSize="8192" maxThreads="1000"
  minSpareThreads="100" maxSpareThreads="1000"
  minProcessors="100" maxProcessors="1000"
  connectionTimeout="25000" acceptCount="1000"
  enableLookups="false" disableUploadTimeout="true" redirectPort="8443" />
  ........
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
  
##################################################
  
#同时将Tomcat2的配置文件中所有的8080端口改为8180,8005改为8105,8009改为8109,由于是和nginx交互所以不用配置SSL
  

  
#配置下面的内容来优化tomcat
  
#安装配置apr
  
wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.2.tar.gz
  
tar -zxvf apr-1.5.2.tar.gz
  
cd apr-1.5.2 && ./configure --prefix=/usr/local/apr
  
make && make install
  
cd .. && rm -rf apr-1.5.2 && rm apr-1.5.2.tar.gz
  

  
#安装配置apr-util
  
wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
  
tar -zxvf apr-util-1.5.4.tar.gz
  
cd apr-util-1.5.4 && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  
make && make install
  
cd .. && rm -rf apr-util-1.5.4 && rm apr-util-1.5.4.tar.gz
  

  
#安装配置tomcat-native
  
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.12/source/tomcat-native-1.2.12-src.tar.gz
  
tar -zxvf tomcat-native-1.2.12-src.tar.gz
  
cd tomcat-native-1.2.12-src/native && ./configure --with-apr=/usr/local/apr
  
make && make install
  
cd .. && cd .. && rm -rf tomcat-native-1.2.12-src && rm tomcat-native-1.2.12-src.tar.gz
  

  
#配置tomcat-native环境变量
  
sed -i '$a export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib' /etc/profile
  
source /etc/profile
  

  

  

  
#最后安装配置Nginx
  
wget http://nginx.org/download/nginx-1.12.0.tar.gz
  
tar -zxvf nginx-1.12.0.tar.gz
  
cd nginx-1.12.0 && ./configure --user=ubuntu --group=ubuntu --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module
  
make && make install
  
chown ubuntu.ubuntu -R /usr/local/nginx
  
cd .. && rm -rf nginx-1.12.0 && rm nginx-1.12.0.tar.gz
  

  
#首先将ssl证书放入/usr/local/nginx/conf/目录下,分别为cert.crt和cert.key文件,如果不配置SSL则跳过
  
vim /usr/local/nginx/conf/nginx.conf
  
#设置nginx.conf,已经做了配置优化,如果不需要SSL则更改相应配置即可
  
##################################################
  
user ubuntu ubuntu;
  
worker_processes auto;
  
worker_rlimit_nofile 65535;
  
error_log logs/error.log warn;
  
pid logs/nginx.pid;
  

  
events {
  use epoll;
  worker_connections 65500;
  
}
  

  
http {
  server_tokens off;
  include mime.types;
  default_type application/octet-stream;
  charset utf-8;
  

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log logs/access.log main;
  

  sendfile on;
  tcp_nopush on;
  reset_timedout_connection on;
  keepalive_timeout 30;
  

  open_file_cache max=65535 inactive=20s;
  open_file_cache_min_uses 1;
  open_file_cache_valid 30s;
  

  gzip on;
  gzip_comp_level 5;
  gzip_min_length 256;
  gzip_proxied any;
  gzip_vary on;
  gzip_http_version 1.0;
  gzip_buffers 4 16k;
  gzip_types
  text/plain text/css text/xml application/xml text/x-json application/json
  image/svg+xml image/png image/jpeg image/x-icon image/gif
  text/javascript application/javascript application/x-javascript
  application/x-font-truetype application/x-font-woff application/vnd.ms-fontobject;
  gzip_disable "MSIE [1-6]\.";
  

  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_connect_timeout 90;
  proxy_send_timeout 90;
  proxy_read_timeout 90;
  proxy_buffer_size 32k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
  

  upstream tomcat_server {
  server localhost:8080 weight=1;
  server localhost:8180 weight=1;
  }
  

  server {
  listen 80;
  server_name localhost;
  return 301 https://$host$request_uri;
  
    }
  

  server {
  listen 443 ssl;
  server_name localhost;
  ssl_certificate cert.crt;
  ssl_certificate_key cert.key;
  ssl_session_cache shared:SSL:1m;
  ssl_session_timeout 5m;
  ssl_ciphers HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers on;
  location / {
  root /usr/local/tomcat/webapps/ROOT;
  index index.html index.jsp index.htm;
  expires 30d;
  }
  location ~ \.(jsp|servlet|do)$ {
  index index.html index.jsp index.htm;
  proxy_pass http://tomcat_server;
  
        }
  error_page 400 404 414 500 502 503 504 /error.html;
  }
  
}
  
##################################################
  
#建议检查gzip类型中是否不存在你需要用的类型
  
#如果你的tomcat中配置了多个项目,只需要在nginx.conf中加入下面内容即可
  location /你的项目名 {
  root /usr/local/tomcat/webapps;
  index index.html index.jsp index.htm;
  expires 30d;
  }
  
##################################################
  
#保存后,输入下面的命令来检查配置
  
/usr/local/nginx/sbin/nginx -t

  
#重启nginx命令:sudo /usr/local/nginx/sbin/nginx -s>  

  

  
#切换至普通用户
  
su ubuntu
  

  
#启动memcached,同时可以使用ps -ef | grep memcached查看已经开启的
  
/usr/local/memcached/bin/memcached -d -m 64M -u ubuntu -l 127.0.0.1 -p 11211 -c 32750 -P /tmp/memcached-n1.pid
  
/usr/local/memcached/bin/memcached -d -m 64M -u ubuntu -l 127.0.0.1 -p 11311 -c 32750 -P /tmp/memcached-n2.pid
  

  
#启动Tomcat,务必使用普通用户运行Tomcat
  
/usr/local/tomcat/bin/startup.sh && /usr/local/tomcat2/bin/startup.sh
  

  
#启动nginx,务必使用管理员权限运行nginx
  
sudo /usr/local/nginx/sbin/nginx
  

  
#到这里以及能够成功访问了!多刷新几次就会发现服务器1和2是随机访问到的,并且session是相同的

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428175-1-1.html 上篇帖子: ant 打包 web项目并用tomcat启动 下篇帖子: 如何将Spring Boot项目打包部署到外部Tomcat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表