Tomcat多项目部署
1.最简单的就是直接丢到webapps里,通过不同的路径相同端口访问不同项目。
2.修改主配置文件,不同项目监听不同端口(添加一个service)
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/test1" reloadable="true" docBase="/home/pic/apache-tomcat-7.0.64/webapps/test1/" />
</Host>
</Engine>
</Service>
<Service name="Catalina">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/test2" reloadable="true" docBase="/home/pic/apache-tomcat-7.0.64/webapps/test2/" />
</Host>
</Engine>
</Service>
访问通过url:
127.0.0.1:8080/test1
127.0.0.1:8081/test2
<\Context>元素的属性:
path:指定访问该Web应用的URL入口。
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。
在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发布阶段将reloadable设为false。
tips:一个项目可以与多个<Context>元素(如图片和项目的其他内容分开放置),但是要注意路径问题
Nginx多站点配置
1.增加多个域名
#vim /etc/hosts
192.168.44.129 www.test1.com www.test2.com
2.修改主配置文件:/etc/nginx/nginx.conf
#vim /etc/nginx/nginx.conf
server{
listen 80;
server_name _;
#server_name_in_redirect off;
location /{
index index.html;
}
}
# The default server is in conf.d/default.conf
include /etc/nginx/vhosts/*.conf;
3.虚拟主机配置
#mkdir /etc/nginx/vhosts
#vim /etc/nginx/vhosts/www.test1.com.conf
server{
listen 80;
server_name www.test1.com;
index index.html;
root /opt/webapps;
location /{
proxy_pass http://www.test1.com:8080/test1/;
proxy_cookie_path /test1/ /;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_ignore_client_abort on;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_intercept_errors on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
vim /etc/nginx/vhosts/www.test1.com.conf
server{
listen 80;
server_name www.test2.com;
index index.html;
root /opt/webapps;
location /{
proxy_pass http://www.test2.com:8081/test2/;
proxy_cookie_path /test2/ /;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_ignore_client_abort on;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_intercept_errors on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
通过www.test1.com和www.test2.com直接访问
关于Session重建问题
1.域名(www.test1.com/test1)反向代理(www.test1.com:8080/test1/)但是访问需要输入 www.test1.com/test1 ,不太现实
server{
listen 80;
server_name www.test1.com;
index index.html;
root /opt/webapps;
location /test1/ {
proxy_pass http://www.test1.com:8080/test1/
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 20m;
client_body_buffer_size 128k;
proxy_ignore_client_abort on;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_intercept_errors on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
location / {
proxy_pass http://www.test1.com:8080/test1/;
proxy_redirect http://www.test1:8080/ http://www.test1.com/;
}
}
2.直接修改tomcat的JSESSIONID的path路径
(1)可在tomcat用来配置数据源的配置文件(context.xml)修改
#vim /home/pic/apache-tomcat-7.0.64/conf/context.xml
<Context sessionCookiePath="/">
</Context>
添加sessionCookiePath=”/”,指定cookie存放路径
(2)可在tomcat的主配置文件(server.xml)修改
<Context path="/test1" reloadable="true" sessionCookieName="Mysession" sessionCookiePath="/" docBase="/home/pic/apache-tomcat-7.0.64/webapps/test1/" />
(3)在nginx配置中指定路径(nginx的老版本不含这个参数,需要ngnix1.6之后版本)
location / {
proxy_pass http://www.test1.com:8080/test1/;
proxy_cookie_path /test1/ /;
}