Linux Java 部署攻略 Logo 如何在Linux上部署Java项目 — 全攻略

如何在Linux上部署Java项目 · 深度实操指南

? 从零开始,覆盖 Spring Boot数据库建表Redis缓存环境变量curl测试安全加固 等核心环节,网民最关心的周边知识都在这。

? 快速起步 · 项目配置与启动

Linux 上跑 Java 项目,对于新手来说实际上挺有意思,但别指望它是那种“一键即好”的魔法。咱们直接上实操,少讲虚的,多讲点门道。先整项目配置,一般启动 Spring Boot 或普通 Java 程序,核心就是把 application.propertiesapplication.yml 里的 server.port 改个号,重启就行。比如改成 8080,浏览器搜 127.0.0.1:8080 就能看到了。

? application.properties 示例
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=app_user

这时候还得注意一下 端口冲突,要是服务器上本来已经有个 8080 的进程在跑,你就得改个别的端口,不然别人访问都进不去了。使用 ss -tunap | grep 8080 快速查看。

检查端口占用 修改端口号 重启应用

?️ 数据库 · 自动建表与初始化

别看 Java 是对象导向的,但 SQL 还是挺有用的。要是想让数据库在应用出来之前就自动建表,得用一些建表脚本或 MySQL 的坑位表。比如有个项目,里面有个 config 表,先用 Java 代码跑一遍 SQL 建好,然后写入配置文件或环境变量里去。这样下次程序启动,不用每次重启脚本都去敲一遍建表命令,既省事又好管住。

?

初始化脚本

schema.sql 放置建表语句,data.sql 放初始数据。Spring Boot 自动执行。

?

Flyway / Liquibase

版本化管理数据库,迁移脚本 记录每一次变更。

配置示例

spring.sql.init.mode=always 启动时自动执行。

-- config 表建表脚本
CREATE TABLE IF NOT EXISTS `config` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `config_key` VARCHAR(100) NOT NULL,
  `config_value` TEXT
);

? 缓存策略 · Redis / Caffeine

Tomcat 默认的内存缓存有时候确实有点捉襟见肘,特别是 RBAC 这种需求多次请求验证的项目。这时候引入 Redis 或 Druid 是个挺常见的思路。比如在 DDL 语句里加上 set timeout,配合定时任务的触发器,每隔几分钟就把过期数据清空一次。这样既能保证数据一致性,又能防止内存溢出。自然,Caffeine 或 Guava 这种内存缓存库也能够寻思,但 Redis 在分布式场景下还是更有优势。

第一步

引入依赖

Spring Boot Starter Data Redis

第二步

配置连接

spring.redis.host=localhost 端口 6379

第三步

注解缓存

@Cacheable("users") 自动缓存结果

第四步

过期策略

设置 TTL 如 @CacheEvict 定时清理

网友还关心:Redis 内存淘汰缓存穿透 怎么解决?布隆过滤器 + 空值缓存。

? 环境管理 · .env 与 Docker

别看能够用 dockerDocker Compose 来托管整个项目,但要是你只想在 Linux 宿主机上跑单机版,那就得搞个 .env 文件了。比如 DB_PASSWORDDB_HOST 这些敏感信息都放在这儿。启动脚本里写个逻辑:先读取 .env 里的配置,再自动执行对应的初始化 SQL 和监听端口。别看听起来有点繁琐,但在没有 CI/CD 流水线的时候,手动改配置文件是管住力最强的方式。

.env 典型配置

DB_HOST=192.168.1.50
DB_PORT=3306
DB_PASSWORD=MyS3cret!
REDIS_HOST=localhost

application.properties 中引用:${DB_HOST} 。启动时加上 --env-file .env 或通过 source .env 加载。

Docker Compose 片段

version: '3.8'
services:
  app:
   image: myapp:latest
   ports: - "8080:8080"
   env_file: .env

网友还关心:docker-composeKubernetes 的差异,单机用 compose 足够。

启动脚本示例 (bash)

