当前位置: 首页 > 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…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...