在Ubuntu22.04上执行配置两个Tomcat服务并通过Nginx反向代理实现代理到两个Tomcat服务器上访问对应服务页面的每一步代码

在Ubuntu22.04上配置两个Tomcat服务并通过Nginx反向代理实现代理到两个Tomcat服务器上访问对应服务页面的详细步骤:

1.下载并安装Tomcat服务器

在终端执行以下命令,下载Tomcat安装包并解压缩(需要进入到压缩包所在目录打开终端)到两个不同的目录下,分别命名为tomcat1tomcat2

#不能用这个命令,得自己到tomcat官网下载对应的.tar.gz版本。wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.57/bin/apache-tomcat-9.0.57.tar.gz
#9.0.57.tar.gz得改成自己的版本
tar -zxvf apache-tomcat-9.0.57.tar.gz
mv apache-tomcat-9.0.57 tomcat1
cp -r tomcat1 tomcat2


这几句命令是用来创建两个 Tomcat 服务器实例的,具体含义如下:

  1. tar -zxvf apache-tomcat-9.0.57.tar.gz:该命令将下载的 Tomcat 压缩包解压缩,并解压出来的文件夹名称为 apache-tomcat-9.0.57
  2. mv apache-tomcat-9.0.57 tomcat1:该命令将解压出来的 Tomcat 文件夹名称改为 tomcat1
  3. cp -r tomcat1 tomcat2:该命令将 tomcat1 文件夹复制一份,命名为 tomcat2。这样,我们就得到了两个相同的 Tomcat 文件夹,分别命名为 tomcat1tomcat2

通过这样的方式创建两个 Tomcat 服务器实例是为了模拟在不同的机器上运行两个 Tomcat 服务器的情况。在实际的生产环境中,我们需要在不同的机器上安装和配置 Tomcat 服务器,以实现高可用性和负载均衡。

2.配置Tomcat服务器

进入每个Tomcat服务器的目录下,打开conf/server.xml文件,将默认端口号改为不同的端口号,例如tomcat1的端口号为8080,tomcat2的端口号为8081。

cd tomcat1/conf/
sed -i 's/Connector port="8080"/Connector port="8080"/g' server.xml
cd ../..
cd tomcat2/conf/
sed -i 's/Connector port="8080"/Connector port="8081"/g' server.xml
cd ../..

注意这里值更改connect端口可能会出现问题:在这里插入图片描述

Tomcat默认会在8005端口开启一个关闭端口(Shutdown Port),用于远程关闭Tomcat服务器。在日志信息中,报错指出无法在localhost:8005上创建服务器关闭套接字,说明另一个Tomcat服务器正在使用该端口。

如果想在同一台机器上启动多个Tomcat服务器,需要确保每个Tomcat服务器都使用不同的端口号,包括关闭端口。可以通过修改conf/server.xml文件,找到以下配置,并将其改为不同的端口号:

<Server port="8006" shutdown="SHUTDOWN">

3.如果两个Tomcat都已经启动并且修改了端口号,但是只有一个Tomcat可以正常访问,那么可能是防火墙问题:

检查是否已经打开防火墙并且阻止了第二个Tomcat的端口。使用以下命令检查防火墙设置:

sudo ufw status

如果发现8081端口被阻止,则可以使用以下命令开放该端口:

sudo ufw allow 8081/tcp

4.启动Tomcat服务器

分别进入两个Tomcat的目录下,执行以下命令启动Tomcat服务器:

cd tomcat1/bin/
./startup.sh
cd ../../
cd tomcat2/bin/
./startup.sh
cd ../../

5.测试Tomcat服务器是否启动成功

在浏览器中输入http://localhost:8080http://localhost:8081,分别能够看到Tomcat服务器的欢迎页面,证明Tomcat服务器已经成功启动。

这是成功页面:在这里插入图片描述

6.配置Nginx反向代理

在配置之前需要了解一下Nginx配置文件的结构(知道的可以跳过直接从(1)开始):

