分享记录在使用ubuntu部署项目(api接口项目)的步骤+自己踩过的坑(亲身经历,坑挺多的)

安装虚拟机VMware Workstation Player/Pro

优点:
高性能:VMware的虚拟机通常具有更好的性能和稳定性。 丰富的功能:特别是Pro版本,支持快照、多级别快照、克隆虚拟机等高级功能。
商业支持:有商业支持选项,适合企业用户。
缺点:
费用:Workstation Player是免费的,但功能有限。Workstation
Pro是收费软件。 复杂性:功能强大,但可能对初学者来说稍微复杂一些。

大家可以自行选择虚拟机安装

下载Ubuntu及安装

安装Ubuntu虚拟机
1、下载Ubuntu镜像:从Ubuntu官方页面https://ubuntu.com/download/desktop下载Ubuntu的ISO镜像。
2、安装虚拟机软件:例如,VirtualBox或VMware。
3、创建新虚拟机: 打开虚拟机软件,选择“新建虚拟机”。
选择Linux操作系统,并选择Ubuntu。 分配适当的内存(至少2GB)。 创建一个新的虚拟硬盘(至少20GB)。
4、安装Ubuntu:
启动虚拟机,选择刚才下载的ISO镜像。 按照屏幕上的提示完成Ubuntu的安装。

这块没什么坑,安装也比较傻瓜式安装,所以就粗略过,有没安装过虚拟机的小伙伴不熟悉这块遇到什么问题可以留言。

在Ubuntu系统内安装必要的环境如mysql、jdk、tomcat、ssh

1. 安装MySQL

1、更新包列表并安装MySQL服务器:

sudo apt update
sudo apt install mysql-server

2、安装完成后,运行MySQL安全脚本:

sudo mysql_secure_installation

3、启动MySQL服务并设置开机启动:

sudo systemctl start mysql
sudo systemctl enable mysql

4、登录MySQL并创建数据库和用户:

sudo mysql -u root -p
CREATE DATABASE my_database;
CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

注意:这块有个坑,自MySQL
8.0以来,默认的安装过程已经简化了很多安全设置步骤。如果需要手动设置root密码和进行其他安全配置,可以使用MySQL命令行。

手动设置MySQL root密码和进行安全配置
1.启动MySQL服务(如果未启动):

sudo systemctl start mysql

2.登录MySQL:
使用以下命令以root身份登录MySQL(如果未设置密码,可以直接回车):

sudo mysql -u root

