CentOS使用Nginx反向代理Tomcat部署Java Web项目

CentOS使用Nginx反向代理Tomcat部署Java Web项目


今天我舍友问我:CSDN是什么意思?床上等你吗?



一、安装Tomcat9.0

1.配置Java环境

先卸载系统自带的恶心人的openjdk,方法的话比较暴力,使用rpm找到所有java有关的包,一个一个卸载就可以了。

[raichu@localhost bin]$ rpm -qa | grep java
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64
[raichu@localhost bin]$ sudo yum remove java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64

一直卸载到rpm -qa | grep java什么都不显示为止。
然后从Java官网下载JDK,如果没有特殊要求的话就下载最新版吧,Tomcat的最新版和JDK最新版同时使用不会出现兼容问题

cd ~
wget https://download.oracle.com/otn/java/jdk/8u261-b12/a4634525489241b9a9e1aa73d9e118e6/jdk-8u261-linux-x64.tar.gz?AuthParam=1601028104_c08130b1af5d94a8e19e7cad46402807
#(需要登录才能下载)

好像wget下载下来之后的文件后面还是带着AuthParam,重命名一下之后就可以进行解压了

mv jdk-8u261-linux-x64.tar.gz\?AuthParam\=1601028104_c08130b1af5d94a8e19e7cad46402807 jdk-8u261-linux-x64.tar.gz
tar -zvxf jdk-8u261-linux-x64.tar.gz

然后配置环境变量

[raichu@localhost jdk1.8.0_261]$ sudo vim /etc/profile

在末尾追加以下内容(JAVA_HOME填jdk的实际位置,这里只是演示)

#java
export JAVA_HOME=/home/raichu/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin

保存并退出后执行

[raichu@localhost jdk1.8.0_261]$ source /etc/profile

查看java版本,看到现在java使用的已经不是恶心人的openjdk了

[raichu@localhost jdk1.8.0_261]$ java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

2.安装Tomcat

从官网下载tomcat最新版9.0,解压并进入文件夹

[raichu@localhost ~]$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38.tar.gz
[raichu@localhost ~]$ tar -zvxf apache-tomcat-9.0.38.tar.gz 
[raichu@localhost ~]$ cd apache-tomcat-9.0.38/bin
[raichu@localhost bin]$ ./startup.sh 
Using CATALINA_BASE:   /home/raichu/apache-tomcat-9.0.38
Using CATALINA_HOME:   /home/raichu/apache-tomcat-9.0.38
Using CATALINA_TMPDIR: /home/raichu/apache-tomcat-9.0.38/temp
Using JRE_HOME:        /home/raichu/jdk1.8.0_261
Using CLASSPATH:       /home/raichu/apache-tomcat-9.0.38/bin/bootstrap.jar:/home/raichu/apache-tomcat-9.0.38/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

其实到这儿如果不出错的话,tomcat已经在监听内网的8080端口了,我用的finalshell可以很清楚的看到java占用了内存和CPU,说明正常的运行了,如果出错,tomcat退出了,可以查看logs/catalina.out来检查错误报告
tomcat成功运行

二、安装Nginx

关于Nginx的安装我主要是借鉴的菜鸟教程

1. 编译工具及库文件

这步没啥好说的,用yum安装一下就可以。

sudo yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2.安装PCRE

依次执行下列命令,即可完成PCRE编译。最喜欢看执行configure和make的时候刷刷刷冒出来的代码了,很有大黑客的感觉

cd /usr/local/src/
su root
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install

执行完后,如果能正常显示PCRE版本即可

[raichu@localhost pcre-8.35]$ pcre-config --version
8.35

3.安装Nginx

还是从官网下载Nginx的源代码, 解压,配置,编译,不再赘述,如果上一步PCRE位置正确的话,这一步的配置代码可以直接复制。等待编译完成就算是成功安装了Nginx

cd /usr/local/src/
su root
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar -zvxf nginx-1.6.2.tar.gz
cd nginx-1.6.2.tar.gz/
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make && make install

安装后尝试显示一下版本

[root@localhost nginx-1.6.2]$ /usr/local/webserver/nginx/sbin/nginx -v
nginx version: nginx/1.6.2

为了以后便于操作nginx,我还建立了一个软连接,软连接可以通俗的理解成“快捷方式”,放到/usr/bin下便于直接输入nginx来调用nginx应用,而不是每次都要输入/usr/local/webserver/nginx/sbin/nginx,关于软连接详细的讲解可以看这篇文章

ln /usr/local/webserver/nginx/sbin/nginx /usr/bin

4.编辑Nginx配置文件

既然要进行反向代理,那还得说一下反向代理的原理。
关于正向代理,应该有一定的了解了。
代理服务器Proxy和用户Client建立连接后再请求服务器Server,通俗点说就是起到了隐藏用户Client的用途,或者说当Client和Server不能直接建立连接的时候起到桥梁的作用(科学上网就是基于这种原理来做的)
正向代理
而反向代理则是将整个过程反了过来,隐藏服务器server,很多时候需要反向代理都是因为服务器Server太弱小,其安全程度低或能力不够强,不足以直接和大量client进行连接,Proxy可以将请求分配到空闲的server上,并帮助server分担一些压力(例如Nginx代理静态资源,Tomcat只解析动态资源)。
反向代理

为了反向代理,我们需要让Nginx作为Proxy监听80端口,并将80端口的请求转发至内网的8080端口,来让Tomcat处理。我们可以先建立一个用户用于Nginx的服务

/usr/sbin/groupadd www 
/usr/sbin/useradd -g www www

然后配置nginx.conf

vi /usr/local/webserver/nginx/conf/nginx.conf

我只用了最简单的配置,简单的配置了8080端口的反向代理,关于这个文件的具体配置方法,网络上有很多教程。

user www www;#用户有关信息
worker_processes 1;#这里和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;#错误文件目录和等级
pid /usr/local/webserver/nginx/nginx.pid;
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
http
{
        server
        {
                listen 80;
                location /{
                        proxy_pass http://127.0.0.1:8080;#反向代理的内网端口
                    	proxy_read_timeout 60;
                }
        }
}

配置好配置文件之后,可以使用Nginx引以为傲的热加载进行配置,使用nginx -t命令测试配置文件

[root@localhost raichu]$ nginx -t
nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful

如果测试通过,就可以使用nginx -s reopen重启nginx服务,然后就可以尝试访问了,如果访问不了可能是防火墙的问题,可以尝试用lynx在ssh里去访问http://127.0.0.1:80 如果内网可以访问而外网无法访问,可以通过这个教程来打开80端口。

三.小结

使用Nginx反向代理的关键就在于写好Nginx的配置文件,其余的都是很基础的安装。除了Tomcat,Nginx也可以反向代理gunicorn这种Python服务器,方法类似,如果遇到任何问题,欢迎评论讨论。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值