当前位置: 首页 > article >正文

Linux 部署 Java 项目:Tomcat、Redis、MySQL 教程

在 Linux 服务器上部署 Java 项目通常需要配置应用服务器(如 Tomcat)、数据库(如 MySQL)和缓存服务器(如 Redis)。本文将详细介绍如何在 Linux 环境中部署一个 Java 项目,涵盖 Tomcat、Redis 和 MySQL 的安装与配置。

一、准备工作

在开始之前,确保你拥有以下条件:

  1. 一台运行 Linux 的服务器(本文以 Ubuntu 为例)。
  2. 具有 sudo 权限的用户。
  3. 安装好 Java 环境(JDK)。

安装 Java 环境

如果尚未安装 JDK,可以使用以下命令进行安装:

sudo apt update
sudo apt install openjdk-11-jdk -y
​

二、安装和配置 Tomcat

1. 下载并解压 Tomcat

首先,下载最新版本的 Apache Tomcat:

wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
​

解压下载的文件:

tar -xzf apache-tomcat-9.0.56.tar.gz
sudo mv apache-tomcat-9.0.56 /usr/local/tomcat
​

2. 配置环境变量

编辑 /etc/profile 文件,添加 Tomcat 的环境变量:

sudo nano /etc/profile
​

在文件末尾添加以下内容:

export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
​

使配置生效:

source /etc/profile
​

3. 启动 Tomcat

启动 Tomcat 服务:

cd $CATALINA_HOME/bin
./startup.sh
​

可以通过访问 http://<服务器IP>:8080 检查 Tomcat 是否启动成功。

三、安装和配置 MySQL

1. 安装 MySQL

使用以下命令安装 MySQL:

sudo apt update
sudo apt install mysql-server -y
​

2. 安全配置

运行安全安装脚本进行配置:

sudo mysql_secure_installation
​

按照提示设置 root 密码,并根据需求配置其他安全选项。

3. 创建数据库和用户

登录 MySQL 终端,创建数据库和用户:

sudo mysql -u root -p
​

在 MySQL 终端中执行以下命令:

CREATE DATABASE mydatabase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
​

四、安装和配置 Redis

1. 安装 Redis

使用以下命令安装 Redis:

sudo apt update
sudo apt install redis-server -y
​

2. 配置 Redis

编辑 Redis 配置文件 /etc/redis/redis.conf

sudo nano /etc/redis/redis.conf
​

找到以下行并修改为:

supervised systemd
​

3. 启动 Redis 服务

重启 Redis 服务使配置生效:

sudo systemctl restart redis.service
​

确认 Redis 服务正在运行:

sudo systemctl status redis
​

五、部署 Java 项目

1. 打包 Java 项目

使用 Maven 或 Gradle 打包你的 Java 项目,生成 .war 文件。

2. 部署到 Tomcat

将生成的 .war 文件复制到 Tomcat 的 webapps 目录下:

sudo cp /path/to/yourproject.war /usr/local/tomcat/webapps/
​

重启 Tomcat:

cd $CATALINA_HOME/bin
./shutdown.sh
./startup.sh
​

3. 配置项目数据库连接

编辑项目的配置文件(如 application.properties 或 application.yml),确保正确配置 MySQL 和 Redis 的连接信息:

# MySQL 配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=myuser
spring.datasource.password=mypassword# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
​

六、总结

通过以上步骤,您已经在 Linux 服务器上成功安装并配置了 Tomcat、MySQL 和 Redis,并将 Java 项目部署到 Tomcat 中。

相关文章:

Linux 部署 Java 项目:Tomcat、Redis、MySQL 教程

在 Linux 服务器上部署 Java 项目通常需要配置应用服务器&#xff08;如 Tomcat&#xff09;、数据库&#xff08;如 MySQL&#xff09;和缓存服务器&#xff08;如 Redis&#xff09;。本文将详细介绍如何在 Linux 环境中部署一个 Java 项目&#xff0c;涵盖 Tomcat、Redis 和…...

扣子平台音频功能:让声音也能“智能”起来

在数字化时代&#xff0c;音频内容的重要性不言而喻。无论是在线课程、有声读物&#xff0c;还是各种多媒体应用&#xff0c;音频都是传递信息、增强体验的关键元素。扣子平台的音频功能&#xff0c;为开发者和内容创作者提供了一个强大而灵活的工具&#xff0c;让音频的使用和…...

mongoDB常见指令

即使我们自己开发用不到mongoDB&#xff0c;但是接手别人项目的时候&#xff0c;别人如果用了&#xff0c;我们也要会简单调试一下 虽然mongoDB用的不是sql语句&#xff0c;但语句的逻辑都是相似的&#xff0c;比如查看数据库、数据表&#xff0c;增删改查这些 我们下面以doc…...

【线上问题定位处理】及【性能优化】系列文章