#!/bin/bash
source .env
java -jar app.jar --server.port=8080
echo "应用已启动,端口: 8080"

使用 systemd 服务单元实现开机自启,守护进程 管理更稳健。

? 接口测试 · curl 与 wget 硬核调试

别总依赖 Postman 这种 GUI 工具,命令行工具实际上更硬核。用 curlwget 结合起来,既能看响应体,还能抓包调试。比如我要测试登录接口,curl -v http://localhost:8080/login 就能看到详细的请求头、响应头就连状态码。要是接口回 404,可能是路径不对;回 500,可能是业务逻辑错了。我在测试的时候发现,有时候 application.properties 里的 request.format 没配好,默认就是文本回,那我就得 manually 加个 application/json 让它变成 JSON 格式,不然客户端解析起来就费劲了。

$ curl -v -X POST http://localhost:8080/api/login
  -H "Content-Type: application/json"
  -d '{"username":"admin","password":"pass"}'

? 网友还关心:curl 超时设置wget 下载文件HTTP 状态码 详解。

200 成功 404 路径错误 500 服务端异常 401 未授权

? 安全 · 环境变量与白名单

部署到造环境之前,保险忒关键了。别把 application.properties 直接放进代码库,特别是包含敏感信息的。用环境变量或 .env 文件管理,启动脚本启动前再把这些变量读取进去。IP 白名单 也是个务必做的,只给特定 IP 放行,比如 192.168.1.100 才能访问接口,其他本地机器或公网 IP 直接回绝。还有造环境的数据库密码,绝对不能用硬编码在代码里,环境变量比代码里更保险。

# iptables 白名单示例
iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

? 网络排查 · netstat / ss 命令

Linux 自带 netstatss 命令,用来扫描端口贼高效。比如我要确认 8080 端口是否确实在跑应用,ss -tunap | grep 8080 就能扫出来。要是端口不通,大约率是防火墙或端口被占用了。有时候应用自己没监听,但端口号对,这是不是有点玄学?不过要是是用 systemdservice 守护进程管理,一般监听点都设置好了,不用忒揪心。

?

ss -tunap

显示所有 TCP/UDP 监听端口及进程 PID。

?

防火墙排查

firewall-cmd --list-alliptables -L

?

应用日志

journalctl -u myapp.service 查看启动错误。

$ ss -tunap | grep 8080
tcp LISTEN 0 100 0.0.0.0:8080 0.0.0.0: users:(("java",pid=1234))

网友还关心:tcpdump 抓包分析,pingtelnet 测试连通性。


? 网友们还关心 · 周边深度知识

总而言之,在 Linux 上部署 Java 项目,核心就是配置、启动、监控这三步。别看流程比在 Windows 上略微繁琐点,但一旦跑通了,赶明儿就是手痒就改个参数就能启动。关键是养成好习惯,别把乱七八糟的配置文件硬塞进代码,也别把密码直接写在代码里。只要把这些细节抠好,Linux 环境下的 Java 开发体验 实际上是相当流畅的。

