Linux安装方式+自动部署

Linux高级

软件安装方式

安装方式特点
二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可。例如tomcat
rpm(redhat package manager)安装软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,但是包之间有可能具有依赖关系,因此不能自行解决库依赖问题,比较麻烦。
yum安装一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题(安装过程需要联网)
源码编译安装软件以源码工程的形式发布,需要自己编译打包。类似.java文件需要编译成.class文件安装方式。第一个二进制发布包安装相当于直接拿到.class文件直接安装。

进程查看

1). 查看启动日志

more  tomcat安装路径/logs/catalina.out
tail -50 tomcat安装路径/logs/catalina.out

2). 查询系统进程

ps -ef | grep tomcat
​
●  ps命令是linux下非常强大的进程查看命令,通过ps -ef可以查看当前运行的所有进程的信息
●  "|" 在Linux中称为管道符,可以将前一个命令的结果输出给后一个命令作为输入 
●  使用ps命令查看进程时,经常配合管道符和查找命令 grep 一起使用,来查看特定进程 

防火墙操作

操作指令备注
查看防火墙状态systemctl status firewalld 或者 firewall-cmd --state
关闭防火墙systemctl stop firewalld立即生效
永久关闭防火墙(禁用开机自启)systemctl disable firewalld下次启动,才生效
暂时开启防火墙systemctl start firewalld立即生效
永久开启防火墙(启用开机自启)systemctl enable firewalld下次启动,才生效
重启防火墙systemctl restart firewalld
开放指定端口firewall-cmd --zone=public --add-port=8080/tcp --permanent需要重新加载生效
关闭指定端口firewall-cmd --zone=public --remove-port=8080/tcp --permanent需要重新加载生效
立即生效(重新加载)firewall-cmd --reload
查看开放端口firewall-cmd --zone=public --list-ports

注意:

A. systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
​
B. firewall-cmd是Linux中专门用于控制防火墙的命令
​
C. 为了保证系统安全,服务器的防火墙不建议关闭   

停止进程

1). 运行提供的脚本文件

例如停止Tomcat 换到bin目录,并执行如下指令
​
./shutdown.sh

2). 结束进程

先查看进程
​
ps -ef|grep tomcat
​
获取到tomcat的进程号为 79947 杀死进程
​
kill -9 79947
​

注意 :

kill命令是Linux提供的用于结束进程的命令,-9表示强制结束

虽然上述讲解的两种方式,都可以停止Tomcat服务,但是推荐使用第一种方式(./shutdown.sh)执行脚本来关闭tomcat服务,如果通过第一种方式停止不了tomcat了,这个时候,我们可以考虑使用第二种方式,强制杀死进程。

Yum安装

yum(全称为 Yellow dog Updater, Modified)能够从指定的服务器自动下载包并且安装,可以自动处理依赖关系,一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum [参数] [命令] <安装包>说明
参数:-y在软件安装过程中所有的提示回答yes
命令:install安装指定的软件
命令:remove删除指定的安装包
命令:list搜索指定的安装包

安装lrzsz为例步骤如下:

1). 搜索lrzsz安装包

yum list lrzsz

2). 在线安装lrzsz

yum install lrzsz.x86_64

3). 测试

在命令行中输入 rz , 就会自动打开一个文件选择的窗口,然后选择要上传的文件。

将linux的文件下载到window系统中(默认下载到windows桌面上)的命令是:sz

Mac系统中会下载到/Users/用户目录/fsdownload

项目部署

手动部署项目

1). 在IDEA中开发SpringBoot项目并打成jar包

2). 将jar包上传到Linux服务器

3). 检查防火墙,确保8080端口对外开放,访问SpringBoot项目

4)查看当前linux系统的ip地址

5). 启动SpringBoot程序

6). 访问测试

后台运行项目

当前这个demo工程我们已经部署成功了,并且我们也可以访问项目了。但是这个工程目前是存在问题的,就是当前我们项目启动的这个窗口被霸屏占用了,如果我们把这个窗口关闭掉(或ctrl+c),当前服务也就访问不到了,我们可以试一下。

要想让我们部署的项目进行后台运行,这个时候我们需要使用到linux中的一个命令 nohup ,接下来,就来介绍一下nohup命令。

nohup命令:英文全称 no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行

语法格式: nohup Command [ Arg … ][&]
 
参数说明:
    Command:要执行的命令
    Arg:一些参数,可以指定输出文件
    &:让命令在后台运行
 
举例:nohup java -jar boot工程.jar &> hello.log &
 
上述指令的含义为: 启动一个名为 boot工程.jar 的 Java 应用程序,并将标准输出和标准错误输出都重定向到 hello.log 文件中
1. nohup 命令用于在运行命令时忽略挂起信号,从而使命令在后台持续运行,即使终端会话已经结束。
2. java -jar boot工程.jar 是要运行的 Java 应用程序的命令。它会启动一个 Java 虚拟机,并加载并运行指定的 JAR 文件。
3. &> hello.log 用于将标准输出和标准错误输出都重定向到 hello.log 文件中。&> 表示重定向所有输出(包括标准输出和标准错误输出)。
4. & 用于将命令在后台运行,从而立即返回 shell 提示符,而不必等待命令结束。

