tomcat/Resin java服务器
主要用来解析jsp语言,发布jsp代码,跟php平级
jsp(Java server page)
·安装tomcat之前要安装jdk
·下载jdk,解压,移到usr下
·修改环境变量
vi /etc/profile
export JAVA_HOME=/usr/jdk1.8.0_111
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
source /etc/profile ; java -version
·下载apache-tomcat,解压,移到usr/local目录下,改名成tomcat
/usr/local/tomcat/bin/startup.sh
然后通过浏览器访问8080端口
发布目录在webapps的ROOT下
自定义发布目录,在server.xml配置文件末尾 </Host>前加入如下行:
<Context path="/" docBase="/data/webapps/www" reloadable="true"/>
前面path是url,后面是对应的目录,可以写多个,构成虚拟主机
true表示有更新时自动重启,一般写false,万一在数据交互就丢失了,想自定义生效,要把webapps下的默认内容删掉
日志在logs下的catalina.out
作业:一个机器上两个网站域名,内容一样,每个网站3个tomcat,用一个nginx均衡
所以要在nginx上配置两个upstream
一个nginx负载多个tomcat的方法,在一台机器上部署多台tomcat,tomcat写成网址名,改变端口,用nginx均衡
<Connector port="8080"这行是换端口的
布置多台tomcat,只需要多复制几个,命名成不同目录123,发布目录要在一个下面,写成123好分
sed 's/8005/8006/g;s/8009/8010/g;s/8080/8081/g' /usr/local/tomcat/conf/server.xml
·nginx配置
·upstream tomcat_web{
server 192.168.1.25:8080;
server 192.168.1.25:8081;
server 192.168.1.25:8082;
}
·下面server里
root注释掉,写上proxy_pass http://tomcat_web;
index加上 index.jsp
然后重启测试,可以看到均衡了三个页面
Resin比较稳定,tomcat隔三差五要重启下
有免费版和收费版
tomcat优化
linux内核优化
服务器资源配置优化,硬件,服务器怎么分配,是否做raid。网卡绑定,流量聚合,4个千兆变4千兆带宽,大型互联网公司几十G带宽,中小公司100-200M,小公司20M,UP和PV ,1:5的关系,可以说UV是3万,PV是30万,中小公司统计PV,大公司统计独立IP,nginx日志统计,网站访问数可以用统计代码
server.xml优化配置
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" 超时时间毫秒
redirectPort="8443" 重定向端口
maxThreads="5000" 每秒最大线程,最大并发
minSpareThreads="20" 最小空闲链接
acceptCount="10000" 最大连接数,后面的会等待
disableUploadTimeout="true" 禁止上传超时
enableLookups="false" 这个就是DNS查找,ture/false
URIEncoding="UTF-8" />
一个进程多个线程模式
/bin/catalina.sh优化配置,要把这个配置放在前面,因为已经文档里已有这个配置
CATALINA_OPTS="$CATALINA_OPTS -Xms512M -Xmx512M -Xmn100M -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=82 -DLOCALE=UTF-16LE -DRAMDISK=/ -DUSE_RAM_DISK=ture -DRAM_DISK=true"
-Xms java虚拟机最小内存 -Xmx java虚拟机最大内存 -Xmn 一般等于xmx的1/3 1/4。给系统留2G内存
tomcat缺点,内存容易满,运行太久里面有很多旧数据没有释放内存,会报错out of memory、运维能解决的就是重启。可以优化程序,java内核。
优化完pkill,重启,报错的话看/var/log/message
jvmconsole,在上面的配置后面加,参考吴老师博客
nginx+tomcat动静分离
server
{
listen 80;
server_name 发布的域名;
index index.html index.htm;
root /data/www/发布目录;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
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_pass http://上面的动态页面upstream;
expires 3d;
}
#动态页面交给http://上面的upstream,也即我们之前在nginx.conf定义的upstream tdt_wugk 均衡
location ~ .*\.(php|jsp|cgi)?$
{
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_pass http://tdt_wugk;
}
#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /data/www/wugk;
真实环境网站程序包只有一个,需要把这个程序包在nginx前端放一份,同时需要在Tomcat、Resin后端也放置一份,如果服务器涉及数量很多,那每台服务器都需要更新,可以使用批量更新方法。
nginx均衡tomcat
tomcat端口要换掉