Linux安装、常用命令及项目部署
一、Linux的安装
1.安装方式
(1)物理机安装
直接将操作系统安装到服务器硬件上。
(2)虚拟机安装
通过虚拟机软件安装,即通过虚拟机软件来模拟计算机硬件。
【tips】虚拟机(VM):通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。
2.VMware Workstation Pro16安装
(1)下载网址
(2)许可证密钥
ZF3R0-FHED2-M80TY-8QYGC-NPKYF
YF390-0HF8P-M81RQ-2DXQE-M2UT6
ZF71R-DMX85-08DQY-8YMNC-PPHV8
FA1M0-89YE3-081TQ-AFNX9-NKUC0
3.CentOS镜像安装
4.网卡设置
5.SSH连接工具FinalShell
(1)SSH(Secure Shell):建立在应用层基础上的安全协议。通过SSH连接工具就可以实现从本地连接到远程Linux服务器。
(2)安装finalshell
(3)使用finalshell连接到Linux
1)获取Linux服务器ip地址
2)连接Linux
二、常用命令
1.Linux和Windows目录结构对比
Linux中一切从根目录(/)开始,根目录是所有目录的“顶点”:
2.常用命令及使用技巧
(1)命令语法格式
command [-options] [parameter]
- command:命令名;
- [-options]:选项,可省略,用来对命令进行控制;
- [parameter]:传给该命令的参数,可以是0个、1个或多个。
(2)常用命令
命令 | 对应英文 | 作用 |
ls | list | 查看当前目录下的内容 |
pwd | print work directory | 查看当前所在目录 |
cd 目录名 | change directory | 切换目录 |
touch 文件名 | touch | 若文件不存在,新建文件 |
mkdir 目录名 | make directory | 创建目录 |
rm 文件名 | remove | 删除指定文件 |
(3)使用技巧
- Tab:自动补全
- 连续两次Tab:给出操作提示
- ↑↓:调出曾用命令
- clear命令或Ctrl+L:清屏
3.文件目录操作命令
(1)ls/ll命令
1)作用:显示指定目录下的内容。
2)语法:
ls [-a/-l] [dir]
- -a:显示所有文件及目录(以.开头的隐藏文件也会列出)
- -l:除文件名外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等详细信息列出
- dir:显示指定目录下的内容
(2)cd命令
1)作用:切换当前工作目录,即进入指定目录。
2)语法:
cd [dirName]cd /usr/local:切换到/usr/local目录。
- ~:表示用户的home目录,如 cd ~ :切换到当前用户的home目录
- .:表示目前所在目录
- ..:表示目前目录位置的上级目录,如cd ..:切换到当前目录的上级目录
- cd -:切换到上一个操作所在的目录。
(3)cat命令
1)作用:显示文件内容。
2)语法:
cat [-n] fileName
- -n:由1开始对所有输出的内容的行数进行编号
(4)more命令
1)作用:以分页的形式显示文件内容
2)语法:
more fileName
- 回车键:向下滚动一行
- 空格键:向下滚动一屏
- b:返回上一屏
- q或Ctrl+C:退出more
(5)★tail命令
1)作用:查看文件末尾的内容。
2)语法:
tail [-f] fileName
- -f::动态读取文件末尾内容并显示,通常用于实时打印日志文件。
-
举例:tail /etc/profile:显示/etc目录下的profile文件末尾10行的内容
tail -20 /etc/profile 显示/etc目录下的profile文件末尾20行的内容
tail -f /itcast/my.log 动态读取/itcast目录下的my.log文件末尾内容并显示
(6)mkdir命令
1)作用:创建新目录
2)语法:
mkdir [-p] dirName
- -p:确保目录名称存在,不存在就创建一个。通过此选项,可以实现多层目录同时创建
-
举例:mkdir itcast:在当前目录下,创建一个名为itcast的子目录
mkdir-p itcast/test:在工作目录下的itcast目录中建立一个名为test的子目录,若itcast目录不存在,则新建itcast
(7)rmdir命令
1)作用:删除空目录
2)语法:
rmdir [-p] dirName
- -p:当子目录被删除后使父目录为空目录的话,则一并删除父目录
-
举例:rmdir itcast:删除名为itcast的空目录
rmdir-p itcast/test:删除itcast目录中名为test的子目录,若test目录删除后itcast目录变为空目录,则也被删除
rmdir itcast*:删除名称以itcast开头的空目录(通配符)
(8)rm命令
1)作用:删除文件或者目录(不为空也能删除)
2)语法:
rm[-r/-f] name
- -r:将目录及目录中所有文件(目录)逐一删除,即递归删除,每次都会弹出是否删除提示
- -f:无需确认,直接删除
4.拷贝移动命令
(1)cp命令
1)作用:复制文件或目录
2)语法:
cp [-r] source dest
- -r:复制目录需要使用此选项,此时将复制该目录下所有的子目录和文件
-
举例:cp hello.txt itcast/:将hello.txt复制到itcast目录中
cp hello.txt . / hi.txt:将hello.txt复制到当前目录,并改名为hi.txt
cp -r itcast/ ./itheimal:将itcast目录和目录下所有内容复制到itheima目录下
cp -r itcast/* ./ itheima/:将itcast目录下所有内容复制到itheima目录下
(2)mv命令
1)作用:重命名文件或目录,或者将文件或目录移动到其他位置
2)语法:
mv source newName //重命名 mv source dest //移动位置
- mv hello.txt hi.txt:将hello.txt改名为hi.txt
- mv hi.txt itheima/:将文件hi.txt移动到itheima目录中
- mv hi.txt itheima/ hello.txt:将hi.txt移动到itheima目录中,并改名为hello.txt
- mv itcast/ itheima/:如果itheima目录不存在,将itcast目录改名为itheima;如果itheima目录存在,将itcast目录移动到itheima目录中
5.打包压缩tar命令
Linux 中的打包文件一般是以 .tar 结尾的,压缩文件一般是以 .gz 结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
(1)作用:对文件进行打包、解包、压缩、解压
(2)语法:
tar [-z/-c/-x/-v/-f] fileName.tar/.tar.gz [files]【tips】包文件后缀为.tar表示进行了打包,并没有压缩;包文件后缀为.tar.gz表示进行了打包并压缩。
- -z:z代表的是gzip,通过gzip命令处理文件,可以对文件压缩或者解压
- -c:c代表的是create,将文件打包
- -x:x代表的是extract,解包
- -v:v代表的是verbose,显示命令的执行过程
- -f:f代表的是file,用于指定包文件的名称
【举例】假如 test 目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,现在要打包 test 目录并指定压缩后的压缩包名称为 test.tar.gz 可以使用命令:
tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt //打包test目录等价于将test目录下的所有文件打包并压缩
或
tar -zcvf test.tar.gz /test/ //直接打包test目录★注意:先是打包后的名字,再是要打包的文件!
(3)常用组合
- -cvf:将指定文件打包
- ★-zcvf:将指定文件打包并压缩
- -xvf:将指定包解包
- -zxvf:将指定压缩包解压
【tips】★-C:解压到指定目录,举例:tar -zxvf xxx.tar.gz -C /user/local
6.文本编辑命令
(1)vi命令
1)作用:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本。
2)语法:
vi fileName
(2)★vim命令
1)作用:vim是vi的增强版,可以对文本内容进行着色,所以vim更常用。
2)语法:
vim fileName【tips】、在使用vim命令编辑文件时,如果指定文件存在则直接打开此文件,如果指定的文件不存在则新建文件。
3)vim的安装命令:
yum install vim4)vim编辑时的三种模式:
vim在进行文本编辑时共分为三种模式,分别是命令模式(Command mode)、插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。
-
【命令模式】
- 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg:移动到开头、G:移动到末尾)
- 通过vim命令打开文件后,默认进入命令模式(另外两种模式需要先回到命令模式,才能进行切换)
-
【插入模式】
- 插入模式下可以对文件内容进行编辑
- 在命令模式下按下[i,a,o]任意一个,就能进入插入模式。进入插入模式后,下方会出现【insert】字样
- 在插入模式下按下ESC键,回到命令模式
- 【底行模式】
- 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
- 在命令模式下按下[:,/]任意一个,可以进入底行模式
- 通过/方式进入底行模式后,可以对文件内容进行查找
- 通过:方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)
7.查找命令
(1)find命令
1)作用:在指定目录下查找文件。
2)语法:
find dirName -option fileName
- find . -name "*.java":在当前目录及其子目录下查找以.java结尾的文件
- find /itcast -name "*.java":在/itcast目录及其子目录下查找以.java结尾的文件
(2)grep命令
1)作用:从指定文件中查找指定的文本内容
2)语法:
grep word fileName
- grep Hello Helloworld.java:查找Helloworld.java文件中出现的Hello字符串的位置
- grep hello *.java:查找当前目录中所有以.java结尾的文件中包含hello字符串的位置
8.进程查看命令ps
ps命令是linux下的进程查看命令,类似于Windows中的任务管理区,通过ps -ef命令可以查看当前运行的所有进程的详细信息。
使用ps命令查看进程时,经常配合管道符|(将前一个命令的结果输出给后一个命令作为输入)和查找命令grep一起使用,来查看特定进程。
比如查看包含redis字符串的进程:ps -ef | grep redis。
9.防火墙(firewalld)操作命令
systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作。
firewall-cmd是Linux中专门用于控制防火墙的命令。
(1)查看防火墙状态
systemctl status firewalld firewall-cmd --state
(2)暂时关闭防火墙
systemctl stop firewalld(3)永久关闭防火墙
systemctl disable firewalld
(4)开启防火墙
systemctl start firewalld(5)开放指定端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent(6)关闭指定端口
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
(7)立即生效
firewall-cmd --reload
(8)查看开放的端口
firewall-cmd --zone=public --list-ports
10.权限命令
操作系统中每个文件都拥有特定的权限、所属用户和所属组,在 Linux 中权限一般分为读(readable)、写(writable)和执行(excutable),即rwx。
一个文件有三组rwx,分别对用于文件的属主(owner)、属组(group)和其他用户(other)。通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
一个文件有三组rwx,分别对用于文件的属主(owner)、属组(group)和其他用户(other)。通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
通过 ll命令 可以查看某个目录下的文件或目录的权限:
前面的信息是:
(1)文件类型
- d:代表目录文件
- -:代表普通文件
- l: 代表软链接(可以认为是 window 中的快捷方式)
- r:代表权限是可读,r 也可以用数字 4 表示
- w:代表权限是可写,w 也可以用数字 2 表示
- x:代表权限是可执行,x 也可以用数字 1 表示
(3)属主、属组、其他用户
- 属主(u) :即文件的所有者,一般是文件的创建者。用 ls ‐ahl命令 可以看到文件的所有者。
- 属组(g) :即文件所在的组,当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组。用 ls ‐ahl命令 可以看到文件的所在组。
- 其它用户(o) :除了文件的所有者和所在组的用户外,系统的其它用户都是文件的其它用户。
(4)修改文件权限——chmod命令
chmod(英文全拼: change mode)命令是用来控制用户对文件的权限,可以用三位八进制数来指定权限。
三位数字分别代表不同用户的权限:第1位表示文件拥有者u的权限,第2位表示同组用户g的权限,第3位表示其他用户o的权限:
【举例】修改 /test 下的 aaa.txt 的权限为文件所有者有全部权限(111-7),文件所有者所在的组有读写权限(110-6),其他用户只有读权限(100-4)。
chmod u=rwx,g=rw,o=r aaa.txt //ugo对应指定权限或者chmod 764 aaa.txt //使用八进制数制定权限
(5)★开机自启动设置
假如我们装了一个 zookeeper,我们每次开机到要求其自动启动该怎么办?
- 新建一个脚本 zookeeper
- 为新建的脚本 zookeeper 添加可执行权限,命令是:chmod +x zookeeper
- 把 zookeeper 这个脚本添加到开机启动项里面,命令是:chkconfig --add zookeeper
- 如果想看看是否添加成功,命令是:chkconfig --list
11.用户管理命令
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
(1)用户管理
- useradd 选项 用户名:添加用户账号。使用useradd指令所建立的帐号,实际上是保存在 /etc/passwd文本文件中。
- userdel 选项 用户名:删除用户帐号
- usermod 选项 用户名:修改帐号
- passwd 用户名:更改或创建用户的密码
- passwd -S 用户名:显示用户账号密码信息
- passwd -d 用户名:清除用户密码
(2)用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。
组的增加、删除和修改实际上就是对/etc/group文件的更新。
- groupadd 选项 用户组:增加一个新的用户组
- groupdel 用户组:要删除一个已有的用户组
- groupmod 选项 用户组:修改用户组的属性
12.网络通信命令
(1)查看当前系统的网络配置
要想知道网络的配置和状态,可以使用 ifconfig 或者 ip 命令来查看。 这两个命令功能差不多,不过它们属于不同的软件包:ifconfig 属于 net-tools 软件包,ip 属于 iproute2 软件包。
2001 年起,Linux 社区已经停止维护net-tools,所以更推荐使用 ip 命令。
-
使用这两个命令来查看网卡 ens33 的配置信息:
-
虽然这两个命令的格式不相同,但是输出的内容基本相同,比如都包含了 IP 地址、子网掩码、MAC 地址、网关地址、MTU 大小、网口的状态以及网络包收发的统计信息,它们都与网络性能有一定的关系。
- ①网口的连接状态标志。表示对应的网口是否连接到交换机或路由器等设备,如果 ifconfig 输出中看到有 RUNNING,或者 ip 输出中有 LOWER_UP,则说明物理网络是连通的;如果看不到,则表示网口没有接网线。
- ②MTU 大小。默认值是 1500 字节,其作用主要是限制网络包的大小。
- ③网口的 IP 地址、子网掩码、MAC 地址、网关地址。这些信息必须要配置正确,网络功能才能正常工作。
-
④网络包收发的统计信息。通常有网络收发的字节数、包数、错误数以及丢包情况的信息,如果 TX(发送) 和 RX(接收) 部分中 errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,则说明网络发送或者接收出问题了,这些出错统计信息的指标意义如下:
errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer(这个缓冲区是在内核内存中,更具体一点是在网卡驱动程序里),但因为系统内存不足等原因而发生的丢包;
overruns 表示超限数据包数,即网络接收/发送速度过快,导致 Ring Buffer 中的数据包来不及处理,而导致的丢包,因为过多的数据包挤压在 Ring Buffer,这样 Ring Buffer 很容易就溢出了;
carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;
ollisions 表示冲突、碰撞数据包数;
-
虽然这两个命令的格式不相同,但是输出的内容基本相同,比如都包含了 IP 地址、子网掩码、MAC 地址、网关地址、MTU 大小、网口的状态以及网络包收发的统计信息,它们都与网络性能有一定的关系。
(2)查看socket信息
可以使用 netstat 或者 ss 命令查看 socket、网络协议栈、网口以及路由表的信息。
虽然 netstat 与 ss 命令查看的信息都差不多,但是在生产环境中尽量不要使用 netstat 命令,因为 netstat 的性能不好,在系统比较繁忙的情况下,频繁使用 netstat 命令会对性能开销雪上加霜,所以更推荐使用性能更好的 ss 命令。
虽然 netstat 与 ss 命令查看的信息都差不多,但是在生产环境中尽量不要使用 netstat 命令,因为 netstat 的性能不好,在系统比较繁忙的情况下,频繁使用 netstat 命令会对性能开销雪上加霜,所以更推荐使用性能更好的 ss 命令。
可以发现两个命令输出的内容都差不多,比如都包含了 socket 的状态(State)、接收队列(Recv-Q)、发送队列(Send-Q)、本地地址(Local Address)、远端地址(Foreign Address)、进程 PID 和进程名称(PID/Program name)等。
(3)查看协议栈统计信息
- ss 命令输出的统计信息比 netsat 少,ss 只显示已经连接(estab)、关闭(closed)、孤儿(orphaned) socket 等简要统计。
- netstat 则有更详细的网络协议栈信息,比如上面显示了 TCP 协议的主动连接(active connections openings)、被动连接(passive connection openings)、失败重试(failed connection attempts)、发送(segments send out)和接收(segments received)的分段数量等各种信息。
(4)查看网络吞吐率和 PPS
PPS:全称是 Packet Per Second(包 / 秒),表示以网络包为单位的传输速率,一般用来评估系统对于网络的转发能力。
可以使用 sar 命令查看当前网络的吞吐率和 PPS,用法是给 sar 增加 -n 参数就可以查看网络的统计信息,比如:
-
sar -n DEV,显示网口的统计数据:
- rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒。
- rxkB/s 和 txkB/s 分别是接收和发送的吞吐率,单位是 KB/ 秒。
- rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒。
- sar -n EDEV,显示关于网络错误的统计数据;
-
sar -n TCP,显示 TCP 的统计数据。
(5)查看网络连通性和延时
要测试本机与远程主机的连通性和延时,通常是使用 ping 命令,它是基于 ICMP 协议的,工作在网络层。
比如要测试虚拟机到 主机 IP 地址的连通性和延时:
上面显示的内容主要包含 icmp_seq(ICMP 序列号)、TTL(生存时间,或者跳数)以及 time(往返延时),而且最后会汇总本次测试的情况,如果网络没有丢包,packet loss 的百分比就是 0。
【tips】ping 不通服务器并不代表 HTTP 请求也不通,因为有的服务器防火墙是会禁用 ICMP 协议的。
【tips】ping 不通服务器并不代表 HTTP 请求也不通,因为有的服务器防火墙是会禁用 ICMP 协议的。
13.关机和重启命令
-
shutdown:
shutdown -h now: 指定现在立即关机;
shutdown +5 "System will shutdown after 5 minutes":指定 5 分钟后关机,同时送出警告信息给登入用户。
-
reboot:
reboot: 重开机;
reboot -w: 做个重开机的模拟(只有纪录并不会真的重开机)。
三、软件安装
1.软件安装方式
(1)二进制发布包安装
软件已经针对具体平台编译打包发布,只要解压,修改配置即可。
(2)rpm安装
软件已经按照redhat的包管理规范进行打包,使用rpm命令安装,但不能自行解决库依赖问题。
(3)yum安装
一种在线软件安装方式,使用yum命令安装,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题。
(4)源码编译安装
软件以源码工程的形式发布,需要自己编译打包。
2.安装JDK
(1)使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux
(2)解压安装包,命令为
tar -zxvf jdkxxx.tar.gz -C/usr/local
(3)配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
JAVA_HOME=/usr/local/jdkxxx PATH=$JAVA_HOME/bin:$PATH
(4)重新加载profile文件,使更改的配置立即生效,命令为
source /etc/profile(5)检查安装是否成功,命令为java -version
3.安装Tomcat
(1)使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux
(2)解压安装包,命令为tar -zxvf apache-tomcat-xxx.tar.gz -C/usr/local
(3)进入Tomcat的bin目录启动服务,命令为sh startup.sh或者./startup.sh
(4)验证Tomcat是否启动成功的方法:
1)查看启动日志
- more /usr/local/apache-tomcat-xxx/logs/catalina.out
- tail -50 /usr/local/apache-tomcat-xxx/logs/catalina.out
2)查看进程
- ps -ef | grep tomcat
1)运行Tomcat的bin目录中提供的停止服务的脚本文件shutdown.sh
- sh shutdown.sh
- ./shutdown.sh
2)结束Tomcat进程
- 查看Tomcat进程,获得进程id
- 执行命令“kill -9 进程id”结束Tomcat进程
4.安装MySQL
(1)检测当前系统中是否安装MySQL数据库
如果当前系统中已经安装有MySQL数据库,安装将失败。比如CentoS7自带mariadb,与MySQL数据库冲突,会导致MySQL数据库安装失败,所以要先将其卸载。
- rpm -qa:查询当前系统中安装的所有软件
- rpm -qa l grep mysql:查询当前系统中安装的名称带mysql的软件
- rpm -qa l grep mariadb:查询当前系统中安装的名称带mariadb的软件
- rpm -e --nodeps 软件名称:卸载指定软件
(4)按照顺序安装rpm软件包
- rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
- rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
- rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
- rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
- yum install net-tools
- rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
(5)启动MySQL
- systemctl status mysqld:查看mysql服务状态
- systemctl start mysqld:启动mysql服务
- systemctl enable mysqld:设置开机自动启动MySQL服务
- netstat -tunlp:查看已经启动的服务
- ps -ef | grep mysql:查看mysql进程
- cat /var/log/mysqld.log | grep password:查看文件内容中包含password的行信息
- mysql -urpot -p:登录mysql(使用临时密码登录)
-
修改密码
-
set global validate_password_length=4;
设置密码长度最低位数 -
set global validate_password_policy=LOW;
设置密码安全等级低,便于密码可以修改成root -
set password = password('root');
设置密码为root
-
set global validate_password_length=4;
-
开启访问权限
-
grant all on *.* to 'root'@'%' identified by 'root';
-
flush privileges;
-
- show databases;
5.安装lrzsz
Lrzsz是在linux中可以代替ftp的文件上传和下载的软件。
(1)搜索lrzsz安装包,命令为“yum list lrzsz”
(2)使用yum命令在线安装,命令为“yum install lrzsz.x86_64”
(3)安装好lrzsz后就可以使用“rz”命令来进行文件上传了。
6.安装git
yum -y install git
7.安装maven
(1)上传下载好的maven安装包
(2)解压apache-maven-3.6.1-bin.tar.gz文件
(3)配置maven仓库,设置阿里镜像仓库
1)进入apache-maven-3.6.1目录,创建本地仓库目录
cd apache-maven-3.6.1/ mkdir mvn_repo2)在conf目录下的settings.xml中配置本地仓库目录
<localRepository>/usr/local/apache-maven-3.6.1/mvn_repo</localRepository>3)在conf目录下的settings.xml中配置阿里云镜像仓库
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>4)配置maven环境变量
vi /etc/profile export MAVEN_HOME=/usr/local/apache-maven-3.6.1 export PATH=$PATH:$MAVEN_HOME/bin5)重新加载一下使新增配置生效
source /etc/profile6)安装完成,测试
mvn -v
四、项目部署
1.手工部署项目
(1)在IDEA中将开发的SpringBoot项目打成jar包
pom文件中必须有以下依赖:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>(2)将jar包上传到Linux服务器
创建app目录,将项目jar包上传到此目录下。
mkdir /usr/local/app
(3)启动Spring程序
java -jar xxx.jar(4)检查***,确保8080端口对外开放,访问SpringBoot项目
(5)改为后台运行SpringBoot程序,并将日志输出到日志文件★
- 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
(6)停止SpringBoot程序
通过终止进程的方式停止该程序:先查询进程id,再kill
ps -ef | grep 'java -jar' kill -9 进程id
2.通过shell脚本自动部署项目★
(1)在Linux中安装Git
- yum list git:列出git安装包
- yum install git:在线安装git
(2)使用Git克隆代码
- git clone url
(3)在Linux中安装maven
(4)编写Shell脚本(拉取代码、编译、打包、启动)
(5)为用户授予执行Shell脚本的权限★
1)Linux中的权限分为:读(r)、写(w)、执行(x)三种权限,Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other Users) 。只有文件的所有者和超级用户可以修改文件或目录的权限。
2)要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行。
3)chmod(英文全拼: change mode)命令是控制用户对文件的权限的命令 ,chmod命令可以使用八进制数来指定权限。举例:
- chmod 777 bootStart.sh:为所有用户授予读、写、执行权限
- chmod 755 bootStart.sh:为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
- chmod 210 bootstart.sh:为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
(6)执行Shell脚本
(7)设置静态ip
修改文件/etc/sysconfig/network-scripts/ifcfg-ens33,内容如下:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" #######################改下面几行####################### BOOTPROTO="static" #使用静态IP地址,默认为dhcp IPADDR="192.168.138.100" #设置的静态IP地址 NETMASK="255.255.255.0" #子网掩码 GATEWAY="192.168.138.2" #网关地址 DNS1="192.168.138. 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" #是否开机启用(8)重启网络服务
systemctl restart network