Nginx是一款高性能、高可靠性的Web服务器和反向代理服务器,其配置文件的格式比较简单易懂,本质上是一个文本文件。

Nginx的配置文件主要由以下几个部分组成:

  1. 全局块(global block):该部分定义全局配置,例如 worker_processes、pid 等参数。
  2. events 块:该部分配置与连接处理有关的参数,例如 worker_connections 等参数。
  3. http 块:该部分是配置 HTTP 服务器的地方,可以定义 server、upstream、location 等块,可以配置虚拟主机、反向代理等。
  4. server 块:该部分是配置虚拟主机的地方,可以指定 listen、server_name、access_log、error_log 等参数,也可以定义 location 等块。
  5. location 块:该部分是配置请求匹配规则和请求处理的地方,可以定义 proxy_pass、fastcgi_pass、root、rewrite 等参数,也可以嵌套其他 location 块。

下面是一个简单的 Nginx 配置文件的示例:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 65;
    gzip on;

    server {
        listen 80;
        server_name example.com;
        root /var/www/html;

        location / {
            index index.html;
        }

        location /api {
            proxy_pass http://localhost:3000;
        }
    }
}

该配置文件分为全局块、events 块和 http 块三部分,其中 http 块下面定义了一个 server 块,该块配置了监听 80 端口、虚拟主机的 server_name、静态文件根目录等参数,以及两个 location 块,其中 /api 路径会被代理到本地的 3000 端口。

需要注意的是,Nginx 配置文件的语法非常严格,每个块的开头和结尾都必须匹配,因此在编辑配置文件时要格外注意。

(1)下载并安装Nginx服务器

在终端执行以下命令,下载Nginx安装包并安装到本地:

sudo apt-get update
sudo apt-get install nginx
(2)配置Nginx服务器

打开Nginx的 /etc/nginx/sites-available/default文件

sudo nano /etc/nginx/sites-available/default

删除里面的所有内容并添加如下内容,需要注意upstream的名字(tomcatservers)中不能有下划线,否则会报错:

upstream tomcatservers {
    server localhost:8080;
    server localhost:8081;
}

server {
    listen 80;
    server_name localhost;
    
    location / {
        proxy_pass http://tomcatservers;
    }
}

(3)启动Nginx服务器

执行以下命令启动Nginx服务器:

sudo systemctl start nginx
(4)测试Nginx反向代理是否配置成功

在浏览器中输入http://localhost,分别能够看到两个Tomcat服务器的欢迎页面,证明Nginx反向代理已经成功配置。

7.至此,已经完成了在Ubuntu22.04上配置两个Tomcat服务器,并通过Nginx反向代理实现代理到两个Tomcat服务器上访问对应服务页面的步骤。

在这个配置中,Nginx服务器作为一个反向代理服务器,负责接收客户端的请求,并将请求转发给两个Tomcat服务器中的一个,根据配置的upstream节点中定义的服务器列表进行负载均衡。客户端无需关心具体访问哪个Tomcat服务器,只需要将请求发送到Nginx服务器的IP地址或域名即可。

需要注意的是,这个配置只是一个简单的示例,实际应用中还需要考虑更多的因素,例如安全性、性能等方面的问题。

x服务器作为一个反向代理服务器,负责接收客户端的请求,并将请求转发给两个Tomcat服务器中的一个,根据配置的upstream节点中定义的服务器列表进行负载均衡。客户端无需关心具体访问哪个Tomcat服务器,只需要将请求发送到Nginx服务器的IP地址或域名即可。

需要注意的是,这个配置只是一个简单的示例,实际应用中还需要考虑更多的因素,例如安全性、性能等方面的问题。

在安装过程中=因为对linux不太熟悉,所以碰到了很多问题,所以写下来以备日后回顾,顺便记录一下自己研究生的学习过程。
第一次写博客,大家有问题欢迎随时讨论。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值