凌峰创科服务平台

Linux如何搭建Java Web服务器?

  1. 环境准备:安装 Java 运行环境 和 Web 服务器/应用服务器。
  2. 部署 Web 应用:将你的 Java Web 应用(通常是 WAR 包)部署到服务器上。
  3. 访问与维护:启动服务器,访问应用,并进行日常维护。

下面我将为你提供一个详细、分步的指南,以最主流的 Nginx + Tomcat 组合为例,这是目前生产环境中最常用、性能最高的方案。


方案概览:Nginx + Tomcat

  • Tomcat:一个开源的 Java Servlet 容器,是运行 Java Web 应用的核心,它负责解析 Java 代码(Servlet, JSP)并返回动态内容。
  • Nginx:一个高性能的 HTTP 和反向代理服务器,它扮演两个角色:
    1. 反向代理:接收来自外部的所有 HTTP/HTTPS 请求,然后根据 URL 路径将请求转发给后端的 Tomcat 处理,用户只与 Nginx 通信,增强了安全性。
    2. 静态资源处理:直接处理 CSS, JavaScript, 图片等静态文件,减轻 Tomcat 的负担,提升整体性能。

第一步:环境准备(以 CentOS 7 为例)

更新系统

sudo yum update -y

安装 Java 运行环境

Java Web 应用需要 JRE 来运行,我们推荐安装 OpenJDK,它是免费且开源的。

# 安装 OpenJDK 11 (这是一个非常稳定且广泛使用的版本)
sudo yum install java-11-openjdk-devel -y
# 验证安装
java -version
# 应该显示类似 openjdk version "11.0.x" 的信息

安装 Tomcat

Tomcat 是一个独立的软件包,我们可以直接从官网下载。

# 创建一个目录用于存放 Tomcat
sudo mkdir -p /opt/tomcat
cd /opt/tomcat
# 下载 Tomcat 10 (支持 Jakarta EE 9, 是较新的版本)
# 你可以去官网 https://tomcat.apache.org/download-90.cgi 获取最新链接
sudo wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.18/bin/apache-tomcat-10.1.18.tar.gz
# 解压
sudo tar -zxvf apache-tomcat-10.1.18.tar.gz
# 为了方便,创建一个软链接,版本号可以忽略,方便后续升级
sudo ln -s apache-tomcat-10.1.18 tomcat-current
# 设置目录所有者为当前用户,避免权限问题
sudo chown -R $USER:$USER /opt/tomcat

安装 Nginx

Nginx 通常通过系统的包管理器安装。

# 安装 EPEL 仓库 (如果尚未安装)
sudo yum install epel-release -y
# 安装 Nginx
sudo yum install nginx -y
# 启动 Nginx 并设置为开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 检查 Nginx 状态
sudo systemctl status nginx

访问你的服务器 IP 地址(http://your_server_ip),如果看到 Nginx 的欢迎页面,说明安装成功。


第二步:部署 Java Web 应用

假设你已经有一个编译好的 Java Web 应用,它的输出是一个 ROOT.war 文件(或者任意 yourapp.war 文件)。ROOT.war 会部署为 Tomcat 的根应用(即访问根路径 )。

Linux如何搭建Java Web服务器?-图1

准备 WAR 包

将你的 ROOT.war 文件上传到服务器的 /opt/tomcat/webapps 目录,你可以使用 scp, rsync 或者 FTP/SFTP 工具。

# 假设你的 WAR 包已经在本地的当前目录下
# 使用 scp 上传 (需要先在服务器上配置好 SSH 免密登录)
scp ROOT.war your_user@your_server_ip:/opt/tomcat/webapps/
# 登录到服务器
ssh your_user@your_server_ip
cd /opt/tomcat/webapps

启动 Tomcat

Tomcat 提供了启动脚本。

# 进入 Tomcat 的 bin 目录
cd /opt/tomcat/tomcat-current/bin
# 启动 Tomcat (./startup.sh)
./startup.sh

你会看到一些启动日志,启动后,Tomcat 默认在 8080 端口上运行。

验证 Tomcat

直接访问 http://your_server_ip:8080,如果你部署的是 ROOT.war,你应该能看到你的 Web 应用首页,如果没部署,你会看到 Tomcat 的默认主页。

Linux如何搭建Java Web服务器?-图2


第三步:配置 Nginx 反向代理

我们需要配置 Nginx,让它接收所有请求,并将它们转发给 Tomcat。

创建 Nginx 配置文件

/etc/nginx/conf.d/ 目录下创建一个新的配置文件,java-app.conf

sudo vi /etc/nginx/conf.d/java-app.conf

编写配置内容粘贴到文件中,这个配置会把所有对根路径 的请求都转发给 Tomcat 的 8080 端口。

server {
    # 监听 80 端口,处理 HTTP 请求
    listen       80;
    server_name  your_server_ip; # 替换成你的域名或 IP
    # 访问日志
    access_log  /var/log/nginx/java-app.access.log;
    error_log   /var/log/nginx/java-app.error.log;
    location / {
        # proxy_pass 指定后端 Tomcat 的地址
        # http://tomcat-server:8080/ 表示将请求转发到 Tomcat 的根路径
        proxy_pass http://127.0.0.1:8080/;
        # 设置一些常用的代理头,确保应用能获取到正确的客户端信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

重要提示

  • your_server_ip 替换成你的服务器公网 IP 地址。
  • proxy_pass http://127.0.0.1:8080/; 这里的 很重要,它表示转发 URL 的路径部分。

测试并重载 Nginx 配置

在重启 Nginx 之前,一定要测试配置文件是否正确。

Linux如何搭建Java Web服务器?-图3

# 测试 Nginx 配置语法
sudo nginx -t
# 如果显示 syntax is ok 和 test is successful,则重载配置
sudo systemctl reload nginx

第四步:访问与维护

最终访问

你可以通过浏览器访问 http://your_server_ip,Nginx 会接收到这个请求,并将其转发给 Tomcat 上的你的 Java Web 应用,用户无需知道 8080 端口的存在。

配置 HTTPS (强烈推荐)

生产环境必须使用 HTTPS,你可以使用 Let's Encrypt 免费获取 SSL 证书。

# 安装 Certbot
sudo yum install certbot python3-certbot-nginx -y
# 获取证书 (替换 your_domain.com 为你的域名)
sudo certbot --nginx -d your_domain.com
# Certbot 会自动修改你的 Nginx 配置,添加 HTTPS 监听和重定向

配置完成后,你的网站就可以通过 https://your_domain.com 安全访问了。

日志管理

  • Nginx 日志:默认在 /var/log/nginx/ 目录下。
  • Tomcat 日志:在 /opt/tomcat/tomcat-current/logs/ 目录下,最重要的是 catalina.outlocalhost.log

开机自启

为了让 Tomcat 也随服务器启动,可以创建一个 systemd 服务。

# 创建服务文件
sudo vi /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.x.x.x.x.x.x.x86_64" # 找到你的 JAVA_HOME 路径
Environment="CATALINA_PID=/opt/tomcat/tomcat-current/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat/tomcat-current"
Environment="CATALINA_BASE=/opt/tomcat/tomcat-current"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -XX:+

分享:
扫描分享到社交APP
上一篇
下一篇