JAVA项目在服务器部署过程
一、本地打包上传服务器后部署
推荐第一种
springboot项目中手动打包
打包依赖
<parent><artifactId>spring-boot-dependencies</artifactId><groupId>org.springframework.boot</groupId><version>2.3.3.RELEASE</version></parent>
他包含了
<!--将应用打包成一个可以执行的jar包--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
但建议还是自己写一个 build 标签
build详细配置参考文章https://www.cnblogs.com/whx7762/p/7911890.html
<!--将应用打包成一个可以执行的jar包--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
打包
jar包位置
用winSCP上传到服务器/data/tmp文件里
启动项目:把jar复制到程序目录,通过java命令行的方式启动jar包文件。因为本项目是使用了spring boot框架,所以jar中内置了web容器,不需要额外安装tomcat了。mkdir -p /data/app/pro-stuleave-bootcd /data/tmpmv /data/tmp/pro-stuleave-boot-1.0.jar /data/app/pro-stuleave-boot/cd /data/app/pro-stuleave-bootnohup java -jar pro-stuleave-boot-1.0.jar &#如果出现:nohup: ignoring input and redirecting stderr to stdout
#意思是 :忽略输入并将输出附加到`nohup.out’
他在当前目录创建了一个nohup.out文件记录日志
直接回车
然后输
tail -300f nohup.out
程序就正常启动了也可以不执行nohup java -jar pro-stuleave-boot-1.0.jar &
执行这条命令
nohup java -jar kaoqin20210327.jar >nohup.out 2>&1 &
或者自定义日志文件位置
-------------------------------------------
#这种方法会把日志文件输入到你指定的文件中,没有则会自动创建。进程会在后台运行。
nohup java -jar pro-stuleave-boot-1.0.jar >temp.txt &#如果出现:nohup: ignoring input and redirecting stderr to stdout
#意思是 :忽略输入并将输出附加到`nohup.out’直接回车
然后输
#查看日志,验证项目是否成功运行。
tail -300f temp.txt
程序就正常启动了
启动成功后按Ctrl+c退出项目,项目也不会停止运行Linux运行jar包与停止命令
a、执行jar包的命令和在windows操作系统上是一样的,都是java -jar xxxx.jar。
b、后台运行,nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
#当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
#nohup java -jar pro-stuleave-boot-1.0.jarc、如果想杀掉运行中的jar程序,查看进程命令为:
ps aux|grep pro-stuleave-boot-1.0.jar将会看到此jar的进程信息
root 22337 0.5 18.1 3123956 347272 pts/1 Sl 16:48 0:11 java -jar pro-stuleave-boot-1.0.jar
root 22521 0.0 0.1 221592 2408 pts/2 S+ 17:26 0:00 grep --color=auto pro-stuleave-boot-1.0.jar其中22337则为此jar的pid,杀掉命令为
kill -9 22337启动项目重复上述操作
二、服务器使用git命令下拉项目并打包后部署过程
注意:maven中仍需要向上面一样的配置
1.从git仓库clone下来最新代码。
#创建git仓库目录,clone项目源代码
mkdir -p /data/gitee
cd /data/gitee
#git@gitee.com:y_project/RuoYi.git为自己项目的ssh
git clone git@gitee.com:y_project/RuoYi.git
2.在本地使用可视化数据库开发工具 Navicat 链接服务器MySQL。创建数据库并执行所需数据脚本.sql
3.修改项目中的配置文件,配置文件application.yml
#进入自己项目的resources文件夹下
cd /data/gitee/ ..... /src/main/resources/
#修改application.yml的项目启动端口号,该端口号必须在服务器安全组有配置,且不被使用
vim application.yaml
#修改application.yaml的数据源(MySQL、Redis等和自己在application配置的一些数据)
vim application.yml
server:port: 端口号spring:application:name: 项目名aop:auto: trueproxy-target-class: truedatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://服务器ip:3306/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=trueusername: password: druid:max-active: 300filters: statinitialSize: 2maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: falsemaxPoolPreparedStatementPerConnectionSize: 200redis:# Redis数据库索引(默认为0)database: 0# Redis服务器地址host: # Redis服务器连接端口port: 6379# Redis服务器连接密码password: lettuce:pool:# 连接池最大连接数(使用负值表示没有限制) 默认 8# 这里要参考Redis服务器的最大连接配置maxActive: 100# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1maxWait: 3000# 连接池中的最大空闲连接 默认 8maxIdle: 1# 连接池中的最小空闲连接 默认 0minIdle: 1mybatis:mapper-locations: classpath:mapper/**/*.xmltype-aliases-package: run.leave.mappermanagement:endpoints:web:exposure:include: '*'
4.修改好项目的配置文件之后,把入口项目进行打包。通过mvn打包成一个可执行的jar包。
cd /data/gitee/RuoYi-Vue/
mvn clean install -pl com.ruoyi:ruoyi-admin -am
5.启动项目:把jar复制到程序目录,通过java命令行的方式启动jar包文件。因为本项目是使用了spring boot框架,所以jar中内置了web容器,不需要额外安装tomcat了。
mkdir -p /data/app/ruoyi-vue
cp /data/gitee/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar /data/app/ruoyi-vue/ruoyi-admin.jar
cd /data/app/ruoyi-vue/
nohup java -jar ruoyi-admin.jar &
#nohup和&用来表示本命令需要在后台执行,这样退出命令行程序后,java程序也不会停止。
出现这种按回车或者Ctrl+c
输入
#查看日志,验证项目是否成功运行。
tail -300f nohub.out
就正常启动项目了
启动成功后按Ctrl+c退出项目,项目也不会停止运行
如果想杀掉运行中的jar程序,查看进程命令为:
ps aux|grep pro-stuleave-boot-1.0.jar将会看到此jar的进程信息
root 22337 0.5 18.1 3123956 347272 pts/1 Sl 16:48 0:11 java -jar pro-stuleave-boot-1.0.jar
root 22521 0.0 0.1 221592 2408 pts/2 S+ 17:26 0:00 grep --color=auto pro-stuleave-boot-1.0.jar其中22337则为此jar的pid,杀掉命令为
kill -9 22337启动项目重复上述操作
笔记资源
链接:https://pan.baidu.com/s/1MQQGnCJr3XPhMviS96u0mQ
提取码:3wls
参考文档
https://mp.weixin.qq.com/s/FqfGbYRvhiTU7q0aB1d2EA
https://mp.weixin.qq.com/s?__biz=Mzg2ODU0NTA2Mw==&mid=2247484347&idx=1&sn=087b67ecbd0896146f4787dfe55d52be&source=41#wechat_redirect
JAVA项目在服务器部署过程相关推荐
- 前后端分离项目的服务器部署
https://www.jianshu.com/p/cbb21c6f3427 前几天我的个人网站终于部署上线了,趁现在还记得,赶紧把流程记录下来.本文讲的是前后端分离的项目的服务器部署,这里就以我的个 ...
- vue项目nginx服务器部署详细流程....
vue项目nginx服务器部署 (1)前言 将自己做的vue项目部署到服务器上,这里我采用的工具是Nginx,Nginx是一款轻量级的web服务器.反向代理服务器,由于它的内存占用小,启动快,高并发能 ...
- android studio编写java项目,并部署到Tomcat服务器
事件回顾:公司需求要自己实现一个即时通讯替换掉现在的第三方即时通讯.于是各种查阅资料,百度之后实现了一个简单的demo(由于本篇不是关于即时通讯的所以就不贴代码了),服务端代码能正常的在本地运行(在a ...
- 仿网易云项目前端服务器部署+Nodejs部署
做了几天的仿网易云移动端项目,做出来了不知道怎么部署上线?搞了好久!!!!记录一下! 1.首先(优化 + 检查)项目 1.1 vue.config.js种配置: 安装 npm i compressio ...
- VSCode搭建Vue项目及服务器部署
一.安装nodeJs 在我之前的博客<idea搭建vue-cli项目>里有详细安装教程,这里进入! 二.在VSCode搭建Vue项目 1.安装全局脚手架 npm i -g @vue/cli ...
- 自动部署java项目,热部署方式
大部分内容转自:https://www.cnblogs.com/hdwang/p/6081994.html 怎么创建项目不赘述了,不会的也不用往下看了,热部署不需要重启tomcat 说下安装插件 上述 ...
- java项目实现服务器监控,Java实现服务器状态监控
Java实现服务器状态监控 内容精选 换一换 云容器实例(Cloud Container Instance,CCI)服务提供 Serverless Container(无服务器容器)引擎,让您无需创建 ...
- 利用gitee仓库的流水线功能实现Java项目的自动化部署
背景:因为之前每次写完新的BUG之后,需要手动打包然后传到服务器,再进行启动,整个过程太浪费时间,而且没有一点技术含量,所以想做自动化部署. 本次自动化部署采用了gitee退出的仓库流水线功能,可以帮 ...
- JAVA 项目打包和部署一站式解决方案
文章目录 一.场景描述 二.打包方式 场景方式一:常规 MAVEN 零散项目打包部署方式 场景方式二:常规 MAVEN 集中项目打包部署方式 场景方式三:借助 spring-boot 插件进行打包部署 ...
- war包访问php,nginx - JAVA 项目WAR包部署的适用场景?
大家讲道理2017-06-17 09:19:111楼 实际经验: 我经手过的项目都是在weblogic上以目录的形式发布,目录结构: DOMAINS --域 └─domainA --域A └─apps ...
最新文章
- JAVA面试解析(有赞二面)
- 服务认证暴力破解工具Crowbar
- 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)
- 6.5版本虚拟机的封装
- 定期定量采购_采购的四种方法
- 学以致用十四-----打造一个简单的vim IDE
- python基础笔记_python基础笔记
- 38.MySQL 日志
- 视频教程-R语言数据分析挖掘实战-大数据
- android studio如何重启,从Android Studio重新启动ADB(Restart ADB from Android Studio)
- SPSS数据转换插件v2.0
- 基于单片机智能交通灯控制系统设计外文文献_三种典型的微机控制系统
- 软件工程专业学习路线
- 网吧管理系统mysql_网吧管理系统数据库课程设计.doc
- 计算机绘图cad期末考试试题,机械CAD/CAM期末考试复习资料[机械CAD/CAM]
- 2020-11-03 oracle sql根据身份证号来判断性别
- 产品读书《用户力:需求驱动的产品、运营与商业模式》
- iPhone4S 未能激活蜂窝移动数据网
- CentOS 7.6安装配置MariaDB异步主从复制
- Android主题换肤实现原理与Demo
热门文章
- 求职软件测试工程师英文简历,软件测试工程师英文简历范文
- 把网页整个保存为pdf
- VISIO 连接线转角居然默认不是直角,每次要改格式
- 解决mysql闪退问题
- 计算机在中医方剂中的应用,计算机中医应用(精).docx
- 跟大家分享一下牛人常用的资源(牛客网 )!
- 洛谷试炼场---提高历练地 普及练习场 新手村 入门难度
- 浅析EDA技术应用于电子设计竞赛的可行性
- axurerp9怎么生成html形式页面,Axure RP教程 Axure RP如何生成HTML文件
- imagej macro language tutorial(ImageJ 宏语言教程)