千家信息网

nginx+Tomcat实现动静分离架构

发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,最近新部署了一个项目jlj-cms-erp-web,要求使用nginx+Tomcat将静态页面和动态的请求分开处理,减轻Tomcat服务器的压力在部署项目的这台机器上(192.168.1.110)并没
千家信息网最后更新 2024年10月06日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 updateapt-get install gccapt-get install maketar -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.confuse chroot = nomax connections = 10pid file = /usr/local/rsync/pid/rsyncd.pidlog file = /usr/local/rsync/log/rsyncd.log[www]     #随便起的名字,但是要与备份端相同!uid = rootgid = rootpath = /opt/tomcat8.0.24/jlj-cms-erp-web/webapps/www  #需要备份的路径comment = wwwbackupread only = no#write only = nolist = yeshosts allow = 192.168.1.191/24   #备份到此机器上hosts dengy = *auth users = backupsecrets 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 rsyncroot 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/jljappll

如果备份成功,编写一个脚本

cd /usr/local/rsync/binvim 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.dmkdir jljapp

复制一个之前项目配置好的文件来修改

cp group_js.conf jljapp/mhelp.confvim mhelp.confserver {        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.confserver {    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.confinclude /etc/nginx/conf.d/jljapp/*.conf;

重启一下nginx

service nginx restart




0