实用知识库
柔彩主题三 · 更轻盈的阅读体验

服务端怎么把Java项目跑起来?游戏服部署实操步骤

发布时间:2026-01-24 05:51:25 阅读:124 次

很多做游戏配置的朋友,比如搭个Minecraft服务端、自建RPG服务器,或者给Unity后端配Java逻辑模块,最后卡在一步:写好的Java项目,扔到服务器上就是不启动。不是报错ClassNotFoundException,就是端口被占、内存炸了,或者连curl都通不过——别急,这不是你代码不行,八成是部署环节漏了细节。

先搞清你的项目类型

Java项目不是全都一样。你手里这个,是JAR包?WAR包?还是Spring Boot打的fat jar?游戏后端现在90%用Spring Boot,所以默认按jar来走:

java -jar server.jar

但直接这么敲,关掉终端就停了。游戏服得一直挂着,得加点“保险”。

别裸奔:加个nohup + 后台运行

最简单的办法,适合测试或小规模部署:

nohup java -Xms512m -Xmx1024m -jar game-server.jar --server.port=8080 > logs/out.log 2>&1 &

解释下关键参数:
-Xms512m -Xmx1024m 是给JVM分内存,别让游戏服刚开团就OOM;
--server.port=8080 是Spring Boot指定端口(Minecraft插件桥接常用8080);
> logs/out.log 把日志导出,方便查谁把配置写错了;
最后那个 & 是真后台,关ssh也不影响。

进阶一点:用systemd托管(推荐)

Linux服务器(比如腾讯云CentOS、阿里云Ubuntu),用systemd最稳。新建一个服务文件:

sudo nano /etc/systemd/system/game-java.service

填进去:

[Unit]
Description=Game Java Backend
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/opt/game-server
ExecStart=/usr/bin/java -Xms512m -Xmx2g -jar /opt/game-server/game-server.jar --spring.profiles.active=prod
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable game-java.service
sudo systemctl start game-java.service
sudo systemctl status game-java.service

看到 active (running) 就成了。崩了会自动拉起,改配置重启也只用一条 systemctl restart。

顺手防两件事

1. 端口冲突:游戏服常和Nginx、MySQL抢3306、80、443。用 netstat -tuln | grep :8080 看端口谁占着;
2. 文件权限:如果提示 Permission denied,别直接chmod 777,改用 chown ubuntu:ubuntu game-server.jar,更干净。

有朋友问:“我本地能跑,上传服务器就NoClassDefFoundError?”大概率是JDK版本不对。CentOS默认可能带OpenJDK 11,但你编译用的是JDK 17——去官网下对应tar.gz,解压,用绝对路径启动:
/opt/jdk-17/bin/java -jar game-server.jar

部署不是玄学,就是把jar包、JDK、配置、权限、守护进程这几块对齐。游戏配置讲究快准稳,跑起来比讲道理重要。