nginx+Tomcat實現動靜分離架構

最近新部署了一個項目jlj-cms-erp-web,要求使用nginx+Tomcat將靜態頁面和動態的請求分開處理,減輕Tomcat服務器的壓力html

在部署項目的這臺機器上(192.168.1.110)並無nginx,因此還須要將這臺機器上生成的靜態頁面備份到裝有nginx的另外一臺機器上(192.168.1.191)nginx

首先安裝tomcat,具體過程不詳細寫了,見博客web

http://itzhongxin.blog.51cto.com/12734415/1915155vim

注意修改端口號、jvmRoute、Context path、啓動內存,tomcat

在項目下的webapps文件夾中新建一個www文件夾,該文件夾中的文件將被備份
bash

咱們用rsync命令來實現兩臺機器之間的備份,先配置被備份端,就是沒有安裝nginx的機器服務器

安裝依賴包app

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 分別存放日誌、程序進程號、配置文件、密碼webapp

設置配置文件jvm

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
相關文章
相關標籤/搜索