一,购买并配置阿里云
购买云服务(最接近公司环境)
- 有经济来源的话,可以购买阿里云服务器,因为这才是最近接公司中原生环境的
- 云服务器就是一个远程电脑,服务器一般不会关机!
- 虚拟机安装后占用空间,也会有些卡顿,我们作为程序员其实可以选择购买一台自己的服务器,这样的话更加接近真实线上工作
1.安全组配置
- 首先我们需要设置云服务器的安全组,在阿里云上使用云服务器,我们除了需要打开Linux防火墙的对应端口之外,我们还需要在阿里云控制面板上设置对应的安全组,否则即使我们设置Linux防火墙打开了端口,我们还是不能从外界访问服务器上的资源;设置安全组也就是在开放端口号,保证外界可以访问
2.获取公网IP+重置实例密码
-
除了设置安全组以外,我们还需要获取服务器的公网IP地址,并且重置服务器登陆密码,这样我们就可以在本地进行远程登录了
-
获取公网IP地址
-
-
修改自己的登录密码
3.安装xshell+winscp
-
获取了公网IP+重置了实例登陆密码之后我们就可以去本地使用Xshell远程连接我们的云服务器了,建议直接使用360一键下载,Xshell是用于我们在本地远程连接服务器的工具
-
除了下载xshell以外,我们还需要下载一个工具XFTP,这是配合winscp使用的文件上传工具,都直接去360下载安装即可,不需要自己再额外的去找,浪费时间
-
进行一些基础配置
ctrl + 滚轮 可以放大字体
4.搭建环境
-
傻瓜式(宝塔面板)
包套面板的安装教学:https://www.bt.cn/
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
下载完毕之后,就可以得到一个地址:宝塔的管理面板!
假如不知道下面的东西的话可以输命令/etc/init.d/bt default
- url:http://47.98.198.119:8888/a9e8fd82/
- username:rnqm1ocj
- password:cc044bc6
部署的软件
这里就是一个端口开启的页面
放入网站进行访问!
比如tomcat就可以注解方法webapps目录下!
特殊的网站:开源项目,就按照自己的操作来
网站如果访问测试失效,就一定是防火墙,(Linux服务器,阿里云安全组面板!)
war 直接丢到tomcat即可
jar直接使用java -jar执行即可
-
命令式(原生)
二,学习简介
1.为什么要学Linux
- 通过前面的学习,Java这条路我们已经学习了JavaSE、MySQL、前端(HTML、CSS、JS)、JavaWeb、SSM框架、spring boot、Vue、spring cloud,还需要学习MybatisPlus和Git的使用
- 后面需要学习的消息队列(kafka、RabbitMQ、RockeetMQ)、缓存(Redis)、搜索引擎(ElasticSearch)、集群分布式都不是一台电脑就能够跑起来的,而是需要多台计算机合作运行,所以我们需要买一些服务器,而这些服务器都在云端,所以我们根本不需要安装可视化界面,可以直接安装Linux OS,在本地使用命令行对远程的服务器进行管理和使用
- 所以学习Linux成了必须
2.后面怎么学习
- 整个学习过程使用CentOS7进行学习
- 注意:CentOS6和CentOS7的区别很大,很多命令都不一样了
- Linux一切皆文件,对于文件的操作就3个:读+写+权限
- 后期学习步骤
- 认识Linux
- 基本的命令学习【重点,文件操作、目录管理、文件属性、vim编辑器、账号管理、磁盘管理等】
- 软件的安装和部署【安装Java、tomcat、docker…】(后面要学习的Redis和Docker都需要使用到Linux,所以Linux很重要)
三,Linux入门概述
1.为什么要学习Linux
- linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情
- 用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中,并不意味着linux就没有用武之地了。在服务器端,在开发领域linux倒是越来越受欢迎(许多大型的项目都是部署在Linux服务器上的),很多程序员都觉得不懂点linux都觉得不好意思,linux在开源社区的地位依然岿然不动
- 尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛了,所以不得不学习!
2.Linux简介
- Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的
- Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统
- Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议,它支持 32 位和 64 位硬件,Linux 继承了Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统
3.Linux 发行版
-
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包
-
Kali linux:安全渗透测试使用!(有兴趣做安全的同学可以了解一下!
-
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
-
社会的生存法则;优胜劣汰!
4.Linux 应用领域
-
今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL +PHP)组合
-
目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎
-
巴西联邦政府由于支持 Linux 而世界闻名
-
有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果
-
印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux
-
中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux
-
在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如:Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex
-
葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件
-
法国和德国同样开始逐步采用 Linux
-
5.Linux vs Windows
- 注意:服务器是不安装图形界面的,所以我们需要基于命令行进行学习
四,开机和关机以及基本目录结构介绍
1.开机登录
-
开机会启动许多程序。它们在Windows叫做"服务"(service,在Windows中一开机就被自动开启运行提供基础服务的进程,在Windows中称为服务),在Linux就叫做"守护进程"(daemon,在Linux也有需要一开机就开启用来提供基础服务的进程,在Linux中称为守护进程)
-
即在Linux中服务不叫服务,叫守护进程
-
开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!
-
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录【即远程登陆,就是我们使用xshell进行登陆】
- 图形界面登录【本地安装了图形化界面的虚拟机中进行的登陆】
-
最高权限账户为 root,可以操作一切!
2.关机
-
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机
-
关机指令为:
shutdown
- sync # 将数据由内存同步到硬盘中,在进行关机之前最好执行一次该命令,防止数据丢失 - shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机: - shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机 - shutdown –h now # 立马关机 - shutdown –h 20:25 # 系统会在今天20:25关机 ********** 有趣的定时关机操作 ********** - shutdown –h +10 # 十分钟后关机 - shutdown –r now # 系统立马重启 - shutdown –r +10 # 系统十分钟后重启 - reboot # 就是重启,等同于 shutdown –r now - halt # 关闭系统,等同于shutdown –h now 和 poweroff
-
注意:在Linux OS中,只要执行了命令之后没有报错,就代表这条命令执行成功
3.系统目录结构
记住两句话
- 在Linux中一切皆文件【所以我们只需要学习在Linux中怎么读写文件,以及怎么进行文件的权限管理】
- 根目录为 / ,所有的文件都挂载在这个节点下
在登陆远程服务器之后我们可以执行如下命令ls /
就可以查看根目录的所有文件
-
在Linux中,文件系统的结构是树状的
-
以下是对这些目录的解释:
①一些不要将东西存进去,也不要将里面的东西删除的文件夹
- /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令【不能删除】
- /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件【不要动它,即不要将东西存进去,也不要将里面的东西删除,否则可能导致Linux不能正常地启动】
- /srv:该目录存放一些服务启动之后需要提取的数据
- /lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件【和/boot使用准则一样,不要动它】
- /usr/src: 内核源代码默认的放置目录【和/boot使用准则一样,不要动它
②一些用于挂载外部资源的文件夹(资源挂载之后也就可以像访问本地文件夹一样去这些文件夹中找到对应的挂载资源,访问其中的数据)
- /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
- /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了(我们后面会把一些本地文件挂载在这个目录下)【就是将另外一个文件系统作为一个文件放在这个文件夹下,我们就可以对其进行正常的访问了】
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下,即我们要访问设备中的数据就要到这个文件夹下面找【所以挂载外部的东西我们可以放在/dev、/mnt和/media下面,那么我们要访问挂载的设备中的数据就要到这个文件夹下面找】
③一些我们最常用的文件夹
-
/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录【比如tomcat的配置文件,Java的配置文件,我们都要存放在这个文件夹下】
-
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
-
/opt:这是给主机额外安装软件所摆放的目录,比如你安装一个ORACLE数据库则就可以放到这个目录下,它默认是空的【Linux将安装系统软件的目录规定在这个文件夹下】
-
/root:该目录为系统管理员,也称作超级权限者的用户主目录【即root用户的/home目录下对应的文件夹,但是由于root用户权限最大,所以为了安全将它独立了出来】
-
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录【Linux将安装应用软件的目录规定在这个文件夹下】
-
/tmp:这个目录是用来存放一些临时文件的,即用来存放一些用完即丢的文件,可以放在这个目录下,比如应用的安装包!
-
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件
-
/www:存放服务器网站相关的资源,环境,网站的项目【这个是服务器里面才会有的,本地电脑安装的Linux OS是没有的,在安装了服务器需要的东西之后才会有这个文件夹】
④一些我们不常用/不会使用到的文件夹
- /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了关机之前的文件,用于重启之后恢复(存放突然关机的一些文件)
- /proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息(不用管)
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
- /usr/bin: 系统用户使用的应用程序【即这是/usr文件夹下面的一个子文件夹】
- /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。【这个和上面的/usr/bin一样,只是这个文件夹是root用户使用的】
- /sys:这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除【相当于Windows中的temp文件夹】
五,目录相关命令学习
目录管理
1.绝对路径、相对路径
-
绝对路径:路径的全称(从盘符开始到文件名称为止):C:\ProgramData\360safe\xxx.xx
-
相对路径:文件相对于当前用户所在位置的相对位置(从当前位置开始到文件名称为止),比如说我们现在已经在 360safe 目录下,那我们要访问的 xxx.xx 文件,对应我们的相对位置就是 /xxx.xx
cd : 切换目录命令! [change directory] ./ : 当前目录 cd .. : 返回上一级目录
2.ls (列出目录)
-
就是查看当前所在的文件夹下,有哪些文件;由于Linux没有图形化界面,所以我们常常使用ls命令查看当前目录下的子文件夹和文件
-
在Linux中 ls 可能是最常被使用的 !
-
-a参数:all ,查看全部的文件,包括隐藏文件
-
-l 参数 列出所有的文件,包含文件的属性和权限,不包含隐藏文件
-
所有Linux可以组合使用!
3.cd 命令 切换目录
- cd 目录名
- 目录名分为两种:①Linux中绝对路径都是以 / 开头;②相对路径,对于当前目录该如何寻找目标文件,比如从当前位置回到上一层目录,然后进入其中某一个文件夹: … /…/)
- 大家只要多尝试使用,就会了
4.pwd 显示当前用所在的目录
5.mkdir 创建一个目录
6.rmdir 删除目录
- 注意:rmdir只能移除目录,不能移除目录中的文件,要删除文件需要使用命令rm
- rmdir :移除目录/文件夹 [remove directory]
- rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 -p 参数即可
7.cp (复制文件或者目录)
- copy:拷贝
- 语法:cp 原来的地方 新的地方!
8.rm (移除文件或者目录)
-
相较于只能移除文件夹得rmdir命令,rm更加强大,可以直接删除指的得文件夹以及文件夹中的文件
-
-f 忽略不存在的文件,不会出现警告,强制删除!
-
-r 递归删除目录!
-
-i 互动,删除得时候询问你是否删除
rm -rf / #rm删除文件或文件夹,-r递归删除目录,-f删除的时候不弹出警告信息 ,/根目录 # 系统中所有的文件就被删除了,删库跑路就是这么操作的! # 不要自己去执行 !!!
-
我们平时使用rm命令,都是删除一些我们不需要的文件和文件夹
9.mv 移动文件或者文件夹&重命名文件或文件夹
- 命令mv有两个功能:①移动文件 ②重命名文件
- -f 强制执行,不询问
- -u 只替换已经更新过的文件,即复制的双方A文件夹和B文件夹本来就是从A复制得到的B,使用-u参数就可以在下一次复制的时候只替换A中修改了的文件到B文件夹中,减少了没有修改的文件替换,节省了拷贝时间
- 我们可以想到使用mv命令进行文件或文件夹的重命名的逻辑其实就是创建新名称文件夹ming2,再将ming1中的文件全部移动到ming2中,再将thhh2删除
- 即重命名的逻辑就是创建新的,复制旧的到新的里面,删除旧的
10.小结
-
-f:force 强制执行,不询问
-
-p:递归执行
-
命令小结
1.绝对路径、相对路径 - cd : 切换目录命令! [change directory] - ./ : 当前目录 - cd .. : 返回上一级目录 2.ls (列出目录) - -a参数:all ,查看全部的文件,包括隐藏文件 - -l 参数 列出所有的文件,包含文件的属性和权限,不包含隐藏文件 3.cd 命令 切换目录 - cd 目录名 - 目录名分为两种:①Linux中**绝对路径都是以 / 开头**;②相对路径,**对于当前目录该如何寻找目标文件**,比如从当前位置回到上一层目录,然后进入其中某一个文件夹: .. /../) 4.pwd 显示当前用户所在的目录! 5.mkdir 创建一个目录 6.rmdir 删除目录 - 注意:rmdir只能移除目录,不能移除目录中的文件,要删除文件需要使用命令rm - rmdir :移除目录/文件夹 [remove directory] - rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 -p 参数即可 7.cp (复制文件或者目录) - copy:拷贝 - 语法:cp 原来的地方 新的地方! 8.rm (移除文件或者目录) - 相较于只能移除文件夹得rmdir命令,rm更加强大,可以直接删除指的得文件夹以及文件夹中的文件 - -f 忽略不存在的文件,不会出现警告,强制删除! - -r 递归删除目录! - -i 互动,删除得时候询问你是否删除 rm -rf / rm删除文件或文件夹,-r递归删除目录,-f删除的时候不弹出警告信息 ,/根目录 系统中所有的文件就被删除了,删库跑路就是这么操作的! 不要自己去执行 !!! ******* 我们平时最常用的删除语法为rm -rf 文件/文件夹名称 ******* 9.mv 移动文件或者文件夹&重命名文件和文件夹 - 命令mv有两个功能:①移动文件 ②重命名文件 - -f 强制执行,不询问 - -u 只替换已经更新过的文件,即复制的双方A文件夹和B文件夹本来就是从A复制得到的B,使用-u参数就可以在下一次复制的时候只替换A中修改了的文件到B文件夹中,减少了没有修改的文件替换,节省了拷贝时间
六,文件属性查看和修改学习
文件基本属性
- 在Linux中文件的属性就由10个字母代替,1个文件类型+3组文件操作权限(每3个字母一组)
1.看懂文件属性
- Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限【比如root用户的权限最高,其他用户的权限都低于root用户】
- 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定
- 在Linux中我们可以使用
ll
或ls –l
或ls -ll
或ls -al
命令来显示一个文件的属性以及文件所属的用户和组
-
例如:实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件
-
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等,即第一个字母标识文件类型:
- 当为[ d ]则是目录 [directory]
- 当为[ - ]则是文件
- 若是[ l ]则表示为链接文档 ( link file )【对应Windows中的快捷方式】
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 )【不常用】
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 (一次性读取装置)【不常用】
-
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合
-
其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)
-
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已
-
每个文件的属性由左边第一部分的10个字符来确定(如下图)
-
从左至右用 0-9 这些数字来表示
-
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限;第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户(所有者的不同组用户)拥有该文件的权限
-
其中
- 第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限
- 第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限
- 第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限
-
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户
-
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组
-
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户
-
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限
-
在以上实例中,boot 文件是一个目录文件,属主和属组都为 root
2.修改文件属性
-
chgrp:更改文件属组 [Change group]【一般不会更改】
chgrp [-R] 属组名 文件名
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有
文件的属组都会更改
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有
-
chown:更改文件属主,也可以同时更改文件属组【一般不会更改】
chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名
-
chmod:更改文件9个属性(必须要掌握)【最常用】
-
我们经常遇到的问题:你没有权限操作此文件!此时我们就需要使用chmod命令修改权限,语法如下:
chmod [-R] xyz 文件或目录
-
Linux文件属性有两种设置方法,一种是数字(常用的是数字),一种是符号
-
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限
-
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwx rwx rwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
可读可写不可执行 :chmod 666(数字)/rw-(字母) ,所有用户对这个文件都是可读可写不可执行,6 = 4+2 可读可写可执行 :chmod 777(数字)/rwx(字母),所有用户对这个文件都是可读可写可执行,7 = 4+2+1 chomd 777 文件赋予所有用户可读可写可执行的权限!
-
注意:使用数字1、2、4就是在设置rwx中的一个权限,使用3、5、6、7就是在设置一个以上的权限,我们直接使用1-7的数字,Linux可以自动识别我们设置的是什么权限
-
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[- rwxrwx- - -]对应使用数字设置权限的命令为
chmod 770 filename # 770 =rwxrwx- - -
-
-
使用字母修改文件/文件夹的权限
3.小结
-
对于文件属性,我们只需要看懂使用
ls -ll
查询出来的数据,会修改对应的文件的操作权限即可,对于文件的属组和属主我们很少操作 -
即只要掌握下面两张图中的内容即可
-
对于要掌握的命令小结
1.chgrp:更改文件属组 [Change group]【一般不会更改】 - chgrp [-R] 属组名 文件名 - -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有 2.chown:更改文件属主,也可以同时更改文件属组【一般不会更改】 - chown [–R] 属主名 文件名 - chown [-R] 属主名:属组名 文件名 3.chmod:更改文件9个属性【重点掌握】 - chmod XXX filename --- [数字格式],数字取值为1-7直接的任何数字 - chmod u:XXX,g:XXX,o:XXX --- [字母形式修改],XXX 取r、w、x中的一个
-
ctrl + c 强制中断
七,多种查看文件内容的方式学习
1.文件内容查看
-
我们会经常使用到文件查看!
-
Linux系统中使用以下命令来查看文件的内容:(全部掌握,高亮的是常用的命令)
-
cat 由文件的第一行开始显示文件的全部内容,用来读文章,或者读取配置文件啊,都使用cat名
-
由于我们现在没有什么文件可以查看,所以我们可以去查看系统的配置文件来上手上面的文件查看命令
-
我们的系统配置都放在
/etc/sysconfig
中,所以我们可以先进入该文件目录
-
-
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
-
nl 显示的时候,顺道输出行号! 看代码的时候,希望显示行号! 常用
-
more 一页一页的显示文件内容,只能向下翻页不能向上翻页(空格代表翻页,enter 代表向下看一行,在参看文件内容的时候我们可以输入 :f ,用来查看当前文件内容输出到哪一行了,即查看最后哦一行数据的行号)
-
less 与 more 类似,但是比 more 更好的是,他可以往前翻页! (空格下翻页,↑、↓键代表翻动页面!退出 的时候需要输入q 命令,才能退出来,查找字符串 /要查询的字符从当前光标位置向下查询,当前光标位置向上查询使用?要查询的字符串;使用了查找字符串之后我们可以使用n 来从当前第一个选中的匹配关键字继续搜寻下一个,N 上寻找!)
-
head 只看头几行 通过 -n 参数来控制显示几行!【很少用,可以方便我们快速读取大文件中的部分数据】
-
tail 只看尾巴几行 -n 参数 要查看几行!【很少用,可以方便我们快速读取大文件中的部分数据】
-
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp
-
2.需要记住的一些东西
-
Linux OS的网络配置文件都在路径
/etc/sysconfig/network-scripts
中 -
在Windows查看IP配置的命令为
ipconfig
,在Linux中查看IP配置的命令为ifconfig
3.命令小结
- cat filename 查看当前目录下指定的文件名的文件内容,文件内容从第一行开始全部显示出来
- tac filename 效果和cat一样,只是它的文件内容从最后一行开始倒序输出
- nl filename 效果和cat一样,但是它会在每一行前面加上行号,对于查看代码和大文件很有用
- more filename 用于一页一页的查看文件的数据,如果文件内容不多直接全部显示,如果文件内容
多于一页就是分页我们可以使用空格翻页,也可以使用回车一行行的向下查看文件内容
在查看文件的时候输入 :f 就可以查看当前文件输入到了哪一行
- less filename 与 more 功能类似,但是比 more 更好的是,它可以往前翻页!
(空格下翻页,↑、↓键代表翻动页面!退出 的时候需要输入q 命令,才能退出来,
查找字符串 /要查询的字符从当前光标位置向下查询,当前光标位置向上查询
使用?要查询的字符串;使用了查找字符串之后我们可以使用n 来从当前
第一个选中的匹配关键字继续搜寻下一个,N 上寻找!)
- head -n 查看的行数 filename 只看头几行 通过 -n 参数来控制显示几行
【很少用,可以方便我们快速读取大文件中的部分数据】
- tail -n 查看的行数 filename 只看尾巴几行 -n 参数 要查看几行!
【很少用,可以方便我们快速读取大文件中的部分数据】
八,硬链接和软链接
1.Linux 链接的概念
-
Linux的链接分为两种:硬链接、软链接!
-
硬链接:文件A—文件A的硬链接B,假设B是A的硬链接,那么它们两个指向了文件系统中的同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!【它的本质为创建多个链接指向磁盘上的同一个文件,只要没有将所有的硬链接和源文件都删除,这个文件就不会被真正的删除,而是只将其中我们指定指向它的那个文件链接删除了】
-
软链接:又叫符号链接, 类似Window下的快捷方式,删除的源文件,快捷方式也访问不了!
-
我们可以使用
ln
命令创建链接ln filename 硬链接名称
ln filename -s 软链接名称
-
我们可以使用命令
touch
创建一个文件! -
使用命令
echo
可以输入字符串,也可以输入到文件中!- 输入字符串存储到文件中:
echo "字符串" >>filename
- 输入字符串存储到文件中:
- 假设现在我们删除源文件testFile,那么理论上硬链接link1还能获取到文件的内容,软链接link2已经不能获取文件内容了,即这个链接失效了
2.命令小结
1.创建链接
- ln filename 硬链接名称 创建硬链接
- ln filename -s 软链接名称 创建软链接
2.创建文件
- touch filename 在当前文件夹下创建指定名称的文件,文件类型为默认类型
3.输入字符串
- echo "字符串" >>filename 输入字符串,也可以输入到文件中
九,Vim编辑器的使用
1.什么是Vim编辑器
-
Vim通过一些插件可以实现和IDE一样的功能!
-
Vim是从 vi 发展出来的一个文本编辑器,是vi的一个升级版,比如代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。尤其是Linux中,必须要会使用Vim(文本编辑器的功能本质:查看内容,编辑内容,保存内容!)
-
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方
-
vim 则可以说是程序开发者的一项很好用的工具
-
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在
-
连 vim 的官方网站 自己也说 vim 是一个程序开发工具而不是文字处理软件
-
vim 键盘图
2.vim编辑器的三种使用模式
-
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
-
开启vim的命令为
vim filename
,如果文件存在直接使用vim打开这个文件,如果文件不存在就创建这个文件 -
vim的三种模式的作用分别是:
-
命令模式:用户刚刚启动 vi/vim,便进入了命令模式
-
进入命令模式之后,我们不能直接为新建的文件输入内容,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符,比如我们此时按下i,并不会输入一个字符,i被当作了一个命令;具体命令可以参考上面的vim 键盘图
-
以下是3个常用的vim命令
-
i :insert(输入),即打开vim之后,只有输入vim命令 i ,vim编辑器才会从默认的命令模式切换到输入模式,在输入模式下我们才能修改文件内容
-
x 删除当前光标所在处的字符
-
: 切换到底线命令模式,用于在最下面一行输入vim的命令。 如果当前vim正处于编辑模式,需要先按ESC键退出编辑模式,返回命令模式,然后输入 : 从命令模式进入底线命令模式,命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令
-
-
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
-
底线命令模式
-
在命令模式下按下:(英文冒号)就进入了底线命令模式。光标就移动到了最底下,就可以在这里输入一些底线命令了!
-
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多
-
在底线命令模式中,基本的命令有(已经省略了冒号):wq
-
q 退出程序
-
w 保存文件
- 按ESC键可随时退出底线命令模式
-
-
-
-
-
按ESC键可随时退出底线命令模式
- 命令行界面输入vim filename,使用vim编辑器打开指定文件名称的文件,如果文件存在就打开,不存在就新建 - 直接打开的vim 编辑器,它默认处于命令模式,我们可以输入 i/a/o 就会切换至输入模式,在输入模式我们 才能对文件内容进行修改;我们也可以直接输入 : 切换至底线命令模式,底线命令模式可以输入和 执行更多的vim命令命令模式只能使用一些基础的vim命令,比如文件保存和退出vim编辑器,我们就 需要进入底线命令模式 - 在命令模式下输入 i/a/o 就会进入输入模式之后,我们就可以对文件的内容进行修改 ,在修改完文件内容之后 我们就可以按下键盘上的ESC键退出输入模式,返回命令模式 - 在命令模式下输入 : 进入底线命令模式之后,我们可以在 : 后面输入vim命令进行执行,我们最常用的就是 w保存文件命令和q退出vim命令
-
小结vim编辑器
- 默认vim编辑器就是处于命令模式,命令模式是3个模式直接切换的纽带,要实现模式切换必须先返回vim默认的命令模式
3.vi/vim 按键说明
- 除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用
- 注意:下面直接从表格中摘抄出来的就是最常用的vim命令,需要我们掌握熟练,使用习惯了它的效率能够超过word
1.第一部分:一般/命令模式可用的光标移动、复制粘贴、搜索替换等
-
数字n+空格:将光标移动到这一行的第n个字符【n从0开始计数】
-
数字n+回车:将光标移动到第n行首【n从0开始计数】
-
G:移动到文件的最后一行
-
gg:移动到文件的第一行
-
/word:向光标之下寻找一个名称为 word 的字符串
-
?word:向光标之上寻找一个字符串名称为 word 的字符串
-
n:这个 n 是英文按键,代表重复前一个搜寻的动作
-
N:这个 N 是英文按键,与 n 刚好相反,为『反向』进行前一个搜寻动作
-
dd:删除一整行的数据
-
ndd:n 为数字,删除光标所在的行开始向下 n 行,例如 20dd 则是删除光标所在行开始计数的向下的 20 行
-
yy:复制光标所在行
-
nyy:复制光标所在的行开始向下 n 行,例如 20yy 则是复制光标所在行开始计数的向下的 20 行
-
p和P:p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行
-
u:复原前一个动作,相当于Windows中的撤销
-
[Ctrl]+r:重做上一个动作(常用),这个命令和u命令一起使用,可以实现向前和向后的两种方向的撤销,u命令是返回上一步,[Ctrl]+r是返回已经撤销的下一步
-
. :就是一个小数点,它的意思是重复上一步操作,比如上一步是粘贴,那么如果你还想要粘贴,直接按.即可,虽然按p/P也可以,但是在一些组合键面前,它就显得很方便了
2.第二部分:一般模式切换到编辑模式的可用的按钮说明(重要,都要掌握)
3.第三部分:一般模式切换到指令行模式的可用的按钮说明
- :q :退出vim编辑器
- :q! :不保存修改就关闭vim编辑器
- 惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
- :wq :储存后离开,若为 :wq! 则为强制储存后离开 (常用)
- :set nu:显示文件中数据的行号
- set nonu:关闭小时文件中数据的行号
- /要查找的值:可以找到我们要查找的值,n是下一个,N是上一个
- :noh:取消高亮
- :%s/old/new/g:替换内容 /g替换匹配的所有内容 如果不加百分号就是替换光标所在行
- 特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思
- 举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可
十,Linux账号管理学习
- Linux是一个多用户的系统,所以我们掌握账户管理是很必要的
1.什么是Linux的账号管理
- Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
- 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护
- 每个用户账号都拥有一个唯一的用户名和各自的口令
- 用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录
- 实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除与修改
- 用户口令的管理
- 用户组的管理
2.用户账号的管理
- 用户账号的管理工作主要涉及到用户账号的添加、修改和删除
- 添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源
- 文件也有属主,属组的概念
3.useradd 命令 添加用户
-
只能使用权限最大的root用户进行添加
-
添加新的用户账号使用useradd命令,其语法:
useradd 选项 用户名
-
参数说明:
-
选项:
-c comment 指定一段注释性描述
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组
-G 用户组,用户组 指定用户所属的附加组
-m 使用者目录/文件夹如果不存在,则自动创建
-s Shell文件 指定用户的登录Shell
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号 -
用户名:
指定新账号的登录名
-
-
我们常用选项中的两个
- -m:自动创建这个用户的主目录 /home/用户名称
- -G : 给用户分配组!
-
根据上图的运行结果我们可以再思考以下Linux中一切皆文件这句话,我们新建用户就是创建了一个用户的文件夹,然后再去某一个指定的配置文件中配置用户的基本信息即可
-
那么我们去哪一个文件中配置用户信息呢?答案就是我们前面说的Linux OS的配置文件夹 /etc,这个文件夹中有一个文件passwd
-
可以发现,除了我们的root用户和刚刚创建的ming2用户,还有很多其他的其他用户
4.删除用户 userdel
-
删除用户语法:
userdel -r 用户名称
-
注意:因为用户本身也是一个文件,在删除用户的时候,我们需要加上参数-r进行递归删除,将这个用户在home下的个人文件夹一起删除
5.修改用户 usermod
-
修改用户语法:
usermod 选项 用户名
或记为usermod 对应修改的内容 修改那个用户
-
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值
-
另外,有些系统可以使用选项:-l 新用户名,这个选项指定一个新的账号,即将原来的用户名改为新的用户名
-
比如修改用户名
-
我们可以使用usermod -md 来为新用户名称的老用户修改主文件夹名称,其实是由mv修改也是一样的
-
修改完毕之后查看配置文件即可!
6.切换用户!
-
所以在命令行界面我们就可以看到自己的用户名、登陆的主机的主机名、当前所在文件夹名称以及自己这个账户是超级用户,还是普通用户;超级用户对于拥有系统的所有权限
-
切换用户的命令为:
su username
【su即super user,即我们的管理员,username是你的用户名】 -
从普通用户切换到root用户,还可以使用命令:sudo su
-
在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
-
在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例
如:【su - root】$表示普通用户 #表示超级用户,也就是root用户
-
修改主机名称
-
我们可以使用命令
hostname 新主机名
,然后重新连接远程云服务器,就可以看到效果 -
但是这只是临时的,一旦重启服务器,就会丢失;要永久修改需要修改配置文件
7.用户的密码设置问题!
-
我们一般通过root创建用户的时候!要配置密码!
-
Linux上输入密码是不会显示的,你正常输入就可以了,并不是系统的问题!
-
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令
-
指定和修改用户口令的Shell命令是
passwd
。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式都为:passwd 选项 用户名
-
可使用的选项:【我们一般不用选项】
-l 锁定口令,即禁用账号
-u 口令解锁
-d 使账号无口令
-f 强迫用户下次登录时修改口令 -
如果是超级用户,可以用下列形式指定任何用户的口令:
passwd username #通过username指定要修改密码的用户名 New password:******* #输入新密码,这里在Linux中是没有显示的,它不会显示 * Re-enter new password:******* #重复输入要设置的新密码
需要的主机号为超级用户的地址即服务器地址
-
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令
-
为用户指定空口令时,执行下列形式的命令:
passwd -d username
-
此命令将用户 username对应的用户的口令删除,这样这个用户下一次登录时,系统就不再允许该用户登录了,回到了刚创建账户没有密码的状态,Linux的用户必须要有密码才能登陆
-
passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:
passwd -l username
8.锁定账户!
-
root,比如张三辞职了!但是我不想删除这个账户,我们就可以冻结这个账号,一旦冻结,这个用户名就登录不上系统了
-
9.小结
-
在公司中,你一般触及不到 root 用户!作为一个开发一般你拿不到!
-
这以上的基本命令,大家必须要掌握!但是自己玩的时候可以使用来学习!Linux是一个多用户的系统,所以我们掌握账户管理是很必要的
-
命令小结
1.添加用户:useradd 选项 用户名,选项参数一般就是-m(创建用户的主文件夹/home文件夹下的个人文件夹) 或-g(为用户分配用户组) 2.删除用户:userdel -r 用户名称`,带上参数-r 是让系统的删除这个用户的时候,将它的主文件夹也删除 如果不使用参数-r 系统是不会帮我们删除用户的主文件夹的,注意:用户删除之后是在/etc/passwd中信息 被删除了,但是在/home或者我们指定的文件夹下的主文件夹需要我们手动删除 3.修改用户:usermod 选项 用户名,选项中常用-l(修改用户名),-m(修改用户主文件夹的位置) 4.切换用户: ①root用户切换至普通用户:su username #不需要输入密码 ②其他用户切换至root用户:sudo su #需要输入root账户的密码 ③退出当前登陆的用户:exit #如果是从其他用户切换过来的,就会回到原账户,如果不是就直接注销登陆 ④用户类别:$表示普通用户,#表示超级用户,也就是root用户 5.用户的密码设置:passwd 用户名【选项参数一般不用】 ①用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用 ②超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令 ③普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令, 如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令 6.锁定账户:passwd -l username,被锁定的账户不能再登陆服务器 7.解锁账户:passwd -u username,解锁直接的账户就可以正常登陆服务器了
十一,Linux用户组管理学习
1.什么是用户组以及它的作用想
- 注意区别概念:属主(文件的归属者)、属组(用户的归属组)
- 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维都是有一个不同的组的,操作的时候只需要按照组为操作对象/单位,那么就会同步作用到组内的所有成员,方便管理;还有一个权限较大的组别为root组,root组中除了root账户外还可以有其他的账户)
- 不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建
- 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新(对于用户的增删改就是对/etc/passwd文件进行更新,所以/etc文件对我们来说很重要),所以和对用户的管理一样,操作完成之后要看自己的操作是否成功,就需要去/etc/group进行查看
2.创建一个用户组 groupadd
-
命令:
groupadd groupname
-
上面组信息最后的数字其实就是组的id,除了使用Linux默认为我们设置的id(1000之后排号,自增1),我们也可以自己设置一个与已经存在的组没有重复的id,比如设置一个id为520的组,指定组id的时候需要使用参数g,语法为:
groupadd -g 指定的端口号 组名称
3.删除用户组 groupdel
- 删除用户组的语法:
groupdel 用户组名称
4.修改用户组的权限信息和名字 groupmod -g -n
-
修改用户组信息的时候需要添加参数表明我们要修改用户组的什么属性,我们常用的参数就两个
- -g:修改组id,和创建组的时候一样
- -n:修改组名称
- 如果两个同时修改,注意分开写参数和新值
-
语法:
groupmod 参数选项 新值 原组名称
5.用户需要切换所属的用户组:newgrp 要切换的组名称
-
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组
-
语法:
newgrp 要切换的组名称
$ newgrp root #即此时一个 $用户要将自己转到root用户组中,如果它有这个权限,就会成功,如果没有就会失败
-
一般用户的属组在创建用户的时候使用参数-G就为它指定了,后面很少会变动
6.文件的查看!
- 完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改
- 与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等【知道这3个文件,熟悉对它的的查看即可】
- /etc/passwd:存储用户信息
- /etc/shadow:存储用户口令,存储的都是加密之后的口令
- /etc/group:存储组信息
1./etc/passwd文件是用户管理工作涉及的最重要的一个文件
-
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性
-
这个文件对所有用户都是可读的。它的内容类似下面的例子:
# cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/home/sam:/bin/sh
-
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
1)"用户名"是代表用户账号的字符串。 通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号( : ),因为冒号在这里是分隔符。 为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。 2)“口令”一些系统中,存放着加密后的用户口令字。 虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。 3)“用户标识号”是一个整数,系统内部用它来标识用户。 一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。 通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。 4)“组标识号”字段记录的是用户所属的用户组。 它对应着/etc/group文件中的一条记录。 5)“注释性描述”字段记录着用户的一些个人情况。 例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。 6)“主目录”,也就是用户的起始工作目录。 它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。 7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。 Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。 系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。 用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。 利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。 8)系统中有一类用户称为伪用户(pseudo users)。 这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。 常见的伪用户如下所示: - 伪 用 户 含 义 - bin 拥有可执行的用户命令文件 - sys 拥有系统文件 - adm 拥有帐户文件 - uucp UUCP使用 - lp lp或lpd子系统使用 - nobody NFS使用
2.拥有帐户文件/用户口令存储文件/etc/shadow
-
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。
- 由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。
-
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
-
它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
"登录名"是与/etc/passwd文件中的登录名相一致的用户账号 "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录 "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日 "最小时间间隔"指的是两次修改口令之间所需的最小天数 "最大时间间隔"指的是口令保持有效的最大天数 "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数 "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数 "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了
-
下面是/etc/shadow的一个例子:
# cat /etc/shadow root:Dnakfw28zf38w:8764:0:168:7::: daemon:*::0:0:::: bin:*::0:0:::: sys:*::0:0:::: adm:*::0:0:::: uucp:*::0:0:::: nuucp:*::0:0:::: auth:*::0:0:::: cron:*::0:0:::: listen:*::0:0:::: lp:*::0:0:::: sam:EkdiSECLWPdSa:9740:0:0::::
3.用户组的所有信息都存放在/etc/group文件中
-
将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段
-
每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组
-
当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组
-
用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员
-
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
- "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。 - "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。 - "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。 - "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组
-
/etc/group文件的一个例子如下:
root::0:root bin::2:root,bin sys::3:root,uucp adm::4:root,adm daemon::5:root,daemon lp::7:root,lp users::20:root,sam
7.小结
-
其实用户的组操作和用户操作大致相同,只是将userXXX改为groupXXX即可,参数选项有所不同,对应修改的文件有所不同,一个是/etc/passwd,一个是/etc/gruop
-
命令小结
1.新值用户组:groupadd -g 指定的端口号 组名称 2.删除用户组:groupdel 用户组名称 3.修改用户组:groupmod -g 新组id -n 新组名称 原组名 4.用户切换属组:newgrp 要切换的组名称
十二,Linux磁盘管理学习
1.df和du命令
-
df:检查文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。它会列出整个服务器上所有 文件系统/磁盘 的磁盘使用量,类似于我们在Windows上打开"此电脑"的时候看到的场景
-
使用语法:
df [参数选项] [目录或文件名]
选项参数: -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; -k :以 KBytes 的容量显示各文件系统; -m :以 MBytes 的容量显示各文件系统; -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式; -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出; -i :不用硬盘容量,而以 inode 的数量来显示
-
但是上面的存储数据是以字节为单位显示的,我们更加习惯使用K、M、G、T…显示磁盘空间,所以在查看的时候我们可以加上参数h,语法:
df -h
-
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令
-
使用语法:
du [-选项与参数] 文件或目录名称
选项与参数: -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示;
-
-
通配符 * 来代表每个目录
-
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据
2.磁盘挂载与卸除
-
挂载:mount
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
-
卸载:umount -f [挂载位置] 强制卸载
umount [-fn] 装置文件名或挂载点 选项与参数: -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下; -n :不升级 /etc/mtab 情况下卸除。
3.小结
-
命令小结
1.查看系统磁盘使用情况:df [参数选项] [目录或文件名] 2.对文件和目录磁盘使用的空间进行查看:du [-选项与参数] 文件或目录名称 3.挂载设备:mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点 4.卸载设备:umount [-fn] 装置文件名或挂载点
十三, Linux进程管理学习
1.Linux中的进程的基本概念
- 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!(和Windows中每一个进程的PID是一样的)
- 每一个进程呢,都会有一个父进程!
- 进程可以有两种存在方式:前台(当前可得到的),后台(当前看不到的)运行
- 一般服务都是在后台运行的,基本的程序都是在前台运行的
2.Linux中的进程的命令
1.查看进程信息
-
命令:
ps
,用于 查看当前系统中正在执行的所有进程的信息【很常用】 -
ps 的参数选项,可以使用
ps -help all
/man -ps
查看参数使用方法和功能 : -
-A :所有的进程均显示出来,与 -e 具有同样的效用
-
-a : 显示当前终端机(就是我们连接远程云服务器的这台电脑)开启运行的所有进程,包括其他用户的进程(TTY :进程启动时的终端设备)
-
-u :显示属于该用户的程序进程的信息,也可使用用户名称来指定
-
x :单独使用效果和-A相同,和-a联合使用可以列出一些更加详细的信息,比如开启这个进程的command
- au(x) 的输出格式 为:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
==============================
简单翻译上面的字段:
- USER :启动这些进程的用户
- PID:进程的进程ID
- %CPU :进程占用的CPU百分比
- %MEM :占用内存的百分比
- VSZ :该进程使用的虚拟內存量(KB)
- RSS :该进程占用的固定內存量(KB)(驻留中页的数量)
- TTY :进程启动时的终端设备
- STAT :进程的状态
- START :该进程被触发启动时间
- TIME :运行进程需要的累计CPU时间
- COMMAND:启动的程序名称
还有一些其他的字段:
- UID:启动这些进程的用户
- PID:进程的进程ID
- PPID:父进程的进程号(如果该进程是由另一个进程启动的)
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:启动的程序名称
-
ps -aux :将所有的进程信息全部打印
-
| :在Linux中这个符号叫做管道符,管道符左边命令的输出就会作为管道符右边命令的输入使用语法为 “命令A |命令 B”
-
grep:使用语法 “grep 被查找的字符串 文件名”
-
ps -aux | grep 进程名称/进程包含的字符串
使用这样一条组合命令,可以先将所有进程信息查询出来(ps -aux),然后将查询出来的进程信息作为grep查询的文本( | ),grep将会筛选出符合我们指定的字符串的进程的信息比如查找MySQL相关进程就可以使用:ps -aux | grep mysql
查找Java相关进程就可以使用:ps -aux | grep java -
对于我们来说,我们只要会使用
ps -xxx(参数aux可选) | grep 想要过滤出来查看信息的进程名称
来查看想要查看的进程的信息即可 -
常用命令
ps -ef
,用于查看父进程的信息,除了这个命令我们也可以使用pstree -参数选项
来查看父进程,使用树状结构查看效果更好一些(即使用进程树查看父进程的效果更好,所以推荐使用进程树)pstree -pu #进程树,效果更好,相比于ps -ef,我们更应该优先使用这个命令 - p:显示父ID - u:显示用户组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i3Flq0zc-1652546961475)(lunix.assets/image-20211017115108645.png)]
2.结束进程
- 结束进程:即杀掉正在运行的进程,这在Windows中见怪不怪了,很常用的就是打开任务管理器,然后结束某一个任务
- 在Linux中强制结束某一个进程的执行,命令为:
kill -9 进程的ID
,注意:-9这个参数起到强制结束进程的作用 - 正在的服务器上面运行的进程基本不会使用这个命令,但是我们自己平时使用服务器跑的Java程序如果出bug/死循环了,我们就需要使用这个命令来结束我们的Java进程
3.小结
-
对于我们Java开发人员来说,Linux更偏向于常规的使用即可
-
Linux中一切皆文件,所以我们需要掌握文件的读、写和执行操作;又因为Linux是一个多用户的OS,所以我们还需要掌握文件的权限设置;即掌握文件的读、写、执行和权限控制
-
权限就衍生出来用户+用户组的概念,所以为了学习权限管理,我们学习了用户管理和用户组管理
-
除此之外,我们还需要会使用Linux这个OS,所以我们学习了Linux的磁盘管理和进程管理
-
小结上面的内容,就是我们需要掌握的基本Linux操作为:
- 文件的读、写和执行(查看,创建,删除,移动,复制,编辑)
- 文件的权限(用户、用户组)
- 系统操作(磁盘,进程)
-
命令小结
1.进程查看:我们只要会使用 ps -参数(aux任选) | grep 进程名称 来筛选出指定的进程信息进行查看即可 对于父进程的信息查看,我们更加推荐使用树结构进行查看,即使用命令 pstree -pu 来查看信息 2.结束进程:我们只要会使用 kill -9 进程ID 来强制结束某一个进程即可 在正常使用情况下我们不会去结束服务器本来就运行者的某一个进程,我们一般只会结束自己开的一些进程, 比如Java程序进程等
十四,系统的管理
1.Linux 中的进程和服务
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。
启动之后一只存在、常驻内存的进程,一般被称作“服务”(service)。
2. systemctl (CentOS 7 版本-重点掌握)
1) 基本语法
systemctl start | stop | restart | status 服务名
2) 经验技巧
查看服务的方法:/usr/lib/systemd/system
[root@hadoop100 system]# pwd
/usr/lib/systemd/system
[root@hadoop100 init.d]# ls -al
-rw-r--r--. 1 root root 275 4 月 27 2018 abrt-ccpp.service
-rw-r--r--. 1 root root 380 4 月 27 2018 abrtd.service
-rw-r--r--. 1 root root 361 4 月 27 2018 abrt-oops.service
-rw-r--r--. 1 root root 266 4 月 27 2018 abrt-pstoreoops.service
-rw-r--r--. 1 root root 262 4 月 27 2018 abrt-vmcore.service
-rw-r--r--. 1 root root 311 4 月 27 2018 abrt-xorg.service
-rw-r--r--. 1 root root 751 4 月 11 2018 accounts-daemon.service
-rw-r--r--. 1 root root 527 3 月 25 2017 alsa-restore.service
-rw-r--r--. 1 root root 486 3 月 25 2017 alsa-state.service
3)案例实操
(1)查看防火墙服务的状态
[root@hadoop100 桌面]# systemctl status firewalld
(2)停止防火墙服务
[root@hadoop100 桌面]# systemctl stop firewalld
(3)启动防火墙服务
[root@hadoop100 桌面]# systemctl start firewalld
(4)重启防火墙服务
[root@hadoop100 桌面]# systemctl restart firewalld
3.systemctl 设置后台服务的自启配置
1)基本语法
systemctl list-unit-files (功能描述:查看服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)
2)案例实操
(1)开启/关闭 iptables(防火墙)服务的自动启动
[root@hadoop100 桌面]# systemctl enable firewalld.service
[root@hadoop100 桌面]# systemctl disable firewalld.service
4.系统运行级别
1)Linux 运行级别[CentOS 6],如图所示
2)CentOS7 的运行级别简化为:
multi-user.target 等价于原运行级别 3(多用户有网,无图形界面)
graphical.target 等价于原运行级别 5(多用户有网,有图形界面)
3) 查看当前运行级别:
systemctl get-default
4)修改当前运行级别
systemctl set-default TARGET.target (这里 TARGET 取 multi-user 或者 graphical)
5.关闭防火墙
1) 临时关闭防火墙
(1)查看防火墙状态
[root@hadoop100 桌面]# systemctl status firewalld
(2)临时关闭防火墙
[root@hadoop100 桌面]# systemctl stop firewalld
2)开机启动时关闭防火墙
(1)查看防火墙开机启动状态
[root@hadoop100 桌面]# systemctl enable firewalld.service
(2)设置开机时关闭防火墙
[root@hadoop100 桌面]# systemctl disable firewalld.service
6.关机重启命令
在 linux 领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
1)基本语法
(1)sync (功能描述:将数据由内存同步到硬盘中)
(2)halt (功能描述:停机,关闭系统,但不断电)
(3)poweroff (功能描述:关机,断电)
(3)reboot (功能描述:就是重启,等同于 shutdown -r now)
(4)shutdown [选项] 时间
2) 经验技巧
Linux 系统中为了提高磁盘的读写效率,对磁盘采取了 “预读迟写”操作方式。当用户保存文件时,Linux 核心并不一定立即将保存数据写入物理磁盘中,而是将数据保存在缓冲区中,等缓冲区满时再写入磁盘,这种方式可以极大的提高磁盘写入数据的效率。但是,也带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导致数据丢失。使用 sync 指令可以立即将缓冲区的数据写入磁盘。
3)案例实操
(1)将数据由内存同步到硬盘中
[root@hadoop100 桌面]#sync
(2)重启
[root@hadoop100 桌面]# reboot
(3)停机(不断电)
[root@hadoop100 桌面]#halt
(4)计算机将在 1 分钟后关机,并且会显示在登录用户的当前屏幕中
[root@hadoop100 桌面]#shutdown -h 1 ‘This server will shutdown after 1 mins’
(5)立马关机(等同于 poweroff)
[root@hadoop100 桌面]# shutdown -h now
(6)系统立马重启(等同于 reboot)
[root@hadoop100 桌面]# shutdown -r now
十五,rpm安装JDK上线项目
1.小结前面学习的Linux基本命令
- 目录管理
- 文件基本属性管理
- 文件内容查看
- vim编辑器
- 用户/账号管理
- 用户组管理
- 磁盘管理
- 进程管理
2.环境安装
- Linux中环境的安装有3种方式
- rpm(案例:安装JDK,并在线发布一个SringBoot项目)
- 解压缩(案例:安装tomcat,启动并通过外网访问,即发布网站)
- yum在线安装(案例:安装docker,直接安装运行跑起来docker就可以)
1.JDK安装
- 开发Java程序必要的环境
- 下载JDK rpm安装包
- 这个在百度网盘中
- 使用XFTP将下载好的rpm安装包上传至远程云服务器
1.安装Java环境
1.检测当前系统是否存在Java环境:Java -version
#输出这个提示信息表示本地没有Java环境-bash: java: command not found
#如果有的话就需要卸载原来的Java环境,卸载命令:
- rpm -qa|grep jdk #查看本地安装的Java信息
- rpm -e --nodeps jdk程序名称 #卸载该Java环境
2.安装新的Java环境
命令:rpm -ivh rpm包名称
这个的话如果里面有jdk的话需要删除,因为这个jdk后期会出现问题
-
卸载演示
-
安装成功之后需要配置环境变量,这个和我们的Windows是一样的,在Windows中我们是在系统变量中进行的配置,在Linux中我们需要去配置文件中配置
-
经过前面的基本命令的学习,我们可以发现Linux OS的系统配置都在etc文件夹中,所以我们的Java的环境变量的配置也要去这个文件夹中进行配置
-
我们需要去
/etc/profile
中去配置Linux OS的环境变量,Linux所有环境变量的配置都在这个文件中进行配置-
首先我们需要找到Java安装的位置
-
所以环境变量的配置需要使用这个路径
这里的所有环境变量为
JAVA_HOME=/usr/java/jdk1.8.0_65 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH CLASSPATH JAVA_HOME
-
保存,使得profile文件生效
. /etc/profile 或 source /etc/profile
-
-
验证是否成功
java -version 或者 java javac
2.发布一个Java项目
-
首先我们创建一个spring boot项目:book
-
测试这个项目是否搭建成功
-
注意:我们使用的是8081端口
-
将项目打成jar包
-
测试jar包是否能够正常使用
-
-
这个时候我们不能直接就去运行我们的jar包,因为远程云服务器的端口还没打开
-
我们可以先看看服务器的防火墙打开了哪些端口,命令为:
firewall-cmd --list-ports
-
打开远程服务器上的端口我们需要使用命令设置防火墙开启该端口,命令:
firewall-cmd --zone=public --add-port=端口号/tcp --permanent
,参数permanent表示永久开启这个端口,不加这个参数下次重启服务器的时候这个端口就又会被关闭(这里呢我建议直接去宝塔面板打开,记得要去阿里云上面去配置一下子,不然登不上去)
-
Linux中防火墙规则更新之后需要重新为防火墙加载规则,命令:
firewall-cmd --reload
-
重新加载防火墙规则之后再次查看防火墙打开的端口
-
注意:阿里云服务器除了需要在防火墙这个设置端口开放之外,还需要去阿里云控制面板中设置安全组,安全组的设置已经在第一篇Linux博客中讲过了,这里就不赘述了
-
运行jar包(如果是想以后台的方式执行的就可以使用nohop的方式执行)
-
本地访问远程服务器上的springboot项目
-
测试成功!
-
停止项目运行命令:
CTRL+Z
-
上面的步骤就是一个网站发布的完整流程,以后我们开发的Javaweb项目、springboot项目和spring cloud项目都可以这样发布到远程服务器上运行
-
Linux服务器的防火墙关闭指定端口,命令:
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
,参数permanent表示永久关闭这个端口,不加这个参数下次重启服务器的时候这个端口就又会被打开
3.小结
-
什么是Linux中的rpm
- rpm是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来 的软件包管理 - RPM里面都包含可执行的二进制程序,这个程序和Windows的软件包中的.exe文件类似是可执行的;RPM包中 还包括程序运行时所需要的文件,这也和Windows的软件包类似,Windows的程序的运行,除了.exe文件以外, 也有其它的文件 - 一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是 软件包的依赖关系;依赖关系并不是Linux特有的,Windows操作系统中也是同样存在的;比如我们在Windows 系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9
-
命令小结
1.安装Java环境 1.检测当前系统是否存在Java环境:Java -version #输出这个提示信息表示本地没有Java环境-bash: java: command not found #如果有的话就需要卸载原来的Java环境,卸载命令: - rpm -qa|grep jdk #查看本地安装的Java信息,即获得jdk程序名称 - rpm -e --nodeps jdk程序名称 #卸载该Java环境 2.安装新的Java环境 命令:rpm -ivh rpm包名称 2.发布一个Java项目,主要配置防火墙 - 我们可以先看看服务器的防火墙打开了哪些端口,命令为:firewall-cmd --list-ports - 打开远程服务器上的端口我们需要使用命令设置防火墙开启该端口, 命令:firewall-cmd --zone=public --add-port=端口号/tcp --permanent, 参数permanent表示永久开启这个端口,不加这个参数下次重启服务器的时候这个端口就又会被关闭 - Linux中防火墙规则更新之后需要重新为防火墙加载规则,命令:firewall-cmd --reload - Linux服务器的防火墙关闭指定端口,命令: firewall-cmd --zone=public --remove-port=端口号/tcp --permanent, 参数permanent表示永久关闭这个端口,不加这个参数下次重启服务器的时候这个端口就又会被打开
十六,解压缩Tomcat并发布
- 在上一篇博客中我们安装了JDK,并且发布了一个spring boot项目,并在本地对远程服务器上的spring boot项目进行了成功的访问,但是我们打的jar包,但是有些项目打的war包,打的war包我们就需要使用tomcat运行它,所以我们需要安装tomcat
1.解压缩安装tomcat
第一种方式
-
官网下载tomcat,
apache-tomcat-9.0.39.tar.gz
-
解压这个文件,命令:
tar zxvf .tar.gz压缩包名称
-
启动tomcat测试,和Windows中
-
和在Windows中一样,要启动tomcat,我们需要去bin文件夹中找startup,在Windows中后缀为
.bat
,在Linux中后缀为.sh
-
进入bin文件夹,运行
startup.sh
-
Linux中运行程序的命令为:
./程序名称.后缀
,所以开启tomcat的命令为./startup.sh
-
注意开启防火墙的8080端口,并设置阿里云安全组,这两步做完之后我们就可以在本地访问远程服务器上运行在tomcat上的web程序了
防火墙常用命令: # 查看firewall服务状态 systemctl status firewalld # 开启、重启、关闭、firewalld.service服务 # 开启 service firewalld start # 重启 service firewalld restart # 关闭 service firewalld stop # 查看防火墙规则 firewall-cmd --list-all # 查看全部信息 firewall-cmd --list-ports # 只看端口信息 # 开启端口 开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent 重启防火墙:systemctl restart firewalld.service 命令含义: --zone #作用域,我们设置的public,这样所有人都可以访问 --add-port=80/tcp #添加端口,格式为:端口/通讯协议,即要开放的端口 --permanent #永久生效,没有此参数重启后失效
第二种方式(个人比较推荐)
-
下载宝塔面板
-
直接在宝塔面板上下载,然后再阿里云的服务器上开启8080端口即可
-
我们可以自己在阿里云上买一个域名,再将域名进行备案,并将买的域名和我们的公网IP进行解析映射,那么我们访问远程服务器的时候就可以使用我们自己买的域名了,而不用再使用IP地址,使用域名更便于我们自己记忆和使用
-
如果我们运行的项目是80(HTTP)/443(HTTPS)端口,我们就可以直接使用域名进行访问,如果我们运行的项目不是80或443,比如就是8080或9000这些端口,我们要么使用域名+端口号进行访问,要么使用Apache/Nginx做一下反向代理即可,使用反向代理只需要配置一下文件,很简单就能实现,推荐使用反向代理,如果想要上线自己的网站/博客,推荐使用反向代理
2.小结
-
解压缩安装命令:
tar zxvf .tar.gz压缩包名称
-
Linux中运行程序的命令为:
./程序名称.后缀
-
开启端口供外部访问的固定5步
1.firewall-cmd --list-ports # 查看防火墙已经开启的端口是否包含我们想要开启的端口 2.firewall-cmd --zone=public --add-port=想要打开的端口号/tcp --permanent #打开端口 3.firewall-cmd --reload #重新加载防火墙规则,使得我们刚刚配置的端口打开规则生效 4.firewall-cmd --list-ports #再次查看,检查系统是否将我们指定的端口开启 5.设置阿里云安全组
十六, yum安装docker
1.Docker(yum安装)
-
yum安装是在线安装,所以使用yum安装的时候必须是在联网的情况下进行
-
注意:以下操作都是在CentOS 7中进行的,不同版本的CentOS的命令有所区别
-
安装我们的准备环境
yum -y install 包名称 #yum install为我们的yum安装命令,-y参数表示安装的时候所有的提示都是yes #首先我们需要安装gcc环境 yum -y install gcc #然后需要安装c++环境 yum -y install gcc-c++ #上面两条命令可以放在一行中执行 yum -y install gcc gcc-c++
-
以下命令参考docker官网:docker官网安装参考手册
-
卸载/清除以前安装的docker
-
当然我们现在就是root用户,所以前面的sudo可以不要
-
后面的步骤也都是跟着官方doc做
-
注意:上面的第二个圈圈起来的是叫我们安装镜像,但是docker提供的镜像是国外的,我们使用起来会很慢,推荐使用阿里云镜像:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新yum软件包索引
yum makecache fast
-
安装Docker CE
yum -y install docker-ce docker-ce-clil containerd.io
-
启动docker
systemctl start docker
-
测试
docker version #查看docker的客户端和服务端的版本 docker run hello-world #运行docker的hello world程序,本地仓库没有这个镜像的时候就会去我们刚刚设置的阿里云仓库中 拉取hello world镜像 docker images #查看本地docker仓库有哪些镜像
-
使用yum安装的格式:
yum install -y yum源
-
建议可以使用yum安装的就使用yum安装,yum安装是讲解的3种安装中最快的最好用的安装方式