目录 性能优化 性能优化 九大服务架构性能优化方式 如何进行GC调优 如何排查线上系统出现的Full GC MySQL - 性能优化 MySQL - 分库分表 大数据查询的处理方案 MySQL优化手段有哪些 服务CPU100%问题如何快速定位? 服务内存OOM问题如何快速定位? JVM调优6大步骤 线…...

实验二 数据库的附加/分离、导入/导出与备份/还原

实验二 数据库的附加/分离、导入/导出与备份/还原 一、实验目的 1、理解备份的基本概念&#xff0c;掌握各种备份数据库的方法。 2、掌握如何从备份中还原数据库。 3、掌握数据库中各种数据的导入/导出。 4、掌握数据库的附加与分离&#xff0c;理解数据库的附加与分离的作用。…...

RubyFPV开源代码之系统简介

RubyFPV开源代码之系统简介 1. 源由2. 工程架构3. 特性介绍&#xff08;软件&#xff09;3.1 特性亮点3.2 数字优势3.3 使用功能 4. DEMO推荐&#xff08;硬件&#xff09;4.1 天空端4.2 地面端4.3 按键硬件Raspberry PiRadxa 3W/E/C 5. 软件设计6. 参考资料 1. 源由 RubyFPV以…...

php代码审计2 piwigo CMS in_array()函数漏洞