◆ 最新
漳浦县人民政府项目-漳浦县贫困县帮扶项目新产品项目启动方案模板-新产品项目启动模板项目攻坚方案-项目攻坚方案地推项目平台有哪些-地推项目平台概览测试项目有哪些-测试项目有哪些北京欢乐谷项目-北京欢乐谷项目3518加盟网加工好项目-加盟网加工好项目列表齐市妇科检查项目及费用-齐市妇科检查全项目及费用ssm项目整合搭建-ssm 项目整合搭建如何做大项目-如何做大项目电气高压试验项目-电气高压试验项目容易挣钱的项目-赚钱的好项目世界运动会项目-世界运动会项目楼盘项目三亚-三亚楼盘项目中建七局近期中标项目有哪些-中建七局近期中标项目区块链国外优质项目-境外优质区块链项目全脑教育项目办公室-全脑教育项目办网赚项目资源共享-网赚项目资源共享成都老房改造项目-成都老房改造项目婚检需要做哪些检查项目-婚检主要检查项目五子棋游戏项目描述-五子棋项目描述园林绿化项目经理等级-园林项目经理等级公装公司招项目经理-公装公司招项目经理java毕业设计项目-Java 毕业项目net源码项目-免费源码项目项目管理考试 经验-项目管理经验介绍工程项目论证与评估的共同之处包括-工程论证与评估共同点黄岛主项目靠谱吗-黄岛项目是否靠谱项目融资风险有哪些-项目融资主要风险山东特色餐饮项目加盟-山东特色餐饮项目加盟idea maven项目分层-idea maven 项目分层医用防护服有哪些项目-医用防护服分类项目电动汽车充电桩项目计划书-充电桩项目计划书(10 字内)天天赚钱的项目-天天赚钱的项目招生宣传广告采购项目-招生宣传广告采购bim在工程项目的应用- BIM 在工程领域应用epc项目什么意思-EPC 项目指总承包。项目负责人撤出申请表空手套白狼灰色项目-空手套白狼灰色项目系统集成项目管理软件-集成项目管理软件汽车20000公里保养项目-汽车保养 20000 公里spa前列腺保养服务项目-SPA 前列腺保养项目vr创业项目有什么信息系统项目管理师第四版电子版-信息系统项目管理师第四版小加盟项目好-加盟项目好开启物业项目负责人培训考试简单吗?-培训考试难不难项目概述揭阳石油化工项目html5 项目设计实训男科常规检查都有哪些项目-男科常规检查项目项目加盟多少钱-项目加盟费用参考信息化项目立项申报书-立项申报书甘肃扶贫项目-甘肃扶贫项目建造师当项目经理-建造师任项目经理保健项目有哪些-保健项目有哪些国内平面设计公司项目-国内平面设计公司项目温州妇科检查项目费用-温州妇科检查费为老人服务的创业项目-老人服务项目创业建设项目党建联建口号-建设党建联建新成效蛋糕加盟项目-蛋糕加盟项目优化微商创业项目怎么找-微商创业项目如何寻迪士尼的各个项目-迪士尼项目系列项目资金审批程序-项目资金审批流程什么投资项目比较-投资项目筛选电商小投资项目-小项目投资机会新项目融资-新项目融资方案o2o农业创业项目-线上农商电商平台轻钢龙骨检测项目-轻钢龙骨检测项目工地项目经理很花心吗-项目经理花心吗热门创业好项目-热门创业好项目2019年互联网项目-2019 年项目用词脑电波检查项目-脑电波检测项目国外考察项目要素-考察项目主要要素岱山县鱼山岛石化项目-岱山鱼山石化项目高中生发明专利项目-中学生发明专利机械项目经理许海峰-机械项目经理许海峰如何关闭电脑启动项目-关闭电脑启动项目共享项目的商业计划书-共享项目商业计划书项目申请报告评审-项目评估与审批工程项目预算培训-工程项目预算培训建设项目运营-建设项目运营怎样做好施工项目经理-做好施工项目经理法分销系统项目-分销系统项目最新代理项目-最新代理项目血液检查项目多少钱-血液检查项目多少物业公司高端项目综合运营方案-高端物业运营综合方案工程项目风险管理规划-工程项目风险管控规划工程项目三公费用-工程项目三公费用迈德思客汉堡加盟项目-迈德思客汉堡加盟好的网络投资项目-信赖优质网络投资2018好项目开个什么厂-2018 年选对厂址项目医学影像包括哪些项目-医学影像包含诸多项目spring mvc 项目-SpringMVC 项目重构2011年致富项目-2011 年致富项目一般妇科检查什么项目-妇科检查常规项目时时彩团队计划项目-时时彩团队计划项目名尚赫减肥项目-尚赫减肥项目生活中的项目有哪些-生活项目大集合小程序项目发布会-小程序项目发布会
瑞秋资讯
蜀ICP备2026006976号-18