项目后台运行

nohup java -jar helloworld.jar &>hello.log &
1.上述命令的 “&” ,表示在当窗口关闭时,程序才会中止运行。&代表让该命令在后台执行。
2.上述命令的 > hello.log ” 该命令就是指定日志输出的文件。

 停止SpringBoot项目
 查看进程,杀死进程

Shell脚本自动部署

操作步骤如下:

1). 在Gitee/gitlab上创建远程仓库,并将本地的项目代码推送到远程仓库中

2). 在Linux中安装Git,克隆代码

3). 在Linux中安装maven

4). 编写Shell脚本(拉取代码、编译、打包、启动)

5). 为用户授予执行Shell脚本的权限

6). 执行Shell脚本

ssh安全协议访问git远程仓库免密登录(生成密匙,查看阿里云设置)

push操作时是无需反复的输入账户和密码的,做到免密登录!

安装git
yum命令在线安装git

yum list git			列出git安装包
yum install git			在线安装git

Git代码克隆

创建文件包
# 初次拉去代码使用git clone
git clone ssh://git@47.96.143.141:2224/tiansuo/helloworld_heima100.git //复制SSH地址
注意:首次target和jar包,也要推到仓库 避免脚本找不到包,也可以直接建相应的包
Maven安装
1). 上传maven的安装包
2). 解压maven安装包到/usr/local/soft目录
tar -zxvf apache-maven-3.5.4-bin.tar.gz
删除不需要的压缩包
3). 在/etc/profile配置文件中配置环境变量
vim /etc/profile

修改配置文件,进入到命令模式,按G切换到最后一行,按a/i/o进入插入模式,然后在最后加入如下内容 :
MAVEN_HOME=/usr/local/soft/apache-maven-3.5.4
PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

然后按ESC进入到命令模式,输入 :wq 保存并退出

要想让配置的环境变量生效,还需要执行如下指令:

source /etc/profile
4). 修改maven的settings.xml配置文件,配置本地仓库地址
切换目录 

cd /usr/local/soft/apache-maven-3.5.4/conf

编辑settings.xml配置文件

vim settings.xml

在其中增加如下配置,配置本地仓库地址:

<localRepository>/usr/local/soft/repo</localRepository>

配置阿里云的私服(选做):加快依赖下载

<mirror> 
    <id>alimaven</id> 
    <mirrorOf>central</mirrorOf> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
Shell脚本准备

在/usr/local/soft 目录下创建一个目录 sh(mkdir sh),并将shell脚本上传到该目录下。或者直接在sh目录下创建一个脚本bootStart.sh,然后将资料中的bootStart.sh文件打开,内容拷贝过来即可。

脚本解读:

#!/bin/sh
#记事本打开,修改编码格式为utf8,可解决上传centos后中文乱码问题
echo =================================
echo  自动化部署脚本启动
echo =================================

echo 停止原来运行中的工程
# 确定自己的名字,项目中pom.xml中看到

APP_NAME=helloworld //可以在StringBoot项目pom.xml中查看

# 查询系统中正在运行的helloworld的进程,并停止进程
tpid=`ps -aux|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 -aux|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
# 停止后再次查询,如果还存在,则通过kill -9 强制杀死
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

echo 准备从Git仓库拉取最新代码

# 改成自己项目路径
cd /usr/local/soft/helloworld-157  //首次git克隆拉取路径 第一次要使用命令手动拉取

echo 开始从Git仓库拉取最新代码
# 拉取最新代码
git pull
echo 代码拉取完成

echo 开始打包
# 执行打包,跳过单元测试
output=`mvn clean package -Dmaven.test.skip=true`
# 切换到当前工程的target目录下
cd target

echo 启动项目
# 后台启动该项目
nohup java -jar helloworld.jar &> helloworld.log &   helloworld.jar改成自己jar包
echo 项目启动完成

Linux权限(三组9位,每三位一组,每位通过二进制0,1判断权限)

1). chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

2). Linux中的权限分为三种 :读(r)、写(w)、执行(x)

  1. Linux文件权限从左到右分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

4). 只有文件的所有者和超级用户可以修改文件或目录的权限

5). 要执行Shell脚本需要有对此脚本文件的执行权限(x),如果没有则不能执行

Linux系统中权限描述如下:

 

解析当前脚本的权限情况:

 

chmod命令可以使用八进制数来指定权限(0 - 代表无 , 1 - 执行x , 2 - 写w , 4 - 读r):

权限rwx
7读 + 写 + 执行rwx
6读 + 写rw-
5读 + 执行r-x
4只读r--
3写 + 执行-wx
2只写-w-
1只执行--x
0---

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

三个数字分别代表不同用户的权限

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

授权并执行脚本

chmod 777 bootStart.sh

A. 第一个7,代表当前文件所有者root用户,对该文件具有读写执行权限;
B. 第二个7,代表当前文件所有者所属组的用户,对该文件具有读写执行权限;
B. 第三个7,代表其他用户,对该文件具有读写执行权限;

执行该shell脚本浏览器访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值