3.设置root用户密码:
在MySQL命令行中,执行以下命令来设置root用户密码(替换your_new_password为你想设置的密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;

4.移除匿名用户:

DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

5.禁止root用户远程登录:

UPDATE mysql.user SET Host='localhost' WHERE User='root' AND Host='%';
FLUSH PRIVILEGES;

这块建议不要禁止

6.移除测试数据库:

DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;

7.退出MySQL:

EXIT;

2. 安装JDK

1.安装OpenJDK 11(或你需要的JDK版本):

sudo apt update
sudo apt install openjdk-11-jdk

2.验证JDK安装:

java -version

3.安装Tomcat

1.下载并安装Tomcat:

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.60/bin/apache-tomcat-9.0.60.tar.gz
tar xzf apache-tomcat-9.0.60.tar.gz
sudo mv apache-tomcat-9.0.60 /opt/tomcat

这块地址可以自行去tomcat官网查看,因为这个地址不能确保你们安装时该地址还存在。
2.配置Tomcat环境变量:
编辑~/.bashrc文件,添加以下行:

export CATALINA_HOME=/opt/tomcat

修改文件可能会遇到权限问题
要修改.bashrc文件的权限问题,你需要确保当前用户对其具有写权限。
1.检查文件权限:在终端中运行以下命令查看文件权限:ls -l /home/username/.bashrc
2.如果权限不正确,请更改权限:如果文件权限不正确,可能需要使用chmod命令来更改文件权限,或者使用chown命令来更改文件所有者:
确保文件属于当前用户:sudo chown username:username/home/username/.bashrc
确保当前用户对文件有写权限:chmod u+w /home/username/.bashrc
3.编辑.bashrc文件:使用文本编辑器(如nano或vim)打开并编辑.bashrc文件:nano /home/username/.bashrc
4.使更改生效:
运行以下命令使更改生效:source ~/.bashrc

注意: username 改为你电脑的用户名

通过以上步骤,你应该能够成功设置MySQL root用户密码并修改.bashrc文件。

3.启动Tomcat:

$CATALINA_HOME/bin/startup.sh

4.访问Tomcat管理界面:
在浏览器中打开 http://localhost:8080 查看Tomcat是否成功启动。
可以通过下方指令查看本机ip

ip addr show

你会看到类似以下的输出:

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 08:00:27:4c:19:0c brd ff:ff:ff:ff:ff:ffinet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s3valid_lft 86338sec preferred_lft 86338secinet6 fe80::a00:27ff:fe4c:190c/64 scope link valid_lft forever preferred_lft forever

在上面的输出中,inet 192.168.1.100/24 表示你的IP地址是 192.168.1.100。

然后在你本地电脑通过ip来访问,如:http://192.168.1.100:8080如果访问到说明tomcat已经部署成功。

4. 部署Spring Boot + MyBatis项目

1.打包Spring Boot项目为WAR文件:
在Spring Boot项目根目录下运行:

./mvnw clean package

在target目录下会生成一个WAR文件(假设为myapp.war)。
2.部署WAR文件到Tomcat:
将生成的WAR文件复制到Tomcat的webapps目录:

sudo cp target/myapp.war /opt/tomcat/webapps/

3.重启Tomcat:

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

4.访问部署的应用:

在浏览器中打开 http://localhost:8080/myapp 查看Spring Boot应用是否成功启动。

外网访问localhost可以改为ubuntu服务ip地址

将你项目打包好的war包部署到tomcat

可以通过命令行部署或者通过文件管理工具FileZilla连接ubuntu服务器部署
将你的war包上传到tomcat目录下的webapps目录
上面已经有命令行的方式,通过FileZilla的方式有空再补充上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#实现高斯模糊(图像处理)

在C#中实现高斯模糊&#xff0c;可以使用System.Drawing库。高斯模糊是一种基于高斯函数的滤波器&#xff0c;它可以有效地平滑图像。以下是详细的步骤&#xff0c;包括生成高斯核并应用到图像上的代码示例。 1. 生成高斯核 首先&#xff0c;我们需要编写一个方法来生成高斯核…

bert文本分类微调笔记

Bert实现文本分类微调Demo import random from collections import namedtuple 有四种文本需要做分类&#xff0c;请使用bert处理这个分类问题 # 使用namedtuple定义一个类别(Category)&#xff0c;包含两个字段&#xff1a;名称(name)和样例(samples) Category namedtuple(Ca…

Java 和 Kotlin 单例模式写法对比

目录 1、饿汉模式 Java 写法&#xff1a; Kotlin 写法&#xff1a; Kotlin 这段代码反编译&简化后如下&#xff1a; 2、懒汉模式&#xff0c;静态同步方法 Java 写法&#xff1a; Kotlin 写法&#xff1a; Kotlin 这段代码反编译&简化后如下&#xff1a; 3、懒…

Node.js 渲染三维模型并导出为图片

Node.js 渲染三维模型并导出为图片 1. 前言 本文将介绍如何在 Node.js 中使用 Three.js 进行 3D 模型渲染。通过结合 gl 和 canvas 这两个主要依赖库&#xff0c;我们能够在服务器端实现高效的 3D 渲染。这个方法解决了在服务器端生成和处理 3D 图形的需求&#xff0c;使得可…

【mysql】常用操作:维护用户/开启远程/忘记密码/常用命令

一、维护用户 1.1 创建用户 -- 语法 > CREATE USER [username][host] IDENTIFIED BY [password];-- 例子&#xff1a; -- 添加用户user007&#xff0c;密码123456&#xff0c;并且只能在本地可以登录 > CREATE USER user007localhost IDENTIFIED BY 123456; -- 添加用户…

一文搞懂Linux信号【下】

目录 &#x1f6a9;引言 &#x1f6a9;阻塞信号 &#x1f6a9;信号保存 &#x1f6a9;信号捕捉 &#x1f6a9;操作信号集 1.信号集操作函数 2.其它操作函数 &#x1f6a9;总结&#xff1a; &#x1f6a9;引言 在观看本博客之前&#xff0c;建议大家先看一文搞懂Linux信…

Mysql 分表存储、多段存储

分表存储 分表存储是一种常用的数据库优化技术&#xff0c;特别是当单一表中的数据量非常大时。分表可以帮助提高查询性能、简化数据管理&#xff0c;并优化备份过程。以下是分表存储的一些常见策略和步骤&#xff1a; 1. 选择分表策略 分表可以基于多种策略&#xff0c;常见…

大火《与凤行》演员片酬曝光!网友:难以置信......

近日&#xff0c;大火的《与凤行》演员片酬被网友曝光&#xff1a;女主赵丽颖2000万&#xff0c;男主林更新1200万&#xff0c;而最让人意外的则是辣目洋子&#xff0c;个人片酬高达800万&#xff0c;但是其在剧中戏份比较低&#xff0c;不少网友感叹&#xff1a;难以置信&…

Star、Star求Star

本章是介绍博主自己的一个小工具的。使用的PythonPyQt5开发的。顺带来求一波star&#x1f31f;&#x1f31f;&#xff01;&#xff01;&#xff01; 地址&#xff1a;https://gitee.com/qinganan_admin/PyCom Pycom是博主开发的串口工具&#xff0c;要是说对比其他串口工具&…

IOS Swift 从入门到精通: 可选项、展开和类型转换

文章目录 处理缺失数据展开可选值用保护装置解开强制展开隐式解包可选值零合并可选链式调用可选尝试可失败的初始化器类型转换总结 处理缺失数据 我们已经使用诸如 之类的类型Int来保存像 5 这样的值。但是如果您想存储age用户的属性&#xff0c;如果您不知道某人的年龄&#…

第8章:系统质量属性与架构评估

软件系统属性包括功能属性和质量属性&#xff0c;软件架构重点关注的是质量属性。架构的基本需求是在满足功能属性的前提下&#xff0c;关注软件系统质量属性。为了精确、定量地表达系统的质量属性&#xff0c;通常会采用质量属性场景的方式进行描述。   在确定软件系统架构&…

OpenGL3.3_C++_Windows(15)

理解glad&#xff1a; OpenGL只是一个标准/规范&#xff0c;具体的实现是由驱动开发商针对特定显卡实现的&#xff0c;由于OpenGL驱动版本众多&#xff0c;它大多数函数的位置都无法在编译时确定下来&#xff0c;需要在运行时查询&#xff0c;因此开发者需要在运行时获取函数…

Flutter GetX 状态管理 响应式编程(三)

在2021年4月初&#xff0c;我们在应用开发中大量使用了 GetX&#xff0c;目前看来效果还不错&#xff0c;于是我最近也出了一套GetX的从入门到源码原理的分析教程&#xff0c;欢迎大家关注更新。 【1 GetX 基本使用路由管理】【2 GetX 使用入门 程序计数器】 第一步 使用 GetM…

可灵王炸更新,图生视频、视频续写,最长可达3分钟!Runway 不香了 ...

现在视频大模型有多卷&#xff1f; Runway 刚在6月17号 发布Gen3 &#xff0c;坐上王座没几天&#xff1b; 可灵就在6月21日中午&#xff0c;重新夺回了王座&#xff01;发布了图生视频功能&#xff0c;视频续写功能&#xff01; 一张图概括&#xff1a; 二师兄和团队老师第一…

实施高效冷却技术:确保滚珠丝杆稳定运行!

滚珠丝杆在运行过程中&#xff0c;由于摩擦、惯性力等因素&#xff0c;会产生一定的热量&#xff0c;当热量无法及时散发时&#xff0c;滚珠丝杆的温度就会升高&#xff0c;会直接影响滚珠丝杆的精度和稳定性&#xff0c;从而影响最终的产品质量。为了让滚珠丝杆保持应有的精度…

Redis源码学习:ziplist的数据结构和连锁更新问题

ziplist ziplist 是 Redis 中一种紧凑型的列表结构&#xff0c;专门用来存储元素数量少且每个元素较小的数据。它是一个双端链表&#xff0c; 可以在任意一端进行压入/弹出操作&#xff0c;并且该操作的时间复杂度为O(1)。 ziplist数据结构 <zlbytes><zltail>&l…

Linux基础指令(三)

目录 shell 权限指令&#xff1a; 文件的操作权限&#xff1a; 对文件进行操作的用户分类&#xff1a; 用户对文件进行的操作分类&#xff1a; 所有者、所属组、其他的访问权限&#xff1a; 创建用户 沾滞位 匹配查找指令&#xff1a; grep find shell shell&#x…

Ubuntu22.04开机后发现IP地址变成127.0.0.1

开机就是这个样子 解决办法 ip地址可能被释放&#xff0c;需要重新设置成自动分配 sudo dhclient -v可能网卡未加托管 查看方式: nmcli n若是enable就是已被托管,若是disabled&#xff0c;说明网卡未被托管 解决办法: nmcli n on搞定

DataWhale - 吃瓜教程学习笔记(二)

学习视频&#xff1a;第3章-一元线性回归_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 3.1 - 3.2 一元线性回归 - 最小二乘法 - 极大似然估计 - 梯度 多元函数的一阶导数 - 海塞矩阵 多元函数的二阶导数 - 机器学习三要素

软件介绍—Fluent Reader (RSS阅读器)

软件介绍—Fluent Reader &#xff08;RSS阅读器&#xff09; 01 RSS介绍 RSS可翻译为简易信息聚合&#xff08;也叫聚合内容&#xff09;是一种基于XML的标准&#xff0c;在互联网上被广泛采用的内容包装和投递协议。简单来讲&#xff0c;就是可以“订阅”一些网站新发布的内…