项目部署
手工部署项目
1.打成jar包
2.上传Linux
3.使用命令运行程序
java -jar 包名
4.通过自己的ip地址访问网页
目前程序运行的问题是:
- 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制台,而是输出日志文件,方便运维查阅信息
nohup
命令:英文名称no hang up(不挂起),用于不挂断地运行指定程序,退出终端不会影响程序的运行
语法格式:nohup Command[Arg ...][&]
参数说明:
Command:要执行的命令
Arg:一些参数
&:让命令在后台运行
举例:
nohup java -jar boot工程.jar &>hello.log &
后台运行java -jar命令 ,并将日志输出到hello.log文件
5.停止服务
查找服务,获取进程id
ps -ef|grep java
kill -9 进程id
通过Shell脚本自动部署项目
1.在Linux中安装Git
yum list git
列出所有的Git安装包
yum install
获取的安装包名
将项目上传至仓库
在Linux中使用git克隆保存至/usr/local下
git clone 仓库地址
2.在Linux中安装Maven
上传
解压
tar -zxvf apache-maven-3.5.4-bin.tar.gz
打开配置文件配置环境变量
vim /etc/profile
在最后一行加入
export MAVEN_HOME=/usr.local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
PATH=$JAVA_HOME/bin:$PATH
配置立即生效source /etc/profile
查看maven版本mvn -version
创建本地仓库
mkdir repo
进入apache-maven-3.5.4下的conf目录中
打开settingsd.xml
配置本地仓库
<localRepository>/usr/local/repo</localRepository>
3.编写Shell脚本(拉去代码,编译,打包,启动)
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/helloworld
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 项目启动完成
4.为用户授予执行Shell脚本的权限
chmod
Linux中权限分为:读(r)、写(w)、执行(x)三种权限
Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其他用户(Other Users)
只有文件的所有者和超级用户可以修改文件或目录的权限
chomd命令可以使用八进制数来指定权限
7 | 读+写+执行 | rwx |
---|---|---|
6 | 读+写 | rw- |
5 | 读+执行 | r-x |
4 | 只读 | r– |
3 | 写+执行 | -wx |
2 | 只写 | -w- |
1 | 只执行 | –x |
0 | 无 | — |
举例:三位数字代表三位用户
chmod 777 booStart.sh 为所有用户授予读、写、执行权限
5.执行Shell脚本
6.设置静态ip
找到
/etc/sysconfig/network-scripts/ifcfg-ens33
打开ifcfg-ens33并修改
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
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=72d73c4d-640a-4295-9eb8-c7a92e727682
DEVICE=ens33
ONBOOT=yes
ZONE=public
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static" #使用静态IP地址,默认为dhcp
IPADDR="192.168.205.128" #设置静态IP地址
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.205.2" #网关地址
DNS1="192.168.205.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=72d73c4d-640a-4295-9eb8-c7a92e727682
DEVICE=ens33
ONBOOT=yes
ZONE=public
重启
systemctl restart network