php代码审计2 piwigo CMS in_array()函数漏洞 一、目的 本次学习目的是了解in_array()函数和对项目piwigo中关于in_array()函数存在漏洞的一个审计并利用漏洞获得管理员帐号。 二、in_array函数学习 in_array() 函数搜索数组中是否存在指定的值。 in_array($search,$array…...

第25章 测试驱动开发模式深度剖析

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

PHP校园助手系统小程序

&#x1f511; 校园助手系统 —— 智慧校园生活 &#x1f4f1;一款基于ThinkPHPUniapp框架深度定制的校园助手系统&#xff0c;犹如一把智慧之钥&#xff0c;专为校园团队精心打造&#xff0c;解锁智慧校园生活的无限精彩。它独家适配微信小程序&#xff0c;无需繁琐的下载与安…...

转换算术表达式

文章目录 构造二叉树表示的算术表达式&#xff1a;按先序次序输入二叉树中结点的值(操作数及运算符均以一位字符表示&#xff0c;注意转换)&#xff0c; #字符表示空树&#xff0c;如上图的算术表达式 输入2##*3##4## 输入格式 第一行输入表示要计算的算术表达式的二叉树结点的…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.2 ndarray解剖课:多维数组的底层实现

1.2 《ndarray解剖课&#xff1a;多维数组的底层实现》 内容介绍 NumPy 的 ndarray 是其核心数据结构&#xff0c;用于高效处理多维数组。在这篇文章中&#xff0c;我们将深入解析 ndarray 的底层实现&#xff0c;探讨其内存结构、维度、数据类型、步长等关键概念&#xff0c…...

计算机网络 (61)移动IP

前言 移动IP&#xff08;Mobile IP&#xff09;是由Internet工程任务小组&#xff08;Internet Engineering Task Force&#xff0c;IETF&#xff09;提出的一个协议&#xff0c;旨在解决移动设备在不同网络间切换时的通信问题&#xff0c;确保移动设备可以在离开原有网络或子网…...

css粘性定位超出指定宽度失效问题

展示效果 解决办法&#xff1a;外层容器添加display:grid即可 完整代码 <template><div class"box"><div class"line" v-for"items in 10"><div class"item" v-for"item in 8">drgg</div>&…...

10 Hyperledger Fabric 介绍

简介 HypeLedger&#xff08;超级账本&#xff09;是由Linux基金会2015年创建的首个面向企业应用场景的开源分布式账本平台。 HypeLedger Fabric是HypeLedger种的区块链项目之一HypeLedger Fabric引入权限管理在架构设计上支持可插拔、可扩展是首个面向联盟链场景的开源项目 …...

AI Agent的多轮对话:提升用户体验的关键技巧

在前面的文章中&#xff0c;我们讨论了 AI Agent 的各个核心系统。今天&#xff0c;我想聊聊如何实现一个好用的多轮对话系统。说实话&#xff0c;这个话题我琢磨了很久&#xff0c;因为它直接影响到用户体验。 从一个槽点说起 还记得我最开始做对话系统时的一个典型场景&…...

分布式光纤应变监测是一种高精度、分布式的监测技术

一、土木工程领域 桥梁结构健康监测 主跨应变监测&#xff1a;在大跨度桥梁的主跨部分&#xff0c;如悬索桥的主缆、斜拉桥的斜拉索和主梁&#xff0c;分布式光纤应变传感器可以沿着这些关键结构部件进行铺设。通过实时监测应变情况&#xff0c;能够精确捕捉到车辆荷载、风荷…...

机器学习10-解读CNN代码Pytorch版

机器学习10-解读CNN代码Pytorch版 我个人是Java程序员&#xff0c;关于Python代码的使用过程中的相关代码事项&#xff0c;在此进行记录 文章目录 机器学习10-解读CNN代码Pytorch版1-核心逻辑脉络2-参考网址3-解读CNN代码Pytorch版本1-MNIST数据集读取2-CNN网络的定义1-无注释版…...

面向程序员的Lean 4教程(2) - 数组和列表

面向程序员的Lean 4教程(2) - 数组和列表 上一节我们介绍了Lean4的基本语法&#xff0c;因为大部分程序员都有一定的编程基础&#xff0c;所以并没有介绍过细。这一节我们介绍Lean4中的线性表结构&#xff1a;数组和列表&#xff0c;顺带复习一下上一节的流程控制等内容。 数…...

【C++高并发服务器WebServer】-7:共享内存

本文目录 一、共享内存1.1 shmget函数1.2 shmat1.3 shmdt1.4 shmctl1.5 ftok1.6 共享内存和内存映射的关联1.7 小demo 二、共享内存操作命令 一、共享内存 共享内存允许两个或者多个进程共享物理内存的同一块区域&#xff08;通常被称为段&#xff09;。由于一个共享内存段会称…...

【力扣Hot 100】链表1

1. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交**&#xff1a;** !https://assets.leetcode-cn.com/aliyun-lc-upload/uplo…...

稀土抗菌剂:提升产品质量,保障公共健康

随着全球对抗菌技术需求的不断增长&#xff0c;传统的抗菌剂逐渐暴露出其局限性&#xff0c;包括耐药性、环境污染及副作用等问题。在此背景下&#xff0c;稀土抗菌剂作为一种新兴的抗菌材料&#xff0c;凭借其卓越的抗菌性能、环保特性以及应用多样性&#xff0c;正在成为各行…...

机器学习11-学习路径推荐

机器学习11-学习路径推荐 本文希望摒除AI学习商业宣传要素&#xff0c;推荐一条极简的AI学习路线&#xff01;推荐内容均为在线免费内容&#xff0c;如果有条件可以咨询专业的培训机构&#xff01; 文章目录 机器学习11-学习路径推荐[toc] 1-AI培训路线第一阶段 Python-人工智能…...

postgresql根据主键ID字段分批删除表数据

生产环境针对大表的处理相对比较麻烦。 方案1、直接truncate&#xff0c;可能会遇到系统卡主的情况&#xff0c;因为truncate的过程中会对表进行加锁&#xff0c;会导致数据不能正常的写入 方案2、创建一个同结构的表结构&#xff0c;rename旧表&#xff0c;不停业务rename表担…...

《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记

paper&#xff1a;Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal 目录 摘要 1、介绍 2、相关工作 2.1 阴影去除 2.2 去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Models, DDPM&#xff09; 3、方…...

java后端之事务管理

Transactional注解&#xff1a;作用于业务层的方法、类、接口上&#xff0c;将当前方法交给spring进行事务管理&#xff0c;执行前开启事务&#xff0c;成功执行则提交事务&#xff0c;执行异常回滚事务 spring事务管理日志&#xff1a; 默认情况下&#xff0c;只有出现Runti…...

深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架

SQLSugar 是一个高效、易用的 .NET ORM 框架&#xff0c;支持多种数据库&#xff08;如 SQL Server、MySQL、PostgreSQL 等&#xff09;。它提供了丰富的功能&#xff0c;包括 CRUD 操作、事务管理、动态表名、多表联查等&#xff0c;开发者可以通过简单的链式操作实现复杂的数…...

数据结构——概念与时间空间复杂度

目录 前言 一相关概念 1什么是数据结构 2什么是算法 二算法效率 1如何衡量算法效率的好坏 2算法的复杂度 三时间复杂度 1时间复杂度表示 2计算时间复杂度 2.1题一 2.2题二 2.3题三 2.4题四 2.5题五 2.6题六 2.7题七 2.8题八 四空间复杂度 1题一 2题二 3…...

浅谈在AI时代GIS的发展方向和建议

在AI时代&#xff0c;GIS&#xff08;地理信息系统&#xff09;的发展正经历着深刻的变革&#xff0c;随着人工智能技术的进步&#xff0c;GIS不再仅仅是传统的地图和空间数据处理工具&#xff0c;而是向更加智能化、自动化、精准化的方向发展。作为一名GIS开发工程师&#xff…...

牛客周赛 Round 78 A-C

A.时间表查询&#xff01; 链接&#xff1a;https://ac.nowcoder.com/acm/contest/100671/A 来源&#xff1a;牛客网 题目描述 今天是2025年1月25日&#xff0c;今年的六场牛客寒假算法基础集训营中&#xff0c;前两场比赛已经依次于 20250121、20250123 举行&#xff1b;而…...

Java I/O 流介绍

Java学习资料 Java学习资料 Java学习资料 一、引言 在 Java 编程中&#xff0c;I/O&#xff08;Input/Output&#xff09;流是处理输入和输出操作的核心机制。它允许程序与外部设备&#xff08;如文件、网络连接、键盘、显示器等&#xff09;进行数据交互。通过使用 I/O 流&…...