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

使用linux部署项目步骤

文章目录

  • 前言
  • 一、服务器环境配置
  • 二、数据库导入
  • 三、项目打包
    • 1、修改项目中的访问路径
    • 2、修改db.properties的数据库访问路径
    • 3、打包
    • 4、修改配置,启动服务
  • 四、测试
  • 总结


前言

今天学习了在服务器中部署项目,记录一下


一、服务器环境配置

  1. 首先要安装VMware,网上有很多教程,此处不再赘述。我使用的是14pro

  2. 在虚拟机中使用CentOs7的镜像新建一个计算机。这个计算机作为我们项目上线的服务器使用
    在这里插入图片描述
    这里建议使用ip地址命名这个服务器,方便我们后期使用,具体的安装步骤和下载镜像等,不再赘述

  3. 安装FinalShell,它是一个工具,可以让我们链接远程数据库,对其进行操作。安装步骤不再赘述。
    在这里插入图片描述
    安装完成之后,链接我们的服务器如下
    在这里插入图片描述
    在这里插入图片描述

  4. 将适用于linux的jdk1.8压缩包,和Tomcat安装包通过FinalShell传入服务器的root目录
    在这里插入图片描述

  5. 删除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找不到则卸载成功

  1. 将压缩包解压到usr/local目录下
[root@localhost ~]# tar  -zxvf  jdk-8u151-linux-x64.tar.gz  -C  /usr/local
  1. 配置环境变量,输入以下命令:
