随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。Java 作为一种跨平台的编程语言,具有广泛的应用场景。本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,包括环境准备、应用发布、配置反向代理(Nginx)、设置系统服务以及日志管理等步骤。
在开始之前,请确保你具备以下条件:
首先,你需要在 Ubuntu 上安装 Java 运行环境(JRE)或 Java 开发工具包(JDK),以便能够运行 Java 应用。
Ubuntu 提供了 OpenJDK(Java 的开源实现)。你可以选择安装 JDK 8(业内主流版本)或 OpenJDK 17(业内下一个主流版本)。
sudo apt install openjdk-17-jdk -y
安装完成后,你可以使用以下命令检查 Java 是否安装成功:
java -version
你应该看到类似于以下的输出,表示 Java 安装成功:
openjdk version "17.0.2" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-60)
OpenJDK 64-Bit Server VM (build 11.0.11+9-60, mixed mode)
sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql
登录MySQL以确认安装成功。
sudo mysql -u root -p
MySQL默认密码是root,直接登录即可。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
这里我们用SQL语句把项目需要的数据库建好即可。
你可以通过构建一个可执行的 JAR 文件来部署 Java 应用程序。
假设你已经有一个构建好的 JAR 文件,将你的 JAR 文件传输到 Ubuntu 服务器上的目标目录。
在服务器上进入应用目录并运行 JAR 文件。
cd /var/www/java-app
java -jar app.jar
如果应用成功启动,你应该能看到类似于下面的日志输出:
2025-01-09 10:00:00.000 INFO [main] - Application started on port 8080
此时你的 Java 应用正在 8080 端口上运行。
为了通过浏览器访问你的 Java 应用,你需要配置 Nginx 作为反向代理,将客户端请求转发到 Java 应用。以下是配置反向代理的步骤。
如果 Nginx 尚未安装,可以使用以下命令进行安装:
sudo apt install nginx -y
打开 Nginx 的配置文件进行编辑:
sudo nano /etc/nginx/sites-available/default
修改 server
块中的配置,将请求转发到 Java 应用的端口(如 8080):
server {
listen 80;
server_name your-domain.com;
location / {
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;
}
}
保存并退出配置文件。
测试 Nginx 配置是否正确:
sudo nginx -t
如果配置无误,重启 Nginx:
sudo systemctl restart nginx
此时,Nginx 已经成功配置为将所有请求转发到 Java 应用。
为了确保 Java 应用在系统启动时自动启动,并且可以通过 systemctl
管理,我们需要将应用配置为一个 systemd 服务。
创建一个新的 systemd 服务文件来管理 Java 应用:
sudo nano /etc/systemd/system/java-app.service
将以下内容添加到文件中:
[Unit]
Description=Java Web Application
After=network.target
[Service]
User=your-user
ExecStart=/usr/bin/java -jar /var/www/java-app/app.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
WorkingDirectory=/var/www/java-app
[Install]
WantedBy=multi-user.target
ExecStart
:指定启动应用的命令。WorkingDirectory
:指定应用的工作目录。Restart
:确保应用崩溃时会自动重启。重新加载 systemd 配置,使新服务生效:
sudo systemctl daemon-reload
启动 Java 应用服务:
sudo systemctl start java-app.service
启用服务,使其在系统启动时自动启动:
sudo systemctl enable java-app.service
你可以使用以下命令查看服务的状态:
sudo systemctl status java-app.service
确保 Java 应用正在运行并且没有错误。
为了有效地监控 Java 应用的运行状态,建议设置日志记录。
你可以使用 Java 的日志框架(如 Logback
或 Log4j
)来配置应用日志。确保日志输出到文件,而不是仅输出到控制台。
在 application.properties
或 logback.xml
配置中指定日志文件的路径。
例如,使用 Logback
配置文件:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/var/log/java-app.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</configuration>
你可以使用 tail
或 journalctl
来查看日志文件:
sudo tail -f /var/log/java-app.log
如果你通过 systemd 启动应用,还可以使用 journalctl
命令来查看应用的日志:
sudo journalctl -u java-app.service -f
通过以上步骤,你可以在 Ubuntu 上成功部署 Java 应用,使用 Nginx 配置反向代理,确保应用能够高效稳定地提供服务。同时,借助 systemd,你还可以方便地管理应用的启动、停止及日志记录,确保服务的高可用性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。