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

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 和…...

Django 多环境配置实战指南

在现代 Web 开发中,一个项目通常需要在多个环境中运行,例如开发环境、测试环境和生产环境。每个环境的配置可能不同,比如数据库连接、调试模式、密钥等。为了确保项目在不同环境中的灵活性和安全性,我们需要合理地管理多环境配置。 本文将详细介绍如何在 Django 项目中实现…...

【C++高并发服务器WebServer】-6:信号

本文目录 信号的概念1.1 core文件1.2 kill命令1.3 alarm函数1.4 setitimer调用1.5 signal捕捉信号1.6 信号集1.7 内核实现信号捕捉的过程1.8 sigaction1.9 sigchld 信号的概念 信号是 Linux 进程间通信的最古老的方式之一&#xff0c;是事件发生时对进程的通知机制&#xff0c…...

HBase的原理

一、什么是HBase HBase是一个分布式&#xff0c;版本化&#xff0c;面向列的数据库&#xff0c;依赖Hadoop和Zookeeper &#xff08;1&#xff09;HBase的优点 提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统 (2) HBase 表的特性 Region包含多行 列族包含多…...

[b01lers2020]Life on Mars1

打开题目页面如下 看了旁边的链接&#xff0c;也没有什么注入点&#xff0c;是正常的科普 利用burp suite抓包&#xff0c;发现传参 访问一下 http://5edaec92-dd87-4fec-b0e3-501ff24d3650.node5.buuoj.cn:81/query?searchtharsis_rise 接下来进行sql注入 方法一&#xf…...

Go学习:常量

变量&#xff1a;程序运行期间&#xff0c;可以改变的量&#xff0c;变量声明需要使用 var 常量&#xff1a;程序运行期间&#xff0c;不可以改变的量&#xff0c;常量声明需要使用 const 目录 1. 常量不允许修改 2. 常量赋值不使用 : 3. 常量能够自动推导类型 1. 常量不允许…...

Python 爬虫——爬取Web页面图片

从网页页面上批量下载jpg格式图片&#xff0c;并按照数字递增命名保存到指定的文件夹。 Web地址&#xff1a;http://p.weather.com.cn/2017/06/2720826.shtml#p1 import urllib import urllib.request import re #正则表达式#解析页面 def load_page(url):requesturllib.reque…...

微信小程序1.1 微信小程序介绍

1.1 微信小程序介绍 内容提要 1.1 什么是微信小程序 1.2 微信小程序的功能 1.3 微信小程序使用场景 1.4 微信小程序能取代App吗 1.5 微信小程序的发展历程 1.6微信小程序带来的机会...

记录备战第十六届蓝桥杯的过程

1.学会了原来字符串也有比较方法&#xff0c;也就是字符串987 > 98 等等&#xff0c;可以解决拼最大数问题 题目链接&#xff1a;5.拼数 - 蓝桥云课 (lanqiao.cn) 2.今天又复习了一下bfs&#xff0c;感觉还是很不熟练&#xff0c;可能是那个过程我些许有点不熟悉&#xff…...

AI 编程工具—Cursor进阶使用 Rules for AI

