Linux
课程内容:
- Linux简介
- Linux安装
- Linux常用命令
- 在Linux中安装常用软件
- 在Linux部署开发好的项目
# Linux简介
# 什么是Linux
Linux是一套免费使用和自由传播的操作系统。提到操作系统,大家比较熟悉的应该就是Windows和MacOS操作系统,那么我们今天学习的Linux也是一款操作系统。
# 为什么要学Linux
开发者学习Linux,主要处于两个方面的考虑:
- 企业用人要求
以下,是从知名招聘网站上搜索到的Java开发工程师的岗位要求,在很多岗位要求中都提到了Linux操作系统的经验。
作为JavaEE开发工程师,企业为什么还要求我们会操作Linux系统呢?
原因在于Linux操作系统提供了很多稳定的发行版本,其广泛的应用在各种服务器领域,我们开发出来的项目,最终要上线运行,就需要将项目部署在Linux服务器中。
- 个人发展需要
作为JavaEE开发工程师,将来在企业中工作时会涉及到很多的数据库、中间件等技术,比如MySQL、Redis、MQ等技术,而这些应用软件大多都是需要安装在Linux系统中使用的。我们作为开发者,是需要通过远程工具连接到Linux服务器,然后来操作这些软件,甚至一些小公司,可能还需要我们自己在服务器上安装这些软件。
因此,无论从企业用人需求层面,还是个人发展需求层面,作为服务端开发工程师,熟悉Linux系统的操作是我们必不可少的技能。
# 学完Linux能干什么
学习完linux操作系统,我们可以做以下几个方面的事情:
- 环境搭建
系统安装:一般我们不会直接将Linux系统安装在个人电脑上,Linux普遍会安装在公司的一台专门服务器上。
远程连接:当我们需要使用服务器时,一般都是通过远程连接工具连接到Linux系统服务器进行操作。
- 常用命令
连接上服务器之后,开发者可以通过所学习的相关操作指令,来操作Linux服务器,在Linux服务器中可以执行如下操作:
- 文件、目录的基本操作(查看、删除、创建等)
- 文件及文件夹的拷贝、移动、重命名
- 文件的打包、压缩、解压缩等操作
- 文本的编辑
- 安装软件
学会基本的常用指令之后,我们就可以在Linux服务器中安装我们开发常用的软件,比如:JDK、Tomcat、MySQL。
- 项目部署
将基础的软件环境搭建好之后,我们开发者就可以将开发好的项目部署在服务器中运行并测试。
提示
对于Linux操作系统,Linux命令时基础,也是我们学习Linux系统的重点内容,虽然Linux的命令有很多,但我们常用的并不是很多,大家在学习的时候,主要掌握这部分常用的指令,对于其他指令,需要掌握如何获取指令的使用方法,待用到时再行查询也可。
对于Linux命令的学习,大家要多敲多练。
# 主流操作系统
操作系统针对不同的行业领域,主要分为一下这么几类:
- 桌面操作系统
操作系统 | 特点 |
---|---|
Windows | 用户数量最多 |
MacOS | 操作体验好,办公人士首选 |
Linux | 用户数量少(桌面操作系统,Linux使用较少) |
- 服务器操作系统
操作系统 | 特点 |
---|---|
Unix | 安全、稳定、付费 |
Linux | 安全、稳定、免费、占有率高 |
Windows Server | 付费、占有率低 |
- 移动设备操作系统
操作系统 | 特点 |
---|---|
Android | 基于 Linux 、开源,主要用于智能手机、平板电脑和智能电视 |
IOS | 苹果公司开发、不开源,用于苹果公司的产品,例如:iPhone、 iPad |
- 嵌入式操作系统
操作系统 | 特点 |
---|---|
Linux | 机顶盒、路由器、交换机 |
# Linux发展历史
时间:1991年
地点:芬兰赫尔辛基大学
人物:Linus Torvalds (21岁)
语言:C语言、汇编语言
Logo:企鹅
特点:免费、开源(源代码开放)、多用户(同时允许多个用户操作同一个Linux系统)、多任务(同时允许多个人物执行)
# Linux系统版本
Linux系统的版本分为两种,分别是:内核版和发行版。
内核版
- 有Linus Torvalds及其团队开发、维护
- 免费、开源
- 负责控制硬件
发行版
- 基于Linux内核版进行扩展
- 由各个Linux厂商开发、维护
- 有收费版本和免费版本
我们使用的Linux操作系统,实际上选择的是Linux的发行版,在linux系统中,有各种各样的发行版本,具体如下:
发行版本 | Logo | 特点 |
---|---|---|
Ubuntu | 以桌面应用为主 | |
RedHat | 应用最广泛、收费 | |
CentOS | RedHat的社区版、免费 | |
openSUSE | 对个人完全免费、图形界面华丽 | |
Fedora | 功能完备、快速更新、免费 | |
红旗Linux | 北京中科红旗软件技术有限公司开发 |
除了上述罗列出来的版本,还有很多,这里就不再一一列举了。
# Linux安装
# 安装方式介绍
Linux系统的安装方式,主要包含以下两种:
方式 | 概述 | 场景 |
---|---|---|
物理机安装 | 直接将操作系统安装到服务器硬件上 | 企业开发中,我们使用的服务器基本都是采用这种方式 |
虚拟机安装 | 通过虚拟机软件安装 | 我们在学习阶段,没有自己服务器,而我们又需要学Linux,就可以安装在虚拟机上 |
虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用的虚拟机软件有:
- VMware
- VirtualBox
- VMLite WorkStation
- Qemu
- HopeddotVOS
本课程我们选择的虚拟机软件时VMware。
# 安装VMware
在我们的课程资料中提供了VMware的安装程序,直接双击运行VMware安装程序,根据提示完成安装即可,基本上就是点击下一步一直进行安装。
# 安装Linux
VMware虚拟机安装完毕之后,我们就可以打开VMware,并使用它新建虚拟机,在虚拟机中安装Linux操作系统,具体步骤如下:
- 创建虚拟机
- 选择推荐配置
- 选择稍后安装操作系统(S)
- 选择Linux操作系统,CentOS 64位版本
- 设置虚拟机的名称及系统文件存放路径
- 设置磁盘容量
- 自定义硬件信息
- 启动上述创建的虚拟机
- 选择Install CentOS 7
注意
当鼠标光标进入到Linux系统里面,会发现光标无法移动到Windows系统中,这个时候,可以通过组合键Ctrl+Alt切换鼠标光标到Windows系统中。
选择Install CentOS 7后,稍等几分钟,等图形界面出来后再进行操作。
- 选择语言,简体中文或者English都可
此处,我选择的是English。
- 选择自动配置分区
- 开始安装
- 设置root账户的密码
接下来,就是Linxu系统的安装过程了,可能需要等待5-10分钟。
- 重启
当Linux安装完成后,需要重启一下才能开始使用。
- 登录Linux系统
注意
在Linux系统中,登录系统时在命令行输入密码信息,为了保证安全性,密码时显示的(看似没有输入,实际已经输入了)。
# 网卡设置
服务器重启完成之后,我们可以通过Linux的命令ip addr
来查询Linux系统的IP地址,具体信息如下:
从图中可以看到,并没有获取到Linux系统的IP地址,是为什么呢?
这是由于启动服务器时未加载网卡,导致IP地址初始化失败造成的,那么接下来我们就需要修改Linux网络初始化配置,设定网卡在系统启动时进行初始化。
具体操作步骤如下:
- 修改网卡配置项
cd / # 进入Linux根目录
cd etc # 进入etc目录
cd sysconfig # 进入sysconfig目录
cd network-scripts # 进入network-scripts目录
vi ifcfg-eno16777736 # 编辑ifcfg-eno16777736文件
# 进入ifcfg-eno16777736文件后执行如下操作
# 按 i 键 ---> 进入编辑状态
# 按↑或者j键 ↓或者k键移动光标 ---> 将ONBOOT=no修改为ONBOOT=yes
# 按 ESC 键 ---> 退出编辑模式
# 输入 :wq 后,按 ENTER 键 ---> 保存并退出ifcfg-eno16777736文件
2
3
4
5
6
7
8
9
10
11
备注
在上述的操作中用到了Linux中的相关命令,目前大家不用深究,后面会详细讲解,当前大家只需要把这个文件的配置项ONBOOT
的值由no
修改为yes
即可。
- 重新启动虚拟机
重启之后,再次输入root的用户名密码,登录到Linux系统之后,可以通过指令ip addr
来查看IP地址。
# 安装SSH连接工具
# SSH连接工具介绍
Linux已经安装并且配置好了,下面我们就来学习Linux的基本操作指令,在开始之前,我们还需要再做一件事情,由于在企业中开发,Linux服务器一般都在远程的机房部署,当我们操作服务器时,也不会每次都跑到机房里面操作,而是会直接通过SSH连接工具连接Linux服务器进行操作。
SSH(Secure Shell),建立在应用层基础上的安全协议,常用的SSH连接工具有:
SSH工具 | Logo | 说明 |
---|---|---|
putty | ![]() | 免费, 界面简单, 功能单一 |
secureCRT | ![]() | 收费, 功能强大 |
xshell | ![]() | 收费版/免费版 |
finalshell | 免费, 功能强大, 界面效果好 (课程中采用) |
在课程资料中,提供了FinalShell的安装包
双击exe文件,进行正常的安装即可。
# 连接Linux
- 打开FinalShell
- 建立连接
# Linux目录结构
登录到Linux系统之后,我们需要先熟悉下Linux的目录结构,在Linux系统中,也是存在目录的概念的,但是Linux的目录结构和Windows的目录结构是存在比较多的差异的,在Windows目录下,是一个个盘符(C盘、D盘、E盘),目录时归属于某一个盘符的,Linux系统中的目录有以下特点:
- / 是所有目录的顶点 目录结构像一颗倒挂的树
**Linux和Windows*的目录结构对比:
Linux目录结构,如下:
Linux根目录 / 下各个目录的作用及含义说明:
编号 | 目录 | 含义 |
---|---|---|
1 | /bin | 存放二进制可执行文件 |
2 | /boot | 存放系统引导时使用的各种文件 |
3 | /dev | 存放设备文件 |
4 | /etc | 存放系统配置文件 |
5 | /home | 存放系统用户的文件 |
6 | /lib | 存放程序运行所需的共享库和内核模块 |
7 | /opt | 额外安装的可选应用程序包所放置的位置 |
8 | /root | 超级用户目录 |
9 | /sbin | 存放二进制可执行文件,只有root用户才能访问 |
10 | /tmp | 存放临时文件 |
11 | /usr | 存放系统应用程序 |
12 | /var | 存放运行时需要改变数据的文件,例如日志文件 |
# Linux常用命令
# Linux命令初体验
# 常用命令演示
在这一部分中,我们主要介绍几个常用的命令,带大家快速感受下Linux命令的操作方式,主要包含以下几个指令:
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
1 | ls [目录名] | list | 查看当前目录下的内容 |
2 | pwd | print work directory | 查看当前所在目录 |
3 | cd [目录名] | change directory | 切换目录 |
4 | touch [文件名] | touch | 如果文件不存在,创建文件 |
5 | mkdir [目录名] | make directory | 创建目录 |
6 | rm [文件名] | remove | 删除指定文件 |
接下来,我们快速来演示一下这些常用的指令。
- ls
指令解读
ls
:查看当前目录下的内容(文件及目录)ls /
:查看指定目录(/)下的内容
- pwd
指令解读
pwd
: 查看当前所在目录
- cd
指令解读
cd /
: 切换到根目录cd /root
: 切换到 /root 目录
- touch
指令解读
touch hello.txt
: 创建文件hello.txttouch 1.txt 2.txt 3.txt
: 一次性创建三个文件1.txt、2.txt、3.txt
- mkdir
指令解读
mkdir dir01
: 创建目录dir01mkdir dir02 dir03 dir04
: 一次性创建三个目录dir02、dir03、dir04
- rm
指令解读
rm hello.txt
: 删除文件(删除文件时,需要确认,输入y
,代表确定)
注意
在执行Linux命令时,如图提示信息显示为乱码,如下图所示,这是由于编码问题导致的,只需要修改Linux的编码即可,命令如下:
echo 'LANG="en_US.UTF-8"' >> /etc/profile
source /etc/profile
2
3
# Linux命令使用技巧
在使用Linux系统命令时,可以使用以下几个技巧:
- Tab键自动补全
- 连续两次Tab键,给出操作提示
- 使用↑↓箭头快速调出曾经使用过的命令
- 使用
clear
命令或者Ctrl + L
快捷键实现清屏
操作示例
- 执行指令时,对于操作的文件或目录,按一下Tab键会自动补全:
- 如果上述以**1.**开头的文件有多个,可以按两下Tab键,给出操作提示:
- 使用
clear
命令或者Ctrl + L
快捷键实现清屏:
清屏之后,界面就变得干净许多。
# Linux命令格式
command [-options] [parameter]
说明:
command: 命令名
[-options]: 选项,可用来对命令进行控制,也可以省略
[parameter]: 传给命令的参数,可以是零个、一个或者多个
注意:
[] 代表可选
命令名、选项、参数之间有空格进行分隔
2
3
4
5
6
7
8
9
10
操作示例:
# 文件目录操作命令
# ls
作用: 显示指定目录下的内容
语法: ls [-al] [dir]
说明:
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出
注意:
由于我们使用ls命令时经常需要加入-l选项,所以Linux为ls -l命令提供了一种简写方式,即ll
常见用法:
ls -al 查看当前目录的所有文件及目录详细信息
ls -al /etc 查看/etc目录下所有文件及目录详细信息
ll 查看当前目录文件及目录的详细信息
2
3
4
5
6
7
8
9
10
11
12
13
操作示例:
# cd
作用: 用于切换当前工作目录,即进入指定目录
语法: cd [dirName]
特殊说明:
~ 表示用户的home目录
. 表示目前所在的目录
.. 表示目前目录位置的上级目录
举例:
cd .. 切换到当前目录的上级目录
cd ~ 切换到用户的home目录
cd /usr/local 切换到/usr/local目录
2
3
4
5
6
7
8
9
10
11
12
用户的home目录
- root用户:
/root
- 非root用户:
/home/xxx
,xxx
代表用户名
操作示例:
提示
cd ..
切换到当前目录的上级目录,还可以通过cd ../..
来切换到上级目录的上级目录。
# cat
作用: 用于显示文件内容
语法: cat [-n] fileName
说明:
-n: 由1开始对所有输出的行数编号
举例:
cat /etc/profile 查看/etc目录下的profile文件内容
2
3
4
5
6
7
8
操作示例:
cat
指令会一次性查看文件的所有内容,如果文件内容比较多,这个时候查看起来就不是很方便,这个时候可以通过一个新指令more
。
# more
作用: 以分页的形式显示文件内容
语法: more fileName
操作说明:
回车键 向下滚动一行
空格键 向下滚动一屏
b 返回上一屏
q或者Ctrl+C 退出more
举例:
more /etc/profile 以分页方式显示/etc目录下的profile文件内容
2
3
4
5
6
7
8
9
10
11
操作示例:
当我们在查看一些比较大的文件时,我们可能需要经常查询文件尾部的数据信息,这个时候使用more
指令需要一直向下翻页,直到最后一页,比较繁琐。此时,我们可以借助另外一个指令tail
。
# tail
作用: 查看文件末尾的内容
语法: 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文件末尾内容并显示
2
3
4
5
6
7
8
9
10
操作示例
- 默认查询文件尾部10行记录
- 可以通过指定参数设置查询尾部指定行数的数据
- 动态读取文件尾部的数据
在窗口1中执行指令tail -f 1.txt
动态查看文件尾部数据,然后在顶部的标签中右键选择复制标签,打开新的窗口2,此时再新打开的窗口2中执行指令echo 1 >> 1.txt
,向1.txt文件尾部追加内容,然后我们就可以在窗口1中看到最新的文件尾部数据了。
如果不想再查看文件尾部的数据,可以直接使用快捷键Ctrl + C
,结束当前进程。
# mkdir
作用: 创建目录
语法: mkdir [-p] dirName
说明:
-p: 确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建
举例:
mkdir itcast 在当前目录下,建立一个名为itcast的子目录
mkdir -p itcast/test 在工作目录下的itcast目录中建立一个名为test的子目录,若itcast目录不存在,则建立一个
2
3
4
5
6
7
8
9
操作示例:
# rmdir
作用: 删除空目录
语法: rmdir [-p] dirName
说明:
-p: 当子目录被删除后使父目录为空目录的话,则一并删除
举例:
rmdir itcast 删除名为itcast的空目录
rmdir -p itcast/test 删除itcast目录中名为test的子目录,若test目录删除后itcast目录变为空目录,则也被删除
rmdir itcast* 删除名称以itcast开始的空目录
2
3
4
5
6
7
8
9
10
操作示例
- 删除空目录
- 删除非空目录
- 使用
*
通配符删除目录
*
: 是一个通配符,代表任意字符;
rmdir itcast*
: 删除以itcast开头的目录rmdir *itcast
: 删除以itcast结尾的目录
# rm
作用: 删除文件或者目录
语法: rm [-rf] name
说明:
-r: 将目录及目录中所有文件(目录)逐一删除,即递归删除
-f: 无需确认,直接删除
举例:
rm -r itcast/ 删除名为itcast的目录和目录中所有文件,删除前需确认
rm -rf itcast/ 无需确认,直接删除名为itcast的目录和目录中所有文件
rm -f hello.txt 无需确认,直接删除hello.txt文件
2
3
4
5
6
7
8
9
10
11
操作示例:
注意
对于rm -rf xxx
这样的指令,执行时一定特别慎重,确认无误后再进行删除,避免误删。
# 拷贝移动命令
# cp
作用: 用于复制文件或目录
语法: cp [-r] source dest
说明:
-r: 如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
举例:
cp hello.txt itcast/ 将hello.txt复制到itcast目录中
cp hello.txt ./hi.txt 将hello.txt复制到当前目录,并改名为hi.txt
cp -r itcast/ ./itheima/ 将itcast目录和目录下所有文件复制到itheima目录下
cp -r itcast/* ./itheima/ 将itcast目录下所有文件复制到itheima目录下
2
3
4
5
6
7
8
9
10
11
操作示例:
注意
如果拷贝的内容是目录,需要加上参数-r
# mv
作用: 为文件或目录改名、或将文件或目录移动到其它位置
语法: 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
mv itcast/ itheima/ 如果itheima目录存在,将itcast目录移动到itheima目录中
2
3
4
5
6
7
8
9
操作示例:
mv
命令既能改名,也可以移动,具体是改名还是移动,系统会根据我们输入的参数进行判定(如果第二个参数dest是一个已经存在的目录,则执行移动操作,否则就是改名)
# 打包压缩命令
作用: 对文件进行打包、解包、压缩、解压
语法: tar [-zcxvf] fileName [files]
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩
说明:
-z: z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
-c: c代表的是create,即创建新的包文件
-x: x代表的是extract,实现从包文件中还原文件
-v: v代表的是verbose,显示命令的执行过程
-f: f代表的是file,用于指定包文件的名称
举例:
打包
tar -cvf hello.tar ./* 将当前目录下所有文件打包,打包后的文件名为hello.tar
tar -zcvf hello.tar.gz ./* 将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
解包
tar -xvf hello.tar 将hello.tar文件进行解包,并将解包后的文件放在当前目录
tar -zxvf hello.tar.gz 将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录
tar -zxvf hello.tar.gz -C /usr/local 将hello.tar.gz文件进行解压,并将解压后的文件放在/usr/local目录
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
操作示例
- 打包
- 打包并压缩
- 解包
- 解压
解压到指定目录,需要加上参数-C
# 文本编辑命令
文本编辑的命令,主要包含两个vi
和vim
,两个命令的用法类似,本课主要讲解vim
的使用
# vi&vim介绍
作用:vi
命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似Windows中的记事本。
语法:vi fileName
说明:
vim
是从vi
发展来的一个功能更加强大的文本编辑工具,编辑文件时可以对文本内容进行着色,方便对文件进行编辑处理,所以vim
更加常用- 要想使用
vim
命令,需要我们自己完成安装,可以使用下面的命令来进行在线安装:yum install vim
# vim安装
命令:yum install vim
安装过程中,会有确认提示,此时输入y
,然后回车,继续安装:
# vim使用
作用:对文件内容进行编辑,vim
其实就是一个文本编辑器
语法:vim fileName
说明:
- 在使用
vim
命令编辑文件时,如果指定的文件存在则直接打开此文件,如果不存在则新建文件。 vim
在进行文本编辑时共分为三种模式:命令模式(Command mode)、插入模式(Insert mode)、底行模式(Last line mode),这三种模式之间可以互相切换,在使用vim
时一定要注意当前所处的是什么模式。
- 命令模式
- 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg、G)
- 通过
vim
命令打开文件后,默认进入命令模式 - 另外两种模式需要首先进入命令模式,才能彼此切换
命令模式指令 | 含义 |
---|---|
gg | 定位到文本内容的第一行 |
G | 定位到文本内容的最后一行 |
dd | 删除光标所在行的数据 |
ndd | 删除当前光标所在行及之后的n行数据 |
u | 撤销操作 |
shift+zz | 保存并退出 |
i 或 a 或 o | 进入插入模式 |
插入模式
- 插入模式可以对文件内容进行编辑
- 在命令模式下按下[
i
、a
、o
]任意一个键,就可以进入插入模式,进入插入模式后,下方会出现insert字样 - 在插入模式下按下ESC键,会回到命令模式
底行模式
- 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
- 在命令模式下按下[
:
、/
]任意一个按键,可以进入底行模式 - 通过 / 方式进入底行模式后,可以对文件内容进行查找
- 通过 : 方式进入底行模式后,可以输入
wq
(保存并退出)、q!
(不保存退出)、set nu
(显示行号)
底行模式命令 | 含义 |
---|---|
:wq | 保存并退出 |
:q! | 不保存退出 |
:set nu | 显示行号 |
:set nonu | 取消行号显示 |
:n | 定位到第n行, 如 :10 就是定位到第10行 |
操作示例:
# 查找命令
# find
作用: 在指定目录下查找文件
语法: find dirName -option fileName
举例:
find . –name "*.java" 在当前目录及其子目录下查找.java结尾文件
find /itcast -name "*.java" 在/itcast目录及其子目录下查找.java结尾的文件
2
3
4
5
操作示例:
# grep
作用: 从指定文件中查找指定的文本内容
语法: grep word fileName
举例:
grep Hello HelloWorld.java 查找HelloWorld.java文件中出现的Hello字符串的位置
grep hello *.java 查找当前目录中所有.java结尾的文件中包含hello字符串的位置
2
3
4
5
操作示例:
# 常用软件安装
# 软件安装方式
在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:
安装方式 | 特点 |
---|---|
二进制发布包安装 | 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 |
rpm安装 | 软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,==不能自行解决库依赖问题== |
yum安装 | 一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题(安装过程需要联网) |
源码编译安装 | 软件以源码工程的形式发布,需要自己编译打包 |
# 安装JDK
上述我们介绍了Linux系统软件安装的四种形式,接下来我们就通过第一种(二进制发布包)的形式来安装JDK。JDK对应的二进制发布包,在课程资料中已经提供,如下:
JDK具体安装步骤如下:
- 上传安装包
使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux
由于在进行文件上传时,选择的上传目录为根目录 /,上传完毕后,我们执行指令 cd /
切换到根目录下,查看上传的安装包。
- 解压安装包
执行如下指令,将上传的压缩包解压,通过-C
参数指定解压文件存放目录为/usr/local
。
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
- 配置环境变量
使用vim
命令修改/etc/profile
文件,在文件末尾添加如下配置
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
2
具体操作指令如下:
1). 编辑/etc/profile文件,进入命令模式
vim /etc/profile
2). 在命令模式中,输入指令 G , 切换到文件最后
G
3). 在命令模式中输入 i/a/o 进入插入模式,然后切换到文件最后一行
i
4). 将上述的配置拷贝到文件中
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
5). 从插入模式,切换到指令模式
ESC
6). 按:进入底行模式,然后输入wq,回车保存
:wq
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 重新加载profile文件
为了使更改的配置立即生效,需要重新加载profile文件,执行命令:
source /etc/profile
- 检查JDK是否安装成功
java -version
# 安装Tomcat
# Tomcat安装
Tomcat的安装和上述JDK的安装采用相同的方式,都是使用二进制发布包的形式进行安装,在我们的课程资料中,也准备了Tomcat的安装包:
具体安装步骤如下:
- 上传安装包
使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux(与前面上传JDK步骤一致)
- 解压安装包
将上传的Tomcat安装包解压到指定目录/usr/local
,执行命令:
tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local
- 启动Tomcat
进入Tomcat的bin目录启动服务,执行命令为:
cd /usr/local/apache-tomcat-8.0.32
cd bin
sh startup.sh # 或者使用 ./startup.sh
2
3
4
5
# 查看Tomcat进程
上述我们启动Tomcat后,并不确定Tomcat是否正常运行,那么我们需要验证Tomcat启动是否成功,有多种方式,这里介绍两种常见的方式:
- 查看Tomcat启动日志
Tomcat的启动日志输出在安装目录的logs目录下,Tomcat的启动及运行日志文件名为catalina.out,所以我们查看Tomcat启动日志,主要可以通过两条指令,如:
# 第一种:分页查询Tomcat的日志信息
more /usr/local/apache-tomcat-8.0.32/logs/catalina.out
# 第二种:查询日志文件尾部的50行记录
tail -50 /usr/local/apache-tomcat-8.0.32/logs/catalina.out
2
3
4
5
只要Tomcat在启动过程中,日志中没有报错输出,基本可以判定Tomcat启动成功了。
- 查询系统进程
我们也可通过Linux系统的查看进程指令,来判定Tomcat进程是否存在,从而判定Tomcat是否启动。执行如下指令:
ps -ef | grep tomcat
说明
ps
命令是Linux下非常强大的进程查看命令,通过ps -ef
可以查看当前运行的所有进程的详细信息- | 在Linux中称为管道符,可以将前一个命令的输出结果作为后一个命令的输入
- 使用
ps
命令查看进程时,经常需要配合管道符合查找命令grep
一起使用,来查看特定进程
# CentOS防火墙操作
前面我们已经通过日志的方式及查看系统进程的方式,验证了Tomcat服务已经正常启动,接下来我们就可以尝试访问一下。访问地址:[http://192.168.182.129:8080],发现无法访问。
原因在于CentOS系统的防火墙,系统安装完毕后,系统启动时,防火墙自动启动,防火墙拦截了所有端口的访问,接下来我们就需要学习一下,如何操作防火墙,具体指令如下:
操作 | 指令 | 备注 |
---|---|---|
查看防火墙状态 | systemctl status firewalld / firewall-cmd --state | |
暂时关闭防火墙 | systemctl stop firewalld | |
永久关闭防火墙(禁用开机自启) | systemctl disable firewalld | ==下次启动,才生效== |
暂时开启防火墙 | systemctl start firewalld | |
永久开启防火墙(启用开机自启) | systemctl enable 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 |
注意
systemctl
是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作firewall-cmd
是Linux中专门用于控制防火墙的命令- 为了保证系统安全,服务器的防火墙一般不建议关闭
现在我们需要访问Tomcat,就可以采取两种类型的操作:
- 关闭防火墙
执行指令:
systemctl stop firewalld
关闭之后,再次访问Tomcat,就可以访问了。
注意
直接关闭防火墙是不建议的,因为这样会造成系统不安全。
- 开放Tomcat的端口号8080
执行指令:
# 先开启系统防火墙
systemctl start firewalld
# 再开放8080端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 最后重新加载防火墙
firewall-cmd --reload
2
3
4
5
6
执行上述操作之后,就开放了当前系统中的8080端口,再次访问Tomcat
# 停止Tomcat服务
在Linux系统中,停止Tomcat服务的方式主要有两种:
- 运行Tomcat提供的脚本文件
在Tomcat安装目录下有一个bin目录,这个目录中存放的是Tomcat的运行脚本文件,其中一个脚本就是用于停止Tomcat服务的。
我们可以切换到bin目录下,执行如下指令,来停止Tomcat服务:
sh shutdown.sh # 或者 ./shutdown.sh
- 结束Tomcat进程
我们还可以通过ps -ef | grep tomcat
指令查看Tomcat进程的信息,从进程信息中获取Tomcat服务的进程号,然后通过kill -9
的形式,来杀死Tomcat进程。
通过上述指令,我们可以获取到Tomcat的进程号为75615。接下来,我们就可以通过指令来杀死Tomcat的进程:
kill -9 75615
执行上述指令后,在访问Linux系统中的Tomcat,就无法访问了。
说明
kill
命令时Linux提供的用于结束进程的命令,-9
表示强制结束。
注意
虽然上述讲解的两种方式,都可以停止Tomcat服务,但是推荐使用第一种方式(./shutdown.sh
)执行脚本来关闭Tomcat服务,如果通过第一种方式无法停止Tomcat,再考虑使用第二种方式。
# 安装MySQL
# MySQL安装
对于MySQL数据库的安装,我们将使用前面讲解的第二种安装方式rpm进行安装,下面我们首先来了解一下什么是rpm?
RPM: 全称Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。
要通过rpm,进行MySQL数据库的安装,主要的步骤如下:
- 检测当前系统是否安装过MySQL相关数据库
需要通过rpm相关指令,来查询当前系统中是否存在已安装的MySQL软件包,执行指令如下:
rpm -qa # 查询当前系统中安装的所有软件
rpm -qa | grep mysql # 查询当前系统中安装的名称带mysql关键字的软件
rpm -qa | grep mariadb # 查询当前系统中安装的名称带mariadb关键字的软件
2
3
通过rpm -qa
查询到系统通过rpm
安装的所有软件,输出很多,不方便查看,可以通过管道符 | 配合grep
指令进行过滤查询。
通过查询,发现在当前系统中存在mariadb数据库,是CentOS 7中自带的,由于这个数据库和我们要安装的MySQL是冲突的,因此要保证MySQL安装成功,需要卸载mariadb数据库。
- 卸载现有的mariadb数据库
在rpm中,卸载软件的语法为:
rpm -e --nodeps 软件名称
接下来,我们就可以通过指令,卸载mariadb,具体指令为:
rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64
卸载指令执行完毕,再次查询mariadb,查不到就代表卸载成功了。
- 上传MySQL安装包
将课程资料中的MySQL安装包,上传到Liunx系统的根目录 / 下
- 将MySQL安装包解压到*/usr/local/mysql*目录下
执行如下指令:
mkdir /usr/local/mysql
tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql
2
- 按照顺序依次安装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
2
3
4
5
6
7
说明
- rpm安装方式,不会自动处理依赖关系,需要我们自行处理,因此对于上面的rpm包的安装顺序不能随意修改
- 安装过程中提示缺少net-tools依赖,需使用yum安装(yum是一种在线安装方式,需要保证联网)
- 可以通过指令(
yum update
)升级现有软件及系统内核
# MySQL启动
MySQL安装完成后,会自动注册为系统服务,服务名为mysqld。那么,接下来就可以通过systemctl
指令来查看mysql的状态、启动mysql、停止mysql。
systemctl status mysqld # 查看mysql服务状态
systemctl start mysqld # 启动mysql服务
systemctl stop mysqld # 停止mysql服务
2
3
说明
和Windows一样,可以设置开机时启动mysql服务,避免每次重启虚拟机后手动启动mysql,指令如下:
systemctl enable mysqld # 设置mysql服务开启自启
下面我们就可以通过下面两种方式,来确定mysql是否启动成功:
# 方式一
netstat -tunlp # 查看已经启动的服务
netstat -tunlp | grep mysql # 查看mysql的服务信息
# 方式二
ps -ef | grep mysql # 查看mysql进程
2
3
4
5
6
备注
netstat
命令用于打印Linux中网络系统的状态信息,通过它的执行可以得知整个Linux系统的网络情况,该指令参数说明如下:-l
或--listening
: 显示监控中的服务器的Socket;-n
或--numeric
: 直接使用ip地址,而不通过域名服务器;-p
或--programs
: 显示正则使用Socket的程序识别码和程序名称;-t
或--tcp
: 显示TCP传输协议的连线状况;-u
或--udp
: 显示UDP传输协议的连线状况;
ps
命令用于查看Linux中的进程数据。
# 登录MySQL
MySQL启动后,就可以测试一下登录操作,但是想要登录MySQL就需要一个访问密码,刚才安装MySQL过程中,我们并没有看到让设置访问密码的地方,那么这个密码是什么呢?
实际上,对于rpm安装的mysql,在mysql第一次启动时,会自动帮助我们生成root用户的访问密码,并且输出到mysql的日志文件中/var/log/mysqld.log
中,我们可以通过查看这个日志文件,来获取访问密码。
指令:
cat /var/log/mysqld.log
这种方式,可以查看文件的所有内容,但是文件比较大时,不方便。下面我们可以通过管道符 | 配合grep
指令来对数据进行过滤
cat /var/log/mysqld.log | grep password
可以通过上面的指令,查询日志文件中包含password
关键字的行信息。
- 登录MySQL
获取到root用户的临时密码后,就可以登录mysql数据库了,然后修改root密码,最后为root设置一个新的密码。而且我们还需要开启root用户远程访问该数据库的权限,这样,我们就可以在windows上通过图形化工具访问mysql数据库。
指令如下:
# 1. 登录mysql(复制日志中的临时密码登录)
mysql -uroot -p
# 2. 修改密码
set global validate_password_length=4; # 设置密码长度最低四位
set global validate_password_policy=LOW; # 设置密码安全等级低,便于修改root用户密码
set password = password('root'); # 设置密码为root
# 3. 开启访问权限
grant all on *.* to 'root'@'%' identified by 'root';
flush privileges;
2
3
4
5
6
7
8
9
10
11
操作完上述指令,数据库root用户的密码以及远程登录访问我们就配置好了,接下来可以执行exit/quit
退出mysql,再次通过新密码进行登录。
当然也可以在windows系统通过图形化管理工具来连接Linux上的MySQL服务。
注意
要想在windows上能够访问MySQL,还需要开放防火墙的3306端口,执行指令如下:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
2
# 安装lrzsz
lrzsz是用于在linux系统中文件上传下载的工具软件,当然其不是必须的,我们使用的很多工具,比如FinalShell可以很方便的完成上传下载,之所以学习它,是因为连接Linux的工具很多,而FinalShell只是其中一种,还有很多远程连接工具并不具有上传下载的功能,这个时候就需要依赖lrzsz这个软件了。
注意
lrzsz这个工具也并不适用/兼容所有的远程连接工具,比如putty中就无法使用lrzsz。
对于lrzsz的安装,我们通过第三种软件安装方式yum
来进行安装,这里,先对yum
做一个简单介绍。
YUM: (Yellow dog Updater, Modified),是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无需繁琐的一次次下载、安装。
安装lrzsz步骤如下:
- 搜索lrzsz安装包
yum list lrzsz
- 在线安装lrzsz
yum install -y lrzsz
- 测试
在命令行中输入rz
,就会自动打开一个文件选择窗口,然后选择要上传的文件即可
yum扩展
如果在不更改软件来源的情况下,是需要联网才能使用
yum
的,那么我们安装的软件到底是从哪儿下载的呢?这里就涉及到一个概念:yum源。可以通过一个指令
yum repolist
,来检查当前的yum源。
从图中,可以看到我们安装的CentOS 7采用的是北京邮电大学的yum源。
- 网络yum源配置文件位于
/etc/yum.repos.d/
目录下,文件扩展名为 .repo。
可以看到,该目录下有6个yum配置文件,通常情况下CentOS-Base.repo文件生效。
将北京邮电大学yum源修改为阿里云的
- 先通过
yum install -y wget
,安装wget
工具 - 备份默认的北邮yum源,执行指令:
cd /etc/yum.repos.d/ # 切换目录 mkdir backup # 创建备份目录 mv *.repo backup/ # 移动现有的yum源文件到备份目录
1
2
3- 下载阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
1- 执行命令,重新生成cache
yum clean all yum makecache
1
2- 再次查看yum源
- 先通过
之后,我们通过yum
指令安装软件,就会从阿里云下载。
# 项目部署
之前我们就讲到,作为服务端开发工程师我们学习Linux系统的目的就是将我们开发的项目部署到Linux系统中,那么接下来的章节,我们就通过两种方式,来演示一下项目如何部署。这两种方式分别是:
- 手动部署
- 基于shell脚本自动部署
# 手动部署项目
- 在Idea中开发SpringBoot项目并打成jar包
项目是一个很简单的springboot项目,可以自己开发一个,我们使用之前开发的一个springboot-08-ssm项目,结构如下:
可以在本地Idea中先启动当前的工程,然后访问一下,看看工程是否正常访问。
执行Maven的package
指令,进行打包操作,将当前的SpringBoot项目,打成一个jar包
- 将jar包上传到Linux服务器
上传成功后,在/usr/local/app
目录下就有对应的jar包了。
- 同步数据库
由于springboot-08-ssm需要访问数据库,在Linux服务器上我们新装了MySQL服务,因此我们要将springboot-08-ssm工程使用的数据库给同步到Linux服务器上的数据库中。
同步数据库的操作我们可以通过图形化管理工具进行。
首先,需要在linux服务器的MySQL中新建数据库
然后,将我们本机MySQL中的ssm_db
数据库中的数据备份为一个SQL脚本
最后,就要在Linux服务器的MySQL新建的ssm_db
库中将数据恢复。
- 启动SpringBoot程序
现在我们只需要运行jar包就可以了,在运行jar前,特别注意,项目中的application.yml文件中配置的数据库的地址、用户名、密码是否和linux服务器上安装的MySQL数据库匹配,如不匹配,需要修改配置文件,再次打包上传。
java -jar springboot-08-ssm-0.0.1-SNAPSHOT.jar
- 检查防火墙,确保80端口对外开放,因为我们项目配置的是80端口,再次访问SpringBoot项目
firewall-cmd --zone=public --list-ports
如果未开放80端口,需要通过指令放开。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
2
- 访问测试
- 后台运行项目
虽然我们的项目部署成功了,并且可以访问,但是依然存在问题,就是当前我们的项目启动时将我们的窗口完全占用了,也即是霸屏启动,如果我们将这个窗口关掉或者使用了Ctrl + C
组合键,项目服务就访问不到了。
目前程序运行的问题
- 线上程序不会采用控制台霸屏的形式运行程序,而是要将程序运行在后台
- 线上程序不会将日志输出到控制台,而是输出到日志文件中,方便运维查看
后台运行程序
要想我们部署的项目在后台运行,就需要用到Linux中的一个命令nohup
,接下来我们就来学习下nohup
命令的使用
nohup
命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行 语法格式:nohup Command [ Arg ... ] [&]
参数说明:
Command
: 要执行的命令Arg
: 一些参数,可以指定输出文件&
: 让命令在后台运行 举例:nohup java -jar boot.jar &> hello.log &
,该指令的含义为:后台运行java -jar
命令,并将日志输出到hello.log文件
经过上面的介绍,希望我们部署的项目在后台运行,就可以使用下面的指令:
nohup java -jar springboot-08-ssm-0.0.1-SNAPSHOT.jar &> hello.log &
这样我们的项目就启动成功了,可以通过ps
指令,查看系统进程
同时也可再次访问项目,查看服务器是否可用。
- 停止SpringBoot项目
# 基于Shell脚本自动部署
前面介绍的项目部署是手动部署,也就是部署过程中的每一步操作都需要我们手动操作,接下来,我们再简单讲解一下自动部署,从而来简化项目部署的操作,那么我们先来整体了解一下项目自动部署的流程及操作步骤。
操作步骤如下:
- 在Gitee上创建远程仓库,并将本地的项目代码推送到远程仓库
- 在Linux中安装Git,克隆代码
- 在Linux中安装Maven
- 编写Shell脚本(拉取代码、编译、打包、启动)
- 为用户授予执行Shell脚本的权限
- 执行Shell脚本
# 推送代码导远程仓库
该操作大家可以参考之前讲解的Git,来完成springboot-08-ssm工程代码的推送即可。
- 创建远程仓库
- 将springboot-08-ssm代码提交并推送到远程仓库
# Git操作
- 在Linux上安装Git
yum list git # 列出git安装包
yum install -y git # 在线安装git
2
通过上述指令,安装git后,可以通过git --version
来验证git是否安装成功。
- 使用Git克隆代码
cd /usr/local/app/
git clone https://gitee.com/ainsn/springboot-08-ssm.git
2
# 安装Maven
因为我们的工程师Maven工程,要想进行项目编译打包,需要用到maven的指令,因此需要安装maven,具体操作步骤如下:
- 将课程资料中的maven安装包上传到Linux服务器上,并解压到
/usr/local
目录下
- 在
/etc/profile
配置文件中配置环境变量
vim /etc/profile
# 修改配置文件,进入命令模式,按G切换到最后一行,按a/i/o进入插入模式,然后在最后加入如下内容
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
# 然后按ESC进入命令模式,输入 :wq 保存并退出
2
3
4
5
保存退出后,配置是没有生效的,要想让配置的环境变量生效,还要执行如下指令:
source /etc/profile
- 修改maven的settings.xml配置文件,配置本地仓库地址
cd /usr/local/apache-maven-3.5.4/conf # 切换目录
vim settings.xml # 编辑settings.xml配置文件
2
在settings.xml配置文件中配置本地仓库路径:
<localRepository>/usr/local/repo</localRepository>
然后在settings.xml中的<mirrors>
标签中,配置阿里云的私服:
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
2
3
4
5
6
# Shell脚本准备
Shell脚本(shell script),是一种Linux系统中的脚本程序,使用Shell脚本编程跟JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器即可。
对于Shell脚本编写不作为本课程的重点内容,直接使用课程资料中的脚本文件bootStart.sh即可。
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=springboot-08-ssm-0.0.1-SNAPSHOT
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/app/springboot-08-ssm
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar springboot-08-ssm-0.0.1-SNAPSHOT.jar &> app.log &
echo 项目启动完成
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Linux权限
上面我们已经把Shell脚本准备好了,但是Shell脚本要想正常执行,还需要给其分配执行权限。由于Linux系统是一个多用户操作系统,并且针对每一个用户,Linux会严格的控制操作权限,接下来,我们就需要介绍一下Linux系统的权限控制。
chmod
(英文全拼: *change mode):该命令是控制用户对文件权限的命令- Linux中的权限分为三种:读(r)、写(w)、执行(x)
- Linux文件权限分为三级:文件所有者(Owner)、用户组(Group)、其他用户(Other Users)
- 只有文件的所有者和超级用户可以修改文件或目录权限
- 要执行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 # 为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
2
3
三个数字分别代表不同用户的权限
- 第1位表示文件拥有者的权限
- 第2位表示同组用户的权限
- 第3位表示其他用户的权限
# 授权并执行脚本
在测试阶段,可以给所有人都赋予执行该脚本的权限,指令如下:
chmod 777 bootStart.sh
权限解读
- 第一个7,代表当前文件所有者root用户,对该文件具有读写执行权限
- 第二个7,代表当前文件所有者所属组的用户,对改文件具有读写执行权限
- 第三个7,代表其他用户,对改文件具有读写执行权限
执行bootStart.sh脚本:
注意
执行maven指令打包时,第一次执行耗时较长,原因是需要到阿里云仓库下载工程依赖的jar包和插件。
启动完成之后,我们可以查看java进程:
# 设置Linux服务器静态IP
当前安装的linux系统,安装后并没有配置IP地址,默认的IP地址是动态获取的,那么如果我们使用该Linux服务器部署项目,IP动态获取会导致诸多不变,因此我们一般需要把IP地址设置为静态的。
- 设置静态IP
需要修改/etc/sysconfig/network-scripts/ifcfg-eno16777736
配置文件,内容如下:
TYPE=Ethernet
BOOTPROTO=static # 将dhcp修改为static
DEFROUTE=yes
IPADDR="192.168.182.127" # 设置静态ip
NETMASK="255.255.255.0" # 设置子网掩码
GATEWAY="192.168.182.2" # 设置网关
DNS1="192.168.182.2" # 设置DNS服务器
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=3aae844c-6fd1-4c57-b25d-178fc502e4f5
DEVICE=eno16777736
ONBOOT=yes
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
上述我们所设置的网段182,并不是随意指定的,需要和我们虚拟网络编辑器中的NAT模式配置的网关保持一致。
- 重启网络服务
IP地址修改后,需要重启网络服务,执行指令:
systemctl restart network
注意
重启完网络服务后IP地址就发生了改变,此时FinalShell已经连接不上Linux系统,需要创建一个新连接才能连接Linux。
再次连接上Linux后,我们查看IP地址,就可以看到我们所设置的静态IP了。