瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署
P20-Linux系统环境下项目部署
- 1.Linux系统环境软件安装
- 2.项目部署-手工部署项目(繁琐,效率低下)
- 2.1在IDEA中开发SpringBoot项目,并打包成jar包
- 2.2将jar包上传到Linux服务器
- 2.3启动springboot程序
- 2.4外部浏览器,访问,检查8080端口防火墙是否打开
- 2.5改为后台运行SpringBoot程序,并将日志输出到日志文件
- 2.6停止SpringBoot程序
- 3.项目部署-通过shell脚本自动部署项目
- 3.1操作步骤概述
- 3.2Step1-在Linux中安装安装git
- 3.3Step2-使用Git克隆代码
- 3.4Step3-在Linux中安装安装maven
- 3.5Step4-编写shell脚本
- 3.6Step5-为用户授予执行Shell脚本的权限
- 3.6.1权限概述
- 3.6.2为用户授权
- 3.7Step6-执行Shell脚本
- 3.8设置静态ip
1.Linux系统环境软件安装
需要安装jdk,mysql…软件,具体操作流程请参照Linux系统软件安装
2.项目部署-手工部署项目(繁琐,效率低下)
2.1在IDEA中开发SpringBoot项目,并打包成jar包
双击package,进行打包
打包成功
2.2将jar包上传到Linux服务器
创建目录,将项目jar包放到此目录
mkdir /usr/local/app
使用以下命令进行上传
rz
2.3启动springboot程序
java -jar HelloWorld-1.0-SNAPSHOT.jar
2.4外部浏览器,访问,检查8080端口防火墙是否打开
firewall-cmd --zone=public --list-ports
2.5改为后台运行SpringBoot程序,并将日志输出到日志文件
目前程序运行的问题
- 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup
命令:英文全称no hangup (不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg ..][&]
参数说明:
Command
:要执行的命令
Arg
:一.些参数,可以指定输出文件
&
:让命令在后台运行
举例:
后台运行java -jar命令,并将日志输出到hello.log文件
nohup java -jar boot工程.jar &> hello.log &nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &>hello.log &
2.6停止SpringBoot程序
ps -ef | grep java
使用以下命令杀死进程
kill -9 88835
再次查看,已被进程已结束
3.项目部署-通过shell脚本自动部署项目
3.1操作步骤概述
- 在Linux中安装Git
- 在Linux中安装mayen
- 编写Shell脚本(拉取代码、编译、打包、启动)
- 为用户授予执行Shell脚本的权限
- 执行Shell脚本
3.2Step1-在Linux中安装安装git
列出git安装包
yum list git
在线安装git
yum install git
3.3Step2-使用Git克隆代码
首先要配置公钥:
配置帐户和密码
git config --global user.name "Your gitee Name" git config --global user.email "email@example.com"
查看配置是否生效
git config --list
先在本地生成ssh key,生成公钥和私钥,后续在gitee中需要用到
ssh-keygen -t rsa -C "your_email@youremail.com"
确认路径按1次回车,提示:Enter passphrase(输入密码),不用输密码再按2次回车即可。生成的密钥存放路径 /root/.ssh/id_rsa
3、id_rsa:私钥 ,id_rsa.pub:公钥
cat /root/.ssh/id_rsa.pub
打开gitee 配置SSH即可
拉取代码
cd /usr/local/ git clone 代码链接
3.4Step3-在Linux中安装安装maven
将maven安装包上传到Linux,在Linux中安装maven
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
修改配置文件,加入如下内容
vim /etc/profile export MAVEN_HOME=/usr/local/apache-maven-3.5.4 export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH source /etc/profile mvn -version
修改配置文件内容如下
vim /usr/local/apache-maven-3.5.4/conf/settings.xml <localRepository>/usr/local/repo</localRepository>
3.5Step4-编写shell脚本
Shell脚本(shell script),是-种Linux系统中的脚本程序。
使用Shel脚本编程跟JavaScript. Java编程- 样, 只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
直接使用脚本文件bootStart.sh
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=HelloWorldtpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Stop Process...'kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/liunx-test
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成
注意:以下内容需要配置成自己的,更具画出的目录结构进行配置
- APP_NAME为
- echo 准备从Git仓库拉取最新代码
cd /usr/local/liunx-test - echo 启动项目
nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
3.6Step5-为用户授予执行Shell脚本的权限
3.6.1权限概述
chmod (英文全拼: change mode)命令是控制用户对文件的权限的命令
Linux中的权限分为:
- 读(r)
- 写(w)
- 执行(x)
Linux的文件调用权限分为三级:
- 文件所有者(Owner)
- 用户组(Group)
- 其它用户(Other Users )
只有文件的所有者和超级用户可以修改文件或目录的权限
ll
要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行
-r--r--r-- .1 root root 785 May 17 20:43 bootStart. sh
3.6.2为用户授权
chmod命令可以使用八进制数来指定权限
举例
chmod 777 bootStart.sh
为所有用户授予读、写、执行权限chmod 755 bootStart.sh
为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限chmod 210 bootStart.sh
为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
注意:三位数字分别代表不同用户的权限
- 第1位表示文件拥有者的权限
- 第2位表示同组用户的权限
- 第3位表示其他用户的权限
3.7Step6-执行Shell脚本
./bootStart.sh
3.8设置静态ip
这里是动态ip
修改文件(这个文件不同系统不一样)/etc/sysconfig/network-scripts/ifcfg-ens33
,内容如下:
TYPE="Ethernet"
PROXY_ METHOD="none"
BROWSER_ _ONLY="no"
BOOTPROTO= "static" #使用静态IP地址,默认为dhcp
IPADDR="192.168.112.100" #设置的静态IP地址 和自己虚拟机里的要一致,即上图框出来的
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.112.2" #网关地址
DNS1="192.168.112.2" # DNS服务器
DEFROUTE="yes"
IPV4_ FAILURE_ FATAL="no"
IPV6INIT="yes"
IPV6_ _AUTOCONF="yes"
IPV6_ DEFROUTE="yes"
IPV6_ _FAILURE_ _FATAL="no"
IPV6_ ADDR_ GEN_ MODE="stable-privacy"
NAME= "ens33"
UUID="95b614cd- 79b0- 4755- be8d-99f1cca7271b"
DEVICE="ens33"
ONBOOT= "yes" #是否开机启用
重启网络服务
systemctl restart network
重新建立一个连接
瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署相关推荐
- 【瑞吉外卖】学习笔记-day1:项目介绍及后台初识
项目介绍 本项目(瑞吉外卖)是专门为餐饮企业(餐厅.饭店)定制的一款软件产品,包括 系统管理后台 和 移动端应用 两部分.其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类.菜品.套餐. ...
- 【瑞吉外卖】学习笔记-day5:(三)手机验证码登录(用邮件发送代替)
短信发送: 短信服务介绍 目前市面上有很多第三方提供的短信服务,这些第三方短信服务会和各个运营商(移动.联通.电信)对接,我们只需要注册成为会员并且按照提供的开发文档进行调用就可以发送短信.需要说明的 ...
- 【瑞吉外卖】学习笔记-day6:(一)导入用户地址簿相关功能及菜品展示
导入用户地址簿相关功能: 需求分析: 地址簿,指的是移动端消费者用户的地址信息 用户登录成功后可以维护自己的地址信息 同一个用户可以有多个地址信息,但是只能有一个默认地址. 页面展示: 数据模型: ...
- 【瑞吉外卖】学习笔记-day5:(一)套餐管理开发——新增套餐、套餐分页查询、删除/起售/停售套餐
新增套餐: 需求分析: 套餐就是菜品的集合. 后台系统中可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并且需要上传套餐对应的图片,在移动 ...
- 【瑞吉外卖】学习笔记-day4:(三)菜品管理开发——菜品信息分页查询、修改菜品、停售起售菜品以及删除菜品
菜品信息分页查询: 需求分析: 系统中的菜品数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据. 其中,图片列和菜品分类列比较特殊.图 ...
- 达达博客项目-学习笔记,B站达内项目实战
前后端分离优点: 1.各司其职前端:视觉层面,兼容性,前端性能优化后端:高并发,高可用,性能 2.解耦,前端后端均易于扩展 3.后端灵活搭配各类前端 4.提高用户体验 5.并行开发,提高开发效率htt ...
- 将瑞吉外卖项目jar包部署在远程服务器并成功运行在pc和移动端
将瑞吉jar包部署在远程服务器并成功运行 前言 手动部署项目 Shell 脚本自动部署项目 前言 目前开始写初步部署,因为我是完全用jar包部署的,直接部署的.没有放在docker容器中,所以我先这样 ...
- 瑞吉外卖项目学习笔记01
项目背景 在开发瑞吉外卖这个项目之前,我们需要全方位的来介绍一下当前我们学习的这个项目.接下来,我们将从以下的五个方面, 来介绍瑞吉外卖这个项目. 项目介绍 本项目(瑞吉外卖)是专门为餐饮企业(餐厅. ...
- 瑞吉外卖项目学习笔记:P1-项目介绍
瑞吉外卖项目介绍 1.项目介绍 1.1开发步骤 1.2产品原型 1.3技术选型 1.4项目功能架构 1.5角色 1.项目介绍 1.1开发步骤 实现基本要求,移动端应用通过H5实现,用户可通过浏览器访问 ...
最新文章
- 深入理解Objective-C:Category
- 好文推荐 | MySQL binlog应用场景与原理深度剖析
- MATLAB中K-means函数表达方式
- 1.17.Flink 并行度详解(Parallel)、TaskManager与Slot、Operator Level、Execution Environment Level、Client Level等
- Android学习之SQLite
- 大数据学习——虚拟机准备(改主机名)
- 面试题59 - I. 滑动窗口的最大值/239. 滑动窗口最大值
- iterator adapter reverse_iterator
- HDU1066 Last non-zero Digit in N!【大数+模除】
- 转载:基于Redis实现分布式锁
- 计算机硬件故障有哪些现象,计算机常见硬件故障症状现象分析及解决办法
- vhdl变量除法_在VHDL中实现高精度快速除法
- Macsome Tidal Music Downloader for Mac(Tidal音乐下载器)
- iPhone开发基础
- 表格组件列属性formatter和styler使用方法
- C++ primer plus 第六版 第二章 编程练习答案
- 简单CRM系统开发(一)
- 好久没来,深夜来一发
- 徐磊语法 6 7 时态的正确定义
- python科赫曲线画树叶_Python——科赫曲线绘制