nginx+tomcat整合(实现网站动静分离)
1.在服务器192.168.231.128上部署tomcat8.5.20+jdk1.8
[root@localhost ~]# mkdir /tomcat
上传tomcat包和jdk包
[root@localhost ~]# cd /tomcat/
[root@localhost tomcat]# ls
apache-tomcat-8.5.20.tar.gz jdk-8u65-linux-x64.gz
1)安装tomcat的环境jdk:
[root@localhost tomcat]# tar -zxf jdk-8u65-linux-x64.gz
[root@localhost tomcat]# ls
apache-tomcat-8.5.20.tar.gz jdk1.8.0_65 jdk-8u65-linux-x64.gz
[root@localhost tomcat]# mv jdk1.8.0_65/ /usr/local/jdk
[root@localhost tomcat]# ls /usr/local/jdk/
bin db javafx-src.zip lib man release THIRDPARTYLICENSEREADME-JAVAFX.txt
COPYRIGHT include jre LICENSE README.html src.zip THIRDPARTYLICENSEREADME.txt
2)给jdk添加指定的环境变量,在/etc/profile最后面添加环境变量值:
(此处是添加的全局环境变量,也可只添加到tomcat启动脚本catalina.sh中,不添加到全局变量中)
[root@localhost tomcat]# vim /etc/profile
最下面添加,如下:
export JAVA_HOME=/usr/local/jdk //JAVA_HOME值就是jdk的安装目录,set是设置
export JAVA_HOME //export是把JAVA_HOME变量变成全局变量
export PATH=$JAVA_HOME/bin:$PATH //设置PATH路径,
export PATH //把PATH变量变成全局变量
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar //最前面的点表示当前,变量路径之间用:隔开
export CLASSPATH
wq
[root@localhost tomcat]# source /etc/profile
设置jdk环境变量注意事项:
1)JAVA_HOME的值应为jdk安装目录
2)$PATH、$CLASSPATH、$JAVA_HOME 是用来引用原来的环境变量的值在设置环境变量时特别要注意不能把原来的值给覆盖掉了。
3)linux下用冒号”:”来分隔路径
4)大小写必须严格区分。
[root@localhost tomcat]# java -version #查看jdk安装的版本
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
3)安装绿色版tomcat服务:
[root@localhost tomcat]# tar -zxf apache-tomcat-8.5.20.tar.gz
[root@localhost tomcat]# ls
apache-tomcat-8.5.20 apache-tomcat-8.5.20.tar.gz jdk-8u65-linux-x64.gz
[root@localhost tomcat]# mv apache-tomcat-8.5.20 /usr/local/tomcat
[root@localhost tomcat]# ls /usr/local/tomcat/
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@localhost tomcat]# ls /usr/local/tomcat/conf/
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd
catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml
[root@localhost tomcat]# ls /usr/local/tomcat/bin/
bootstrap.jar commons-daemon.jar daemon.sh setclasspath.sh startup.sh tool-wrapper.sh
catalina.bat commons-daemon-native.tar.gz digest.bat shutdown.bat tomcat-juli.jar version.bat
catalina.sh configtest.bat digest.sh shutdown.sh tomcat-native.tar.gz version.sh
catalina-tasks.xml configtest.sh setclasspath.bat startup.bat tool-wrapper.bat
[root@localhost tomcat]# /usr/local/tomcat/bin/startup.sh #启动tomcat服务方式1
[root@localhost tomcat]# netstat -anptu |grep 8080
tcp 0 0 :::8080 :::* LISTEN 1523/java
tcp 0 0 ::ffff:192.168.40.140:8080 ::ffff:192.168.40.1:55121 ESTABLISHED 1523/java
[root@localhost tomcat]# ps -ef |grep tomcat
有进程
[root@localhost tomcat]# /usr/local/tomcat/bin/shutdown.sh #关闭tomcat服务方式1
[root@localhost tomcat]# netstat -anptu |grep 8080
tcp 0 0 ::ffff:192.168.40.140:8080 ::ffff:192.168.40.1:55121 TIME_WAIT -
tcp 0 0 ::1:8080 ::1:54621 TIME_WAIT -
[root@localhost tomcat]# ps -ef |grep tomcat
无进程
[root@localhost tomcat]# /usr/local/tomcat/bin/catalina.sh start #启动tomcat服务方式2
[root@localhost tomcat]# netstat -anptu |grep 8080
tcp 0 0 :::8080 :::* LISTEN 1598/java
[root@localhost tomcat]# ps -ef |grep tomcat
有进程
[root@localhost tomcat]# cd
浏览器访问tomcat网站:http://192.168.231.128:8080/ ,如下:
2.在服务器192.168.231.128上安装nginx:
[root@localhost ~]# yum -y install gcc gcc-c++
[root@localhost ~]# yum -y install openssl-devel openssl zlib zlib-devel pcre pcre-devel
[root@localhost ~]# mkdir /nginx
[root@localhost ~]# cd /nginx/
[root@localhost nginx]# ls
nginx-1.6.2.tar.gz
[root@localhost nginx]# tar -zxf nginx-1.6.2.tar.gz
[root@localhost nginx]# ls
nginx-1.6.2 nginx-1.6.2.tar.gz
[root@localhost nginx]# cd nginx-1.6.2
[root@localhost nginx-1.6.2]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@localhost nginx-1.6.2]# useradd -s /sbin/nologin -M nginx
[root@localhost nginx-1.6.2]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@localhost nginx-1.6.2]# make && make install
[root@localhost nginx-1.6.2]# /usr/local/nginx/sbin/nginx
[root@localhost nginx-1.6.2]# netstat -anptu |grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17631/nginx
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 15288/java
tcp 0 0 :::8009 :::* LISTEN 15288/java
tcp 0 0 :::8080 :::* LISTEN 15288/java
浏览器访问nginx,如下:http://192.168.231.128/
3.接下来就进入本文的主题,将Nginx和Tomcat整合在一起使用,实现动静分离。这部分工作其实也就是修改nginx.conf里的配置,动态JSP页面请求交给Tomcat处理,对于静态文件的请求,我们也新建一个location,将常见图片、css、js等请求匹配到该location中,实现动静分离。动静分离就是:我们需要分文件类型来进行过滤,比如jsp直接给tomcat处理,因为nginx并不是servlet容器,没办法处理JSP,而html,js,css这些不需要处理的,直接给nginx进行缓存。
[root@localhost nginx-1.6.2]# vim /usr/local/nginx/conf/nginx.conf
……
user root;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location ~ \.jsp$ { #jsp直接给tomcat处理
index index.jsp;
proxy_pass http://localhost:8080; #最主要是这项,其他没有都行
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 6 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location ~ \.(html|js|css|gif|jpg|png|bmp|swf)$ { #这些图片静态的,直接给nginx进行缓存
expires 30d;
root /usr/local/tomcat/webapps/ROOT; #此处为静态文件路径,也可不设,默认html,根据需要是否动静分开
}
location ~ \.(js|css)$ { #这些程序文件静态的,直接给nginx进行缓存,缓存时间短
expires 1h;
root /usr/local/tomcat/webapps/ROOT; #此处为静态文件路径,也可不设,默认html,根据需要是否动静分开
}
……
}
注意:
#root /usr/local/tomcat/webapps/ROOT; 此处为静态文件路径,也可不设,默认是html,即nginx的站点目录,根据需要设置.
[root@localhost nginx-1.6.2]# echo 111 > /usr/local/tomcat/webapps/ROOT/a.html
[root@localhost nginx-1.6.2]# /usr/local/nginx/sbin/nginx -s reload
浏览器访问静态页面:
浏览器访问动态页面:
如果对运维课程感兴趣,可以在b站上搜索我的账号: 运维实战课程,可以关注我,学习更多运维实战技术视频!