瑞吉外卖项目学习笔记-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,进行打包
瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第1张图片打包成功
瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第2张图片

2.2将jar包上传到Linux服务器

创建目录,将项目jar包放到此目录

mkdir /usr/local/app  

使用以下命令进行上传

rz

瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第3张图片瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第4张图片

2.3启动springboot程序

java -jar HelloWorld-1.0-SNAPSHOT.jar

2.4外部浏览器,访问,检查8080端口防火墙是否打开

firewall-cmd --zone=public --list-ports

瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第5张图片

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

瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第6张图片

使用以下命令杀死进程

kill -9 88835

再次查看,已被进程已结束
在这里插入图片描述

3.项目部署-通过shell脚本自动部署项目

3.1操作步骤概述

瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第7张图片

  1. 在Linux中安装Git
  2. 在Linux中安装mayen
  3. 编写Shell脚本(拉取代码、编译、打包、启动)
  4. 为用户授予执行Shell脚本的权限
  5. 执行Shell脚本

3.2Step1-在Linux中安装安装git

列出git安装包

yum list git

在线安装git

yum install git

3.3Step2-使用Git克隆代码

首先要配置公钥:

  1. 配置帐户和密码

    git config --global user.name "Your gitee Name"
    git config --global user.email "[email protected]"
    
  2. 查看配置是否生效

    git config --list
    
  3. 先在本地生成ssh key,生成公钥和私钥,后续在gitee中需要用到

    ssh-keygen -t rsa -C "[email protected]"
    
  4. 确认路径按1次回车,提示:Enter passphrase(输入密码),不用输密码再按2次回车即可。生成的密钥存放路径 /root/.ssh/id_rsa

  5. 3、id_rsa:私钥 ,id_rsa.pub:公钥

    cat /root/.ssh/id_rsa.pub
    
  6. 打开gitee 配置SSH即可

  7. 拉取代码

    cd /usr/local/
    git clone 代码链接
    

3.4Step3-在Linux中安装安装maven

  1. 将maven安装包上传到Linux,在Linux中安装maven
    瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第8张图片

    tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
    
  2. 修改配置文件,加入如下内容

    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
    
  3. 修改配置文件内容如下

    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=HelloWorld

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo '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} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

echo 准备从Git仓库拉取最新代码
cd /usr/local/liunx-test
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成

echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`

cd target

echo 启动项目
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 &
    瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第9张图片

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

瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第10张图片

3.6.2为用户授权

chmod命令可以使用八进制数来指定权限
瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第11张图片

举例

  • chmod 777 bootStart.sh 为所有用户授予读、写、执行权限

  • chmod 755 bootStart.sh 为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限

  • chmod 210 bootStart.sh为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限

注意:三位数字分别代表不同用户的权限

  • 第1位表示文件拥有者的权限
  • 第2位表示同组用户的权限
  • 第3位表示其他用户的权限

3.7Step6-执行Shell脚本

./bootStart.sh

瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第12张图片

3.8设置静态ip

这里是动态ip
瑞吉外卖项目学习笔记-P20-Linux系统环境下项目部署_第13张图片

修改文件(这个文件不同系统不一样/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系统环境下项目部署_第14张图片

你可能感兴趣的:(SpringBoot项目开发,linux,java,intellij,idea,centos,tomcat)