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

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...