nginx+Tomcat实现动静分离架构
最近新部署了一个项目jlj-cms-erp-web,要求使用nginx+Tomcat将静态页面和动态的请求分开处理,减轻Tomcat服务器的压力
成都创新互联服务项目包括尧都网站建设、尧都网站制作、尧都网页制作以及尧都网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,尧都网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到尧都省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
在部署项目的这台机器上(192.168.1.110)并没有nginx,所以还需要将这台机器上生成的静态页面备份到装有nginx的另一台机器上(192.168.1.191)
首先安装tomcat,具体过程不详细写了,见博客
http://itzhongxin.blog.51cto.com/12734415/1915155
注意修改端口号、jvmRoute、Context path、启动内存,
在项目下的webapps文件夹中新建一个www文件夹,该文件夹中的文件将被备份
我们用rsync命令来实现两台机器之间的备份,先配置被备份端,就是没有安装nginx的机器
安装依赖包
apt-get update apt-get install gcc apt-get install make tar -zxvf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./configure --prefix=/usr/local/rsync && make && make install
安装完成后在/usr/local/rsync目录下应该产生bin share两个目录
然后在当前目录下创建log、pid、conf、password 分别存放日志、程序进程号、配置文件、密码
设置配置文件
vim rsyncd.conf use chroot = nomax connections = 10 pid file = /usr/local/rsync/pid/rsyncd.pid log file = /usr/local/rsync/log/rsyncd.log [www] #随便起的名字,但是要与备份端相同! uid = root gid = root path = /opt/tomcat8.0.24/jlj-cms-erp-web/webapps/www #需要备份的路径 comment = wwwbackup read only = no #write only = no list = yes hosts allow = 192.168.1.191/24 #备份到此机器上 hosts dengy = * auth users = backup secrets file = /usr/local/rsync/password/server.pass #密码文件路径
设置密码文件
vim server.pass backup:BACKup_194
修改密码文件权限
chmod 600 server.pass
启动rsync服务
/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/conf/rsyncd.conf
过滤程序是否启动成功
ps -ef | grep rsync root 22620 1 0 15:17 ? 00:00:00 ./bin/rsync --daemon --config=/usr/local/rsyn/conf/rsyncd.conf
然后在/opt/tomcat8.0.24/jlj-cms-erp-web/webapps/www下解压一个site.zip包,该文件夹中有大量静态HTML文件,我们需要将他同步到192.168.1.191上
接下来配置备份端,同上
安装完成后在/usr/local/rsync目录下应该产生bin share两个目录
创建pwd目录存放密码文件
vim server.pass BACKup_194
修改密码文件权限
chmod 600 server.pass
在/var/www下新建一个jljapp文件夹,将东西备份到该路径下
测试一下,是否能备份成功
rsync -vzrtopg --progress --password-file=/usr/local/rsync/pwd/server.pass backup@192.168.1.110:: www /var/www/jljapp
*此处标红必须与被备份端中rsync.conf中模块名相同
看一下备份路径中有没有成功的备份到我们需要的东西
cd /var/www/jljapp ll
如果备份成功,编写一个脚本
cd /usr/local/rsync/bin vim rsyncback_110_www.sh #!/bin/sh /usr/bin/rsync -vzrtopg --progress --password-file=/usr/local/rsync/pwd/server.pass backup@192.168.1.110::www /var/www/jljapp
修改脚本权限
chmod a+x rsyncback_110_www.sh
制定任务计划,设定每周五晚上8点执行同步任务
#每隔五分钟,备份110cms产生的html */5 * * * * /bin/sh /usr/local/rsync/bin/rsyncback_110_www.sh
备份工作完成了,接下来就是nginx将请求转发到tomcat上了
在被备份端,也就是192.168.1.110上部署项目jlj-cms-erp-web
将项目包解压到/opt/tomcat8.0.24/jlj-cms-erp-web/webapps下,将压缩包删除
启动项目,查看日志
cd bin/ ./startup.sh tail -f ../logs/catalina.out
在nginx机器上绑定域名,nginx收到客户端的访问请求,就根据地址转发到对应的tomcat服务器上
现在的需求是有三个域名,需要三个配置文件
cms.erp.jinlejia.com
cmsstyle.erp.jinlejia.com
mhelp.erp.jinlejia.com
需要修改nginx的配置文件,新建一个jljapp文件夹,放三个配置文件
cd /etc/nginx/conf.d mkdir jljapp
复制一个之前项目配置好的文件来修改
cp group_js.conf jljapp/mhelp.conf vim mhelp.conf server { listen 80; server_name mhelp.erp.jinlejia.com; root /var/www/jljapp/site/help; index index.html index.htm; location / { } error_page 404 500 502 503 504 /404.html; location = /404.html { root /usr/share/nginx/html; } }
cp mhelp.conf cmsstyle.confvim cmsstyle.conf server { listen 80; server_name cmsstyle.erp.jinlejia.com; root /var/www/jljapp; index index.html index.htm; location / { } error_page 404 500 502 503 504 /404.html; location = /404.html { root /usr/share/nginx/html; } }
cp sso.conf jljapp/cms.confcd jljapp/vim cms.conf upstream jljappcms { server 192.168.1.110:8010 weight=20 max_fails=2 fail_timeout=30s; ip_hash; } server { listen 80; server_name cms.erp.jinlejia.com; root /Disk/var/www/index; index index.html index.htm; proxy_max_temp_file_size 0; large_client_header_buffers 4 16k; client_max_body_size 300m; client_body_buffer_size 128k; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; proxy_buffering on; proxy_buffer_size 64k; proxy_buffers 32 64k; proxy_busy_buffers_size 128k; location / { proxy_pass http://jljappcms; proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for; } #error_page 500 502 503 504 /50x.html; #location = /50x.html { #root /usr/share/nginx/html; } }
最后修改主配置文件,在最后一行添加,当nginx加载配置文件时,自动加载include中的子配置文件
vim nginx.conf include /etc/nginx/conf.d/jljapp/*.conf;
重启一下nginx
service nginx restart
本文标题:nginx+Tomcat实现动静分离架构
本文来源:http://scjbc.cn/article/igdijp.html