AI 编程工具—Cursor进阶使用 Rules for AI 这里配置是给所有的会话和内嵌模式的,你可以理解为是一个全局的配置 下面的代码是之前Cursor 给我们生成的,下面我们开始配置Rules ,来让Cursor生成的代码更加符合我们的编程习惯 def quick_sort(arr):"""使用快…...

以租赁合同的例子讲清楚 开源协议原理和区别

开源协议通俗易懂的方式介绍清楚原理和区别 开源协议其实就是软件的“使用规则”&#xff0c;决定了别人可以如何使用、修改、分享你的代码。通俗一点说&#xff0c;如果你写了一段代码&#xff0c;开源协议就是告诉别人在什么条件下他们可以使用你的代码&#xff0c;以及他们可…...

mysql如何修改密码

在MySQL中修改密码可以通过多种方式完成&#xff0c;具体取决于你的MySQL版本和你是否有足够的权限。以下是一些常用的方法来修改MySQL用户的密码&#xff1a; 方法1: 使用ALTER USER命令 这是最常用的方法&#xff0c;适用于MySQL 5.7及以上版本。 ALTER USER usernameloca…...

解数独力扣

题目 解题思路 1.双层循环每一个位置都要去判断能不能放数字 2.每到一个位置如果为空&#xff0c;for循环遍历1-9&#xff0c;通过函数判断是否能放这个数字能放开始回溯判断放下这个数字之后 3.不设结束条件&#xff0c;一直循环判断下去知道所有位置全部填满数字然后retur…...

Zookeeper(28)Zookeeper的线性化写入和顺序一致性读是什么?

Zookeeper 是一个分布式协调服务&#xff0c;它在设计上提供了强一致性的保证&#xff0c;其中包括线性化写入和顺序一致性读。这两种一致性模型确保了在分布式系统中数据的一致性和操作的确定性。 线性化写入&#xff08;Linearizable Writes&#xff09; 线性化写入保证在任…...

ARM嵌入式学习--第九天(串口通信)

--串行与并行通信介绍 通信方式是指双方之间的工作方式或信号传输方式&#xff0c;终端与其他设备&#xff08;例如其他终端&#xff0c;计算机和外部设备&#xff09;通过数据传输进行通信&#xff0c;根据数据的传输方式&#xff0c;有串行通信和并行通信 -并行通信 利用多条…...

Github 2025-01-25Rust开源项目日报Top10

根据Github Trendings的统计,今日(2025-01-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Python项目1Vue项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型…...

Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三)

Android BitmapShader简洁实现马赛克/高斯模糊&#xff08;毛玻璃&#xff09;&#xff0c;Kotlin&#xff08;三&#xff09; 发现&#xff0c;如果把&#xff08;二&#xff09; Android BitmapShader简洁实现马赛克&#xff0c;Kotlin&#xff08;二&#xff09;-CSDN博客 …...

PCIE模式配置

对于VU系列FPGA&#xff0c;当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时&#xff0c;等同于K7系列中的AXI Memory Mapped To PCI Express IP。...

python深入SQLAlchemy使用详解

上次发布《多种方式访问mysql的对比分析》一文后&#xff0c;有读者留言&#xff0c;说SQLAlchemy的使用方法没讲清楚&#xff0c;只有一段简短的介绍&#xff0c;演示代码也比较模糊&#xff0c;SQLAlchemy在实际项目运用非常广泛&#xff0c;由于其支持 ORM 模型&#xff0c;…...

Bootstrap4 模态框

Bootstrap4 模态框 Bootstrap 是一个流行的前端框架,它可以帮助开发者快速构建响应式、移动设备优先的网站和应用程序。Bootstrap 4 是其最新版本,提供了许多易于使用的组件,其中模态框(Modal)组件是其中之一。本文将详细介绍 Bootstrap 4 模态框的用法、特性和优化技巧。…...

GSI快速收录服务:让你的网站内容“上架”谷歌

辛苦制作的内容无法被谷歌抓取和展示&#xff0c;导致访客无法找到你的网站&#xff0c;这是会让人丧失信心的事情。GSI快速收录服务就是为了解决这种问题而存在的。无论是新上线的页面&#xff0c;还是长期未被收录的内容&#xff0c;通过我们的技术支持&#xff0c;都能迅速被…...

vim如何设置制表符表示的空格数量

:set tabstop4 设置制表符表示的空格数量 制表符就是tab键&#xff0c;一般默认是四个空格的数量 示例&#xff1a; &#xff08;vim如何使设置制表符表示的空格数量永久生效&#xff1a;vim如何使相关设置永久生效-CSDN博客&#xff09;...

【Uniapp-Vue3】setTabBar设置TabBar和下拉刷新API

一、setTabBar设置 uni.setTabBarItem({ index:"需要修改第几个", text:"修改后的文字内容" }) 二、tabBar的隐藏和显式 // 隐藏tabBar uni.hideTabBar(); // 显示tabBar uni.showTabBar(); 三、为tabBar右上角添加文本 uni.setTabBarBadge({ index:"…...

【玩转全栈】----Django模板的继承

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01; 目录 模板继承的好处 模板继承的语法规则 更新代码 上文中的部门管理页面&#xff1a; 【玩转全栈】----Django制作部门管理页面-CSDN博客 大家会发现&#xff0c;由于定义了多个html文件&#xff0c;多个ht…...

详解数据库系统概述

数据库系统概述 1. 数据库&#xff08;Database&#xff09;1.1 定义&#xff1a;1.2 特点&#xff1a;1.3 举例&#xff1a; 2. 数据库管理系统&#xff08;DBMS&#xff1a;Database Management System&#xff09;2.1 定义&#xff1a;2.2 DBMS 的主要功能&#xff1a;2.3 常…...

Windows的docker中安装gitlab

一.Windows的docker中安装gitlab 1.通过阿里云拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/lab99/gitlab-ce-zh 2.在本地创建备份数据的目录 mkdir -p D:home/software/gitlab/etc mkdir -p D:home/software/gitlab/logs mkdir -p D:home/software/gitlab/dat…...

基于微信小程序的健身管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

windows 安装 mysql 教程

一、下载 点开下面的链接&#xff1a; https://downloads.mysql.com/archives/community/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包&#xff0c;将其解压&#xff0c;我们就可以得到MySQL 8.0.28 的软件本体了(就是…...

Vue2+OpenLayers初始化高德地图

目录 一、案例截图 二、完整代码 一、案例截图 二、完整代码 一键复制即可运行&#xff1a; <template><div id"map-container"></div> </template> <script> import { Map, View } from ol import { Tile as TileLayer } from ol…...

六、深入了解DI

依赖注入是⼀个过程&#xff0c;是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源&#xff0c;⽽资源指的就是对象. 在上⾯程序案例中&#xff0c;我们使⽤了 Autowired 这个注解&#xff0c;完成了依赖注⼊的操作. 简单来说,就是把对象取出来放到某个类的属性中。 关于依赖注…...