使用linux部署项目步骤
文章目录
- 前言
- 一、服务器环境配置
- 二、数据库导入
- 三、项目打包
- 1、修改项目中的访问路径
- 2、修改db.properties的数据库访问路径
- 3、打包
- 4、修改配置,启动服务
- 四、测试
- 总结
前言
今天学习了在服务器中部署项目,记录一下
一、服务器环境配置
-
首先要安装VMware,网上有很多教程,此处不再赘述。我使用的是14pro
-
在虚拟机中使用CentOs7的镜像新建一个计算机。这个计算机作为我们项目上线的服务器使用

这里建议使用ip地址命名这个服务器,方便我们后期使用,具体的安装步骤和下载镜像等,不再赘述 -
安装FinalShell,它是一个工具,可以让我们链接远程数据库,对其进行操作。安装步骤不再赘述。

安装完成之后,链接我们的服务器如下


-
将适用于linux的jdk1.8压缩包,和Tomcat安装包通过FinalShell传入服务器的root目录

-
删除linux自带的JDK和Tomcat命令如下:
[root@localhost 桌面]# rpm -qa | grep java 查看系统中默认安装的jdk[root@localhost 桌面]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64[root@localhost 桌面]# rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64[root@localhost 桌面]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64[root@localhost 桌面]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64[root@localhost 桌面]# java -version
bash: java: 未找到命令...
出现:java -version找不到则卸载成功
- 将压缩包解压到usr/local目录下
[root@localhost ~]# tar -zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local
- 配置环境变量,输入以下命令:
[root@localhost ~]# vim /etc/profile
先输入 i 字母进入编辑模式,然后在文件中输入以下内容
JAVA_HOME=/usr/local/jdk1.8.0_151
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
按esc键退出,输入 :wq 回到当前目录,输入java -version检测是否成功
- 如果不行,需要刷新资源,或者重启虚拟机,刷新资源的配置如下:
[root@localhost ~]# source /etc/profile
- 安装Tomcat,解压到 usr/local 目录下
[root@localhost ~]# tar -zxvf apache-tomcat-8.5.23.tar.gz -C /usr/local
关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
切换到tomcat的bin目录
[root@localhost ~]# cd /usr/local
[root@localhost local]# cd apache-tomcat-8.5.23/bin
启动tomcat
[root@localhost bin]# ./startup.sh
关闭tomcat
[root@localhost bin]# ./shutdown.sh
- 安装mysql
CentOS中默认安装的是MariaDB,安装完MySQL之后会覆盖MariaDB,由于安装MySQL需要添加很多依赖关系,所以这里使用yum安装.
- .下载MySQL源安装包
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
…
执行命令出现以下提示
2019-10-17 14:37:41 (230 KB/s) - 已保存 “mysql57-community-release-el7-10.noarch.rpm”
[25548/25548])
-c: 没有那个文件或目录
在 -c 中找不到 URL。
FINISHED --2019-10-17 14:37:41–
Total wall clock time: 7.4s
Downloaded: 1 files, 25K in 0.1s (230 KB/s)
- 安装MySQL源(如果无法安装,先执行该命令:rm -f /var/run/yum.pid)
[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
…
执行命令出现以下提示
Running transaction
正在安装 : mysql57-community-release-el7-10.noarch 1/1
验证中 : mysql57-community-release-el7-10.noarch 1/1
已安装:
mysql57-community-release.noarch 0:el7-10
完毕!
- 安装MySQL
[root@localhost ~]# yum install mysql-community-server --nogpgcheck
…
执行命令出现以下提示
作为依赖被安装:
mysql-community-client.x86_64 0:5.7.28-1.el7 mysql-community-common.x86_64 0:5.7.28-1.el7
作为依赖被升级:
openssl.x86_64 1:1.0.2k-19.el7 openssl-libs.x86_64 1:1.0.2k-19.el7
postfix.x86_64 2:2.10.1-7.el7
替代:
mariadb-libs.x86_64 1:5.5.52-1.el7
完毕!
- 启动MySQL
[root@localhost ~]# systemctl start mysqld.service
- 查看MySQL运行状态
[root@localhost ~]# systemctl status mysqld.service
执行命令出现以下提示
mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 四 2019-10-17 15:00:59 CST; 26s ago
- 设置MySQL自启动
[root@localhost ~]# systemctl enable mysqld
- 配置MySQL
[root@localhost ~]# vim /etc/my.cnf
- 在/etc/my.cnf的[mysqld]中增加如下内容:(建议添加到最后一行)
#不添加则在设置MySQL新密码时会错#用于设置MySQL的字符集#用于设置MySQL的远程连接validate_password=offcharacter_set_server=utf8skip-name-resolve
- 重新启动MySQL
[root@localhost ~]# systemctl restart mysqld.service
- 此时MySQL已经运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:
[root@localhost ~]# grep "password" /var/log/mysqld.log
执行命令出现以下提示:
2019-10-17T07:00:52.740835Z 1 [Note] A temporary password is generated for root@localhost: l0hN)kEXugYv
2019-10-17T07:14:54.867706Z 3 [Note] Access denied for user ‘root’@‘localhost’ (using password: YES)
- 登录MySQL
[root@localhost ~]# mysql -uroot -p
输入:l0hN)kEXugYv 进入到MySQL
- 输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
- 如果执行上面语句报错,则表示设置密码不成功,可能是由于密码级别过低,可以输入下面两个命令:
mysql> set global validate_password_policy=LOW; //设置mysql密码为最低级别mysql> set global validate_password_length=6; //设置密码长度(根据自己情况设置)
- 设置MySQL可以远程访问
mysql>grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;
此时可以使用我们的数据库客户端工具进行远程连接,如果连接不上,重启MySQL后再测试
- 测试成功后,退出MySQL
mysql> exit;Bye
- 卸载Yum Repository,否则每次yum操作都会自动更新
[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch
执行出现以下提示:
…
正在删除 : mysql57-community-release-el7-10.noarch 1/1
验证中 : mysql57-community-release-el7-10.noarch 1/1
删除:
mysql57-community-release.noarch 0:el7-10
完毕!
- 测试远程连接,连接未成功,需要再次关闭防火墙,重启MySQL
关闭防火墙:
[root@localhost ~]#systemctl stop firewalld.service
使用Navcat测试:

至此,服务器基本搭建完成
二、数据库导入
链接上服务器数据库之后,我们需要把windows系统的数据库,迁移到服务器数据库,将原有数据库导出转储sql文件,然后在服务器数据库新建查询,执行sql即可,此处略。
三、项目打包
只有打成war包,才能部署到服务器,但在打包之前,我们还需要一些步骤。
1、修改项目中的访问路径

所有有关localhost:8080的路径地址都需要修改,要么加上服务器ip,要么就以上图这种形式。
2、修改db.properties的数据库访问路径

此处换上服务器的ip和服务器mysql的数据库名
3、打包
先清除之前的编译文件,否则由于修改了部分配置,打包会报错

然后点击package等待打包完成

target目录下出现此文件,就是我们打好的包,然后将其传入服务器
4、修改配置,启动服务
将打好的war包,通过FinalShell导入到tomcat安装目录下的webapps问价夹下

此时Tomcat若是处于开启状态,那么会自动帮我们解压
由于我们打的jar包是自动生成的我们还需要修改一下conf文件夹中的server.xml配置,否则可能会出现运行项目出现问题。我们需要在host标签中,加入以下代码:
<Context path="" docBase="包名" reloadable="true"></Context>
修改完成后,切换到bin目录下,启动服务
启动tomcat
[root@localhost bin]# ./startup.sh
关闭tomcat
[root@localhost bin]# ./shutdown.sh
四、测试

输入信息

跳转首页

各项功能正常
总结
虚拟机搭服务器,目前大多被用来当作自测的一种解决方案,只允许本机访问,想外网访问的话,还是搭建云服务器更加方便
相关文章:
使用linux部署项目步骤
文章目录前言一、服务器环境配置二、数据库导入三、项目打包1、修改项目中的访问路径2、修改db.properties的数据库访问路径3、打包4、修改配置,启动服务四、测试总结前言 今天学习了在服务器中部署项目,记录一下 一、服务器环境配置 首先要安装VMware&…...
pt02-list-tuple-dir
容器类型 通用操作 数学运算符 (1) 用于拼接两个容器 (2) 用原容器与右侧容器拼接,并重新绑定变量 (3) * 重复生成容器元素 (4) * 用原容器生成重复元素, 并重新绑定变量 (5) !:依次比较两个容器中元素,一但不同则返回比较结果。< < > > 意…...
高端电器新十年,求解「竞速突围」
竞争激烈的高端电器品牌们,平时王不见王,但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层,2月22日都现身于上海,来参加一场由红星美凯龙攒起来的高端电器局,2023中…...
[Android Studio] Android Studio使用keytool工具读取Debug 调试版数字证书以及release 发布版数字证书
🟧🟨🟩🟦🟪 Android Debug🟧🟨🟩🟦🟪 Topic 发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 📋笔记目…...
2023年金三银四必备软件测试常见面试题1500问!!!【测试思维篇】
五、测试思维5.1 打电话功能怎么去测?我们会从几个方面去测试:界面、功能、兼容性、易用性、安全、性能、异常。1)界面我们会测试下是否跟界面原型图一致,考虑浏览器不同显示比例,屏幕分辨率。2)功能&#…...
推荐四款自用的电脑神器
作为一个经常鼓捣电脑的小编来说,无论是写文章、截图、办公方面都缺少不了一些好用的软件,今天就给大家盘点一些我推荐用的办公效率工具,让你的效率事半功倍。 写文章神器 以前写文章一直是在公众号编辑上直接写的,缺点就是格式有…...
CSDN 竞赛 32 期
CSDN 竞赛 32 期1、题目名称:传奇霸业2、题目名称:严查枪火3、题目名称:蚂蚁家族4、题目名称:运输石油小结1、题目名称:传奇霸业 传奇霸业,是兄弟就来干。 小春(HP a)遇到了一只黄金哥布林(HP x)。 小春每…...
【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼
在springboot maven项目中,有两种打包方式,一种是war包,一种是jar,今天我们讲一下jar的打包方式。但是在jar包打包只要我们发现,我们的项目jar太大了,每次上传到服务器的时候非常的慢,接下来我们…...
Spring之AOP理解及使用
文章目录AOP是什么AOPSpring的通知类型1.Before通知2. AfterReturning通知3.AfterThrowing通知4. After通知5. Around通知动态代理JDK动态代理CGLib动态代理动态代理的代码展示AOP使用切面类的配置最后大家好,我是Leo!今天给大家带来的是关于Spring AOP的…...
微信小程序和webview使用postMessage交互
小程序和webview能交互,但是没有你想的那个完美小程序向webview传递参数只能使用url携带参数webview向小程序传递参数可以使用postMessage, 但是注意了,postMessage只会在特定的时机执行,请看官方文档由此可见,如果你想点击webvie…...
pytorch-自动求导机制,构建计算图进行反向传播,需要注意inplace操作导致的报错,梯度属性变化
PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (autograd) 是 PyTorch,乃至其他大部分深度学习框架中的重…...
【Project】项目管理软件学习笔记
一、前言使用Project制定项目计划步骤大致如下:以Project2013为例,按照上图步骤指定项目计划。二、实施2.1 创建空白项目点击文件——新建——空白项目,即完成了空白项目的创建,在此我把该项目保存为60mm项目管理.mpp,…...
【算法设计-分治思想】快速幂与龟速乘
文章目录1. 快速幂2. 龟速乘3. 快速幂取模4. 龟速乘取模5. 快速幂取模优化1. 快速幂 算法原理: 计算 311: 311 (35)2 x 335 (32)2 x 332 3 x 3仅需计算 3 次,而非 11 次 计算 310: 310 (35)235 (32)2 x 332 3 x 3仅需计算…...
Kafka(十一) 如何保证数据的不重复和不丢失
数据不丢失 1)从生产端:acks -1,(ack应答机制)从生产端到节点端,当所有isr集合里的节点备份完毕后返回成功; 2)从节点端:每个partition至少需要一个isr节点࿰…...
解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题
我手上有一台树莓派 4B,使用官方镜像烧录器烧录老版本操作系统 buster (10) 时可以正常通过 Windows 远程桌面连接上,但换成最新的 bullseye (11) 系统后却无法正常连接远程桌面。 问题复现: 使用官方镜像烧录器烧录,配置用户名为…...
微信公众号历史作品定向采集
最近有遇到微信公众号历史作品采集的需求,这里做一下记录, 登录自己注册好的的微信公众号后台进入创作界面,点击右上角的引用: 弹出如下界面: 选择查找公众号文章,输入要查找的公众号: 回车: 同时就可以打开F12开始抓包,选择公众号点击进入: appmsg?action=li…...
Vue学习笔记(3)
3.1 计算属性和监视属性 3.1.1 计算属性 计算属性是一种计算值的方式,可以根据其他属性的值来动态地计算新的属性值。计算属性可以缓存计算结果,当依赖的属性发生改变时,才会重新计算。在Vue中,可以使用computed选项来定义计算属…...
Marshmallow 库
文章目录Marshmallow 库介绍使用序列化反序列化参数介绍schema参数fields 参数钩子函数内置验证器Meta 属性Marshmallow 库 介绍 marshmallow是一个用来将复杂的orm对象与python原生数据类型之间相互转换的库,简而言之,就是实现object -> dict&#…...
【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?
前言:15年Google提出Batch Normalization,成为深度学习最成功的设计之一,18年MIT团队将原论文中提出的BN层的作用进行了一一反驳,重新揭示BN层的意义 2015年Google团队论文:【here】 2018年MIT团队论文:【h…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