[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检测是否成功

  1. 如果不行,需要刷新资源,或者重启虚拟机,刷新资源的配置如下:
[root@localhost ~]# source /etc/profile
  1. 安装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
  1. 安装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、修改配置&#xff0c;启动服务四、测试总结前言 今天学习了在服务器中部署项目&#xff0c;记录一下 一、服务器环境配置 首先要安装VMware&…...

pt02-list-tuple-dir

容器类型 通用操作 数学运算符 (1) 用于拼接两个容器 (2) 用原容器与右侧容器拼接,并重新绑定变量 (3) * 重复生成容器元素 (4) * 用原容器生成重复元素, 并重新绑定变量 (5) !&#xff1a;依次比较两个容器中元素,一但不同则返回比较结果。< < > > 意…...

高端电器新十年,求解「竞速突围」

竞争激烈的高端电器品牌们&#xff0c;平时王不见王&#xff0c;但也有例外。海尔、博西、海信、创维、方太、老板等等近乎中国电器行业所有一线品牌副总裁级别以上高层&#xff0c;2月22日都现身于上海&#xff0c;来参加一场由红星美凯龙攒起来的高端电器局&#xff0c;2023中…...

[Android Studio] Android Studio使用keytool工具读取Debug 调试版数字证书以及release 发布版数字证书

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f4cb;笔记目…...

2023年金三银四必备软件测试常见面试题1500问!!!【测试思维篇】

五、测试思维5.1 打电话功能怎么去测&#xff1f;我们会从几个方面去测试&#xff1a;界面、功能、兼容性、易用性、安全、性能、异常。1&#xff09;界面我们会测试下是否跟界面原型图一致&#xff0c;考虑浏览器不同显示比例&#xff0c;屏幕分辨率。2&#xff09;功能&#…...

推荐四款自用的电脑神器

作为一个经常鼓捣电脑的小编来说&#xff0c;无论是写文章、截图、办公方面都缺少不了一些好用的软件&#xff0c;今天就给大家盘点一些我推荐用的办公效率工具&#xff0c;让你的效率事半功倍。 写文章神器 以前写文章一直是在公众号编辑上直接写的&#xff0c;缺点就是格式有…...

CSDN 竞赛 32 期

CSDN 竞赛 32 期1、题目名称&#xff1a;传奇霸业2、题目名称&#xff1a;严查枪火3、题目名称&#xff1a;蚂蚁家族4、题目名称&#xff1a;运输石油小结1、题目名称&#xff1a;传奇霸业 传奇霸业&#xff0c;是兄弟就来干。 小春(HP a)遇到了一只黄金哥布林(HP x)。 小春每…...

【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼

在springboot maven项目中&#xff0c;有两种打包方式&#xff0c;一种是war包&#xff0c;一种是jar&#xff0c;今天我们讲一下jar的打包方式。但是在jar包打包只要我们发现&#xff0c;我们的项目jar太大了&#xff0c;每次上传到服务器的时候非常的慢&#xff0c;接下来我们…...

Spring之AOP理解及使用

文章目录AOP是什么AOPSpring的通知类型1.Before通知2. AfterReturning通知3.AfterThrowing通知4. After通知5. Around通知动态代理JDK动态代理CGLib动态代理动态代理的代码展示AOP使用切面类的配置最后大家好&#xff0c;我是Leo&#xff01;今天给大家带来的是关于Spring AOP的…...

微信小程序和webview使用postMessage交互

小程序和webview能交互&#xff0c;但是没有你想的那个完美小程序向webview传递参数只能使用url携带参数webview向小程序传递参数可以使用postMessage, 但是注意了&#xff0c;postMessage只会在特定的时机执行&#xff0c;请看官方文档由此可见&#xff0c;如果你想点击webvie…...

pytorch-自动求导机制,构建计算图进行反向传播,需要注意inplace操作导致的报错,梯度属性变化

PyTorch 作为一个深度学习平台&#xff0c;在深度学习任务中比 NumPy 这个科学计算库强在哪里呢&#xff1f;一是 PyTorch 提供了自动求导机制&#xff0c;二是对 GPU 的支持。由此可见&#xff0c;自动求导 (autograd) 是 PyTorch&#xff0c;乃至其他大部分深度学习框架中的重…...

【Project】项目管理软件学习笔记

一、前言使用Project制定项目计划步骤大致如下&#xff1a;以Project2013为例&#xff0c;按照上图步骤指定项目计划。二、实施2.1 创建空白项目点击文件——新建——空白项目&#xff0c;即完成了空白项目的创建&#xff0c;在此我把该项目保存为60mm项目管理.mpp&#xff0c;…...

【算法设计-分治思想】快速幂与龟速乘

文章目录1. 快速幂2. 龟速乘3. 快速幂取模4. 龟速乘取模5. 快速幂取模优化1. 快速幂 算法原理&#xff1a; 计算 311&#xff1a; 311 (35)2 x 335 (32)2 x 332 3 x 3仅需计算 3 次&#xff0c;而非 11 次 计算 310&#xff1a; 310 (35)235 (32)2 x 332 3 x 3仅需计算…...

Kafka(十一) 如何保证数据的不重复和不丢失

数据不丢失 1&#xff09;从生产端&#xff1a;acks -1&#xff0c;&#xff08;ack应答机制&#xff09;从生产端到节点端&#xff0c;当所有isr集合里的节点备份完毕后返回成功&#xff1b; 2&#xff09;从节点端&#xff1a;每个partition至少需要一个isr节点&#xff0…...

解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题

我手上有一台树莓派 4B&#xff0c;使用官方镜像烧录器烧录老版本操作系统 buster (10) 时可以正常通过 Windows 远程桌面连接上&#xff0c;但换成最新的 bullseye (11) 系统后却无法正常连接远程桌面。 问题复现&#xff1a; 使用官方镜像烧录器烧录&#xff0c;配置用户名为…...

微信公众号历史作品定向采集

最近有遇到微信公众号历史作品采集的需求,这里做一下记录, 登录自己注册好的的微信公众号后台进入创作界面,点击右上角的引用: 弹出如下界面: 选择查找公众号文章,输入要查找的公众号: 回车: 同时就可以打开F12开始抓包,选择公众号点击进入: appmsg?action=li…...

Vue学习笔记(3)

3.1 计算属性和监视属性 3.1.1 计算属性 计算属性是一种计算值的方式&#xff0c;可以根据其他属性的值来动态地计算新的属性值。计算属性可以缓存计算结果&#xff0c;当依赖的属性发生改变时&#xff0c;才会重新计算。在Vue中&#xff0c;可以使用computed选项来定义计算属…...

Marshmallow 库

文章目录Marshmallow 库介绍使用序列化反序列化参数介绍schema参数fields 参数钩子函数内置验证器Meta 属性Marshmallow 库 介绍 marshmallow是一个用来将复杂的orm对象与python原生数据类型之间相互转换的库&#xff0c;简而言之&#xff0c;就是实现object -> dict&#…...

【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?

前言&#xff1a;15年Google提出Batch Normalization&#xff0c;成为深度学习最成功的设计之一&#xff0c;18年MIT团队将原论文中提出的BN层的作用进行了一一反驳&#xff0c;重新揭示BN层的意义 2015年Google团队论文&#xff1a;【here】 2018年MIT团队论文&#xff1a;【h…...

re.sub()用法的详细介绍

一、前言 在字符串数据处理的过程中&#xff0c;正则表达式是我们经常使用到的&#xff0c;python中使用的则是re模块。下面会通过实际案例介绍 re.sub() 的详细用法&#xff0c;该函数主要用于替换字符串中的匹配项。 二、函数原型 首先从源代码来看一下该函数原型&#xf…...

【Python数据挖掘入门】2.2文本分析-中文分词(jieba库cut方法/自定义词典load_userdict/语料库分词)

中文分词就是将一个汉字序列切分成一个一个单独的词。例如&#xff1a; 另外还有停用词的概念&#xff0c;停用词是指在数据处理时&#xff0c;需要过滤掉的某些字或词。 一、jieba库 安装过程见&#xff1a;https://blog.csdn.net/momomuabc/article/details/128198306 ji…...

Meta利用视觉信息来优化3D音频模型,未来将用于AR/VR

我们知道&#xff0c;Meta为了给AR眼镜打造智能助手&#xff0c;专门开发了第一人称视觉模型和数据集。与此同时&#xff0c;该公司也在探索一种将视觉和语音融合的AI感知方案。相比于单纯的语音助手&#xff0c;同时结合视觉和声音数据来感知环境&#xff0c;可进一步增强智能…...

openlayers加载离线地图并实现深色地图

问题背景 我们自己一直使用的openlayergeoserver自己发布的地图&#xff0c;使用的是矢量地图。但是由于政府地图大都使用为天地图&#xff0c;所以需要将geoserver的矢量地图更改为天地图&#xff0c;并且依旧是搭配openlayers来使用。 解决步骤 一&#xff1a;加载离线地图&a…...

socket,tcp,http三者之间的区别和原理

目录 一、OSI模型也称七层网络模型 1、TCP/IP连接 1.1三次握手与四次挥手的简单理解&#xff1a;&#xff08;面试重点&#xff09; 1.2面试考题&#xff1a;如果已经建立了连接&#xff0c;但是客户端突然出现故障了怎么办&#xff1f; 1.3 socket、tcp、http三者之间有什…...

红日(vulnstack)1 内网渗透ATTCK实战

环境准备 靶机链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;sx22 攻击机系统&#xff1a;kali linux 2022.03 网络配置&#xff1a; win7配置&#xff1a; kali配置&#xff1a; kali 192.168.1.108 192.168.111.129 桥接一块&#xff0c;自定义网卡4 win7 1…...

ik 分词器怎么调用缓存的词库

IK 分词器是一个基于 Java 实现的中文分词器&#xff0c;它支持在分词时调用缓存的词库。 要使用 IK 分词器调用缓存的词库&#xff0c;你需要完成以下步骤&#xff1a; 创建 IK 分词器实例 首先&#xff0c;你需要创建一个 IK 分词器的实例。可以通过以下代码创建一个 IK 分…...

ROS1/2机器人操作系统与时间Time的不解之缘

时间对于机器人操作系统非常重要。所有机器人类的编程中所涉及的变量如果需要在网络中传输都需要这个数据结构的时间戳。宏观上&#xff0c;ROS1、ROS2各版本都有官方支持的时间节点。ROS时钟--支持时间倒计时小工具效果如下&#xff1a;如果要部署机器人操作系统&#xff0c;R…...

华为OD机试真题2022(JAVA)

华为机试题库已换 →→→ 华为OD机试2023&#xff08;JAVA&#xff09; 以下题目为旧版题库&#xff0c;供大家课外消遣 基础题&#xff1a; 序号题目分值1查找众数及中位数1002出错的或电路1003连续字母长度1004分班1005计算面积1006最远足迹1007判断一组不等式是否满足约束…...

【3】MyBatis+Spring+SpringMVC+SSM整合一套通关

三、SpringMVC 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体…...

商业网站建设的方法/百度引流推广哪家好

摘要: css清除浮动float的三种方法总结&#xff0c;为什么清浮动&#xff1f;浮动会有那些影响&#xff1f;一、抛一块问题砖&#xff08;display&#xff1a; block&#xff09;先看现象&#xff1a; 分析HTML代码结构&#xff1a; <div class"outer"> &l…...

公司建设网站费用直接列支/百度广告一天多少钱

剑指 Offer 一书中说到&#xff1a; 1、递归有固有的局限性&#xff0c;如果二叉树的深度太大&#xff0c;可能会栈溢出 2、递归的代码太简单&#xff0c;面试的时候希望增加难度 这里手写一个中序遍历&#xff0c;定义节点如下&#xff1a; class TreeNode {int val;TreeNod…...

专业上海网站建设公司/chrome浏览器

本文使用js实现了一个简单的加、减、乘、除计算器。 以下是css部分代码&#xff1a; *{padding:0;margin:0;color: #424242; }.outer{width:300px;height:auto;outline:1px solid #b9b9b9;margin:50px auto;background: pink; }.title{height:40px;width:100%;border-bottom:1p…...

wordpress上显示pdf/郑州seo顾问外包公司

js 如何校验手机号码呢? 手机号有如下规则: (1)必须全为数字; (2)必须是11位.(有人说还有10位的手机号,这里先不考虑); (3)必须以1开头(有人见过以2开头的手机号吗?) (4)第2位是34578中的一个. js方法如下: Js代码 /*** * check mobile phone:(1)must be digit;(2)must be …...

微信销售小程序/长沙seo推广优化

点击上方【牵引小哥讲Python】&#xff0c;关注回复【资源】领取学习资源&#xff01;原创作者&#xff1a;牵引小哥微信公众号&#xff1a;牵引小哥讲Python注&#xff1a;转载或复制请注明出处——牵引小哥之前小哥已经讲解了Matplotlib和Seaborn两种绘图库。相较于Matplotli…...

wordpress 清除/郑州网站营销推广

定义&#xff1a;定义一系列算法&#xff0c;将它们一个个封装起来&#xff0c;并且使他们之间可以相互替换。本模式使得算法可以独立于使用它的客户而变化。 类型&#xff1a;对象行为型模式 类图&#xff1a; 策略模式是对算法的封装&#xff0c;把一系列的算法分别封装到对应…...