FEATURED · 精选文章

Linux服务器部署 MavenJavaWeb项目完整指南:单体与聚合项目实战

发布时间 / 2026/9/3 6:59:19
来源 / 创域科博编辑部
栏目 / 资讯中心
Linux服务器部署 MavenJavaWeb项目完整指南:单体与聚合项目实战 摘要本文详细介绍如何在 Linux 服务器上部署 Maven Java Web 项目涵盖单体项目与聚合项目两种场景。内容包括 MySQL 远程连接配置、防火墙处理、JDK 与 Maven 环境安装、阿里云镜像配置、Tomcat 多端口部署以及 server.xml 多 Service 配置等核心步骤帮助读者从零完成生产环境部署。一、单体项目单体项目部署相对简单核心流程包括准备数据库环境、修改项目配置、开放防火墙端口、安装 JDK 与 Maven、打包上传并启动 Tomcat。下面按步骤逐一说明。1. 在服务器中安装 MySQL能够远程连接数据库首先需要在服务器上安装 MySQL 数据库并确保能够通过远程方式连接。安装完成后需要为远程访问创建专用账号并授权同时确认 MySQL 监听地址允许外部访问。注意本次演示的服务器上装的是MariaDB 10.5.29MariaDB 是 MySQL 的开源分支用法几乎完全一样只有在导入.sql文件时有些许差异在第三章会讲述。2. 把项目中的数据库连接地址以及其他需要服务器的地址改为该服务器的 IP 地址修改项目配置文件如 jdbc.properties、application.yml 等将数据库连接地址、Redis 地址等指向当前服务器的 IP并同步更新账号密码等连接信息。3. 防火墙操作根据环境选择关闭防火墙或放行指定端口。开发环境可直接关闭生产环境建议按需放行端口。# 查看状态 systemctl status firewalld 方式1开发环境直接关闭防火墙 systemctl stop firewalld systemctl disable firewalld 生产不要关闭放行端口示例8080、3306 firewall-cmd --add-port8080/tcp --permanent firewall-cmd --reload4. 安装基础运行环境JDK使用 yum 直接安装 OpenJDK 1.8包含开发工具包。yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y验证安装是否成功java -version出现 openjdk 版本信息代表安装成功。成功后出现5. 安装 Maven下载 Maven 3.8.8 并解压到 /usr/local 目录。cd /usr/local wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz tar -zxvf apache-maven-3.8.8-bin.tar.gz mv apache-maven-3.8.8 maven6. 配置环境变量编辑 /etc/profile 文件添加 JDK 与 Maven 的环境变量。vim /etc/profile文件末尾粘贴export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export M2_HOME/usr/local/maven export PATH$PATH:$JAVA_HOME/bin:$M2_HOME/bin效果如下图所示保存退出刷新环境变量并验证source /etc/profile mvn -v成功后出现7. 配置 Maven 阿里云镜像必做否则打包下载依赖超级慢编辑 Maven 的 settings.xml 文件配置阿里云公共镜像仓库。vim /usr/local/maven/conf/settings.xml找到mirrors/mirrors替换里面内容mirrors mirror idaliyunmaven/id mirrorOf*/mirrorOf urlhttps://maven.aliyun.com/repository/public/url /mirror /mirrors8. 上传打包好的 war 包到 Tomcat 的 webapps 目录将本地打包好的 war 包上传到服务器 Tomcat 的 webapps 目录下。9. 开放默认端口Tomcat 默认端口8080本次演示的单体项目使用的是8081端口需在防火墙中放行对应端口。10. 修改 server.xml 文件编辑 Tomcat 的 server.xml为单体项目添加独立的 Service 配置指定 8081 端口。?xml version1.0 encodingUTF-8? Server port8005 shutdownSHUTDOWN Listener classNameorg.apache.catalina.startup.VersionLoggerListener / Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineon / Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener / Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener / GlobalNamingResources Resource nameUserDatabase authContainer typeorg.apache.catalina.UserDatabase descriptionUser database that can be updated and saved factoryorg.apache.catalina.users.MemoryUserDatabaseFactory pathnameconf/tomcat-users.xml / /GlobalNamingResources !-- 8081 ssm项目 -- Service nameCatalina4 Connector port8081 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 URIEncodingUTF-8/ lt;Connector port8011 protocolAJP/1.3 redirectPort8443 secretRequired/gt; lt;Engine nameCatalina4 defaultHostlocalhostgt; lt;Realm classNameorg.apache.catalina.realm.LockOutRealmgt; lt;Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/gt; lt;/Realmgt; lt;Host namelocalhost appBasewebapps unpackWARstrue autoDeploytruegt; lt;Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%h %l %u %t amp;quot;%ramp;quot; %s %b /gt; lt;Context docBasessm path/ reloadabletrue/gt; lt;/Hostgt; lt;/Enginegt; /Service /Server11. 运行 Tomcat启动 Tomcat 服务并通过日志实时排查启动过程中的报错。# 启动 /usr/local/tomcat8/bin/startup.sh 停止 /usr/local/tomcat8/bin/shutdown.sh 实时看日志排查报错最重要 tail -f /usr/local/tomcat8/logs/catalina.out12. 访问成功启动完成后通过浏览器访问项目地址验证部署是否成功。二、聚合项目聚合项目包含多个子模块ham-console、ham-file、ham-portal需要在同一个 Tomcat 中通过多个 Service 配置实现多端口部署。下面说明具体步骤。1. 上传打包好的 war 包到 Tomcat 的 webapps 目录将聚合项目各模块打包好的 war 包分别上传到 Tomcat 的 webapps 目录。2. 开放默认端口Tomcat 默认端口8080本次演示的聚合项目ham-console使用8080端口ham-file使用8085端口ham-portal使用8086端口需在防火墙中放行对应端口。3. 修改 server.xml 文件编辑 Tomcat 的 server.xml为聚合项目的每个模块配置独立的 Service分别指定不同端口。?xml version1.0 encodingUTF-8? Server port8005 shutdownSHUTDOWN Listener classNameorg.apache.catalina.startup.VersionLoggerListener / Listener classNameorg.apache.catalina.core.AprLifecycleListener SSLEngineon / Listener classNameorg.apache.catalina.core.JreMemoryLeakPreventionListener / Listener classNameorg.apache.catalina.mbeans.GlobalResourcesLifecycleListener / Listener classNameorg.apache.catalina.core.ThreadLocalLeakPreventionListener / GlobalNamingResources Resource nameUserDatabase authContainer typeorg.apache.catalina.UserDatabase descriptionUser database that can be updated and saved factoryorg.apache.catalina.users.MemoryUserDatabaseFactory pathnameconf/tomcat-users.xml / /GlobalNamingResources !-- Service1 : 8085 ham‑file -- Service nameCatalina1 Connector port8085 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 URIEncodingUTF-8/ lt;Connector port8015 protocolAJP/1.3 redirectPort8443 secretRequired/gt; lt;Engine nameCatalina1 defaultHostlocalhostgt; lt;Realm classNameorg.apache.catalina.realm.LockOutRealmgt; lt;Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/gt; lt;/Realmgt; lt;Host namelocalhost appBasewebapps unpackWARstrue autoDeploytruegt; lt;Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%h %l %u %t amp;quot;%ramp;quot; %s %b /gt; lt;Context docBaseham-file-1.0-SNAPSHOT path/ reloadabletrue/gt; lt;/Hostgt; lt;/Enginegt; /Service !-- Service2 : 8086 ham‑portal -- Service nameCatalina2 Connector port8086 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 URIEncodingUTF-8/ lt;Connector port8016 protocolAJP/1.3 redirectPort8443 secretRequired/gt; lt;Engine nameCatalina2 defaultHostlocalhostgt; lt;Realm classNameorg.apache.catalina.realm.LockOutRealmgt; lt;Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/gt; lt;/Realmgt; lt;Host namelocalhost appBasewebapps unpackWARstrue autoDeploytruegt; lt;Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%h %l %u %t amp;quot;%ramp;quot; %s %b /gt; lt;Context docBaseham-portal-1.0-SNAPSHOT path/ reloadabletrue/gt; lt;/Hostgt; lt;/Enginegt; /Service !-- Service3 : 8080 ham‑console -- Service nameCatalina3 Connector port8080 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 URIEncodingUTF-8/ lt;Connector port8010 protocolAJP/1.3 redirectPort8443 secretRequired/gt; lt;Engine nameCatalina3 defaultHostlocalhostgt; lt;Realm classNameorg.apache.catalina.realm.LockOutRealmgt; lt;Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/gt; lt;/Realmgt; lt;Host namelocalhost appBasewebapps unpackWARstrue autoDeploytruegt; lt;Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%h %l %u %t amp;quot;%ramp;quot; %s %b /gt; lt;Context docBaseham-console-1.0-SNAPSHOT path/ reloadabletrue/gt; lt;/Hostgt; lt;/Enginegt; /Service !-- Service4 : 8081 ssm项目 -- Service nameCatalina4 Connector port8081 protocolHTTP/1.1 connectionTimeout20000 redirectPort8443 URIEncodingUTF-8/ lt;Connector port8011 protocolAJP/1.3 redirectPort8443 secretRequired/gt; lt;Engine nameCatalina4 defaultHostlocalhostgt; lt;Realm classNameorg.apache.catalina.realm.LockOutRealmgt; lt;Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/gt; lt;/Realmgt; lt;Host namelocalhost appBasewebapps unpackWARstrue autoDeploytruegt; lt;Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%h %l %u %t amp;quot;%ramp;quot; %s %b /gt; lt;Context docBasessm path/ reloadabletrue/gt; lt;/Hostgt; lt;/Enginegt; /Service /Server4. 运行 Tomcat启动 Tomcat 服务并通过日志实时排查启动过程中的报错。# 启动 /usr/local/tomcat8/bin/startup.sh 停止 /usr/local/tomcat8/bin/shutdown.sh 实时看日志排查报错最重要 tail -f /usr/local/tomcat8/logs/catalina.out5. 运行成功启动完成后分别访问各模块地址验证聚合项目是否部署成功。三、注意可能出现的问题本次演示的服务器上装的是MariaDB 10.5.29MariaDB 是 MySQL 的开源分支用法几乎完全一样只有在导入.sql文件时有些许差异。1.root 账号没有在ssm和hami数据库里执行CREATE TABLE创建表的权限可以先b把本地数据库中的数据进行转储sql文件操作上传到服务器在进行导入在只显示ssm数据库先登录数据库mysql -uroot -p创建数据库CREATE DATABASE ssm DEFAULT CHARACTER SET utf8mb4;上传ssm.sql文件到服务器/sql目录将文件复制到临时目录做修改避免改动原始备份cp /sql/ssm.sql /tmp/ssm_fix.sql批量替换 SQL 里不兼容的排序规则sed -i s/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g /tmp/ssm_fix.sql执行 SQL 脚本导入数据库mysql -uroot -p ssm /tmp/ssm_fix.sql校验表是否导入成功mysql -uroot -p use ssm; show tables;2.远程 root 账号没有对 hami 库 song 表的 UPDATE 修改权限1. 登录 MariaDB 数据库本地服务器登录mysql -uroot -p直接给root%授权完整权限复制下面 SQL 执行GRANT ALL PRIVILEGES ON hami.* TO root%; FLUSH PRIVILEGES;hami.* hami 数据库下面所有表包含 song 表不用单独指定 song2. 刷新权限必须执行FLUSH PRIVILEGES;3. 校验权限是否成功SHOW GRANTS FOR root%;执行后看到GRANT ALL PRIVILEGES ONhami.* TO root%就代表授权完成。4. 测试修改语句USE hami; UPDATE song SET TID 1 WHERE SRID 1;如果这条 SQL 执行成功权限就完全没问题了。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