Linux操作系统入门

Linux操作系统入门

一、入门概述

我们为什么要学习Linux

linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情。

用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中,并不意味着linux就没有用武之地了。在服务器端,在开发领域linux倒是越来越受欢迎,很多程序员都觉得不懂点linux都觉得不好意思,linux在开源社区的地位依然岿然不动。

尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛了,所以不得不学习!

Linux 简介

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux 发行版

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

Kali linux:安全渗透测试使用!

Linux操作系统入门_第1张图片

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

Linux操作系统入门_第2张图片

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。

Linux VS Windows

Linux操作系统入门_第3张图片

二、环境搭建

Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用!

安装VMware

1、安装 VMware 虚拟机软件,然后打开我们的镜像即可使用!

安装完成后打开软件有如下界面:

Linux操作系统入门_第4张图片

安装CentOS7

1、可以通过镜像进行安装,点击下载 !

2、可以使用我已经制作好的镜像,点击下载 !

提取码:mty7 

VMware的使用方式:

点击屏幕进入虚拟机、Ctrl +Alt将聚焦退出虚拟机!

开机后的页面:

默认用户Linux,密码是123456

用户root的密码也是123456

本地Linux环境已准备就绪,根据账号密码测试登录

购买云服务器

虚拟机安装后占用空间,也会有些卡顿,我们作为程序员其实可以选择购买一台自己的服务器,这样的话更加接近真实线上工作;

1、阿里云购买服务器:https://www.aliyun.com/minisite/goods?userCode=0phtycgr

2、购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了

注意事项:

如果要打开端口,需要在阿里云服务器应用实例中开启对应的端口号,不然的话会被阿里云拦截!

Linux操作系统入门_第5张图片

  • 获取公网IP地址
  • 修改自己的登录密码

Linux操作系统入门_第6张图片

3、下载Xshell 远程连接工具,进行远程连接使用!还需要下载一个Xftp 文件上传!

4、使用Xshell连接远程服务器

Linux操作系统入门_第7张图片

5、登录成功之后就是如下界面

Linux操作系统入门_第8张图片

Ctrl+鼠标滚轮,放大和缩小字体!

上传文件使用Xftp即可!

Linux操作系统入门_第9张图片

Linux操作系统入门_第10张图片

如果前期不好操作,可以推荐安装宝塔面板,傻瓜式管理服务器

安装教程:https://www.bt.cn/bbs/thread-19376-1-1.html

1、开启对应的端口

2、一键安装

3、安装完毕后会得到远程面板的地址,账号,密码,就可以登录了

4、登录之后就可以可视化的安装环境和部署网站!

关于域名

如果自己的网站想要上线,就一定要购买一个域名然后进行备案;

备案的话需要一些认证和时间,备完完毕后,就可以解析到自己的网站了,这个时候就可以使用域名来进行服务器的访问!

三、走近Linux系统

开机登录

开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!

一般来说,用户的登录方式有三种:

  • 命令行登录
  • ssh登录
  • 图形界面登录

最高权限账户为 root,可以操作一切!

关机

在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

最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

系统目录结构

登录系统后,在当前命令窗口下输入命令:

[root@centos7 ~]# ls /

你会看到如下图所示:

Linux操作系统入门_第11张图片

树状目录结构:

Linux操作系统入门_第12张图片

以下是对这些目录的解释:

  • /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。( 不要动 )

  • /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。( 不要动 )

  • /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。( 存放突然关机的一些文件 )

  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。(一般会把本地文件挂载到该目录)

  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。( 不用管 )

  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /srv:该目录存放一些服务启动之后需要提取的数据。

  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs 。

  • /tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,就可以放在这个目录下!

  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin: 系统用户使用的应用程序。

  • /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。Super

  • /usr/src: 内核源代码默认的放置目录。

  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。

  • /www:存放服务器网站相关的资源,环境,网站的项目,该目录只有服务器有

Linux操作系统入门_第13张图片

四、常用基本命令

4.1 目录管理

绝对路径和相对路径

绝对路径路径的全称:E:\Virtual Machines\CentOS 7 64 位\xxx.xx

比如说CentOS 7 64 位目录下,那这个xxx.xx文件,对应我们的相对路径就是 /xxx.xx

cd :切换目录命令!

./ :当前目录

cd … :返回上一级目录

Linux操作系统入门_第14张图片

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 / 。

其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

在开始本教程前我们需要先知道什么是绝对路径与相对路径。

绝对路径:

路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。

相对路径:

路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!

处理目录的常用命令

接下来我们就来看几个常见的处理目录的命令吧:

  • ls:列出目录
  • cd:切换目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • cp:复制文件或目录
  • rm:移除文件或目录
  • mv:移动文件与目录,或修改文件与目录的名称

你可以使用 man [命令] 来查看各个命令的使用文档,如:man cp。

ls ( 列出目录 )

在Linux系统当中, ls 命令可能是最常被使用的。

选项与参数:

  • -a :all 查看全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来( 常用 )
  • -l :列出所有的文件,包含文件的属性与权限,没有隐藏文件;( 常用 )

所有的Linux命令可以组合使用

[root@centos7 home]# ls -al

Linux操作系统入门_第15张图片

Linux操作系统入门_第16张图片

cd ( 切换目录 )

cd是Change Directory的缩写,这是用来变换工作目录的命令。

cd目录名( 绝对路径都是以 / 开头,相对路径,对于当前目录该如何寻找…/…/ )

测试:

# 切换到用户目录下
[root@centos7 /]# cd home
# 使用 mkdir 命令创建 software 目录
[root@centos7 home]# mkdir software
# 进入 software 目录
[root@centos7 home]# cd software
# 回到上一级
[root@centos7 software]# cd ..
# 回到根目录
[root@centos7  software]# cd /
# 表示回到自己的家目录,亦即是 /root 这个目录
[root@centos7 software]# cd ~

pwd ( 显示当前用户所在的目录 )

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

[root@centos7 ~]# pwd
/root
[root@centos7 ~]# cd /bin/
[root@centos7 bin]# pwd 
/bin
[root@centos7 bin]# cd /usr/local
[root@centos7 local]# pwd
/usr/local

mkdir ( 创建新目录 )

如果想要创建新的目录的话,那么就使用mkdir ( make directory ) 吧。

测试:

# 进入我们用户目录下
[root@centos7 /]#cd /home
# 创建一个 test 文件夹
[root@centos7 home]# mkdir test
# 创建多层级目录
[root@centos7 home]# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory # <== 没办法直接创建此目录啊!
# 加了这个 -p 的选项,可以自行帮你创建多层目录!
[root@centos7 home]# mkdir -p test1/test2/test3/test4
# 创建权限为 rwx--x--x 的目录。
[root@centos7 home]# mkdir -m 711 test2
[root@centos7 home]# ls -l
drwxr-xr-x 2 root root 4096 Mar 12 21:55 test
drwxr-xr-x 3 root root 4096 Mar 12 21:56 test1
drwx--x--x 2 root root 4096 Mar 12 21:58 test2

rmdir ( 删除空的目录 )

测试:

# 看看有多少目录存在?
[root@centos7 home]# ls -l
drwxr-xr-x 2 root root 4096 Mar 12 21:55 test
drwxr-xr-x 3 root root 4096 Mar 12 21:56 test1
drwx--x--x 2 root root 4096 Mar 12 21:58 test2
# 可直接删除掉,没问题
[root@centos7 home]# rmdir test
# 因为尚有内容,所以无法删除!
[root@centos7 home]# rmdir test1
rmdir: failed to remove ‘test1’: Directory not empty
# 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
[root@centos7 home]# rmdir -p test1/test2/test3/test4

注意:rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录直接加 -p 参数即可

cp ( 复制文件或目录 )

cp 原来的地方 新的地方

测试:

# 找一个有文件的目录,我这里找到 root目录
[root@centos7 home]# cd /root
[root@centos7 ~]# ls
install.sh
[root@centos7 ~]# cd /home
# 复制 root目录下的install.sh 到 home目录下
[root@centos7 home]# cp /root/install.sh /home
[root@centos7 home]# ls
install.sh
# 再次复制,增加覆盖询问?
[root@centos7 home]# cp /root/install.sh /home
cp: overwrite ‘/home/install.sh’? y # n不覆盖,y为覆盖

rm ( 移除文件或目录 )

参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息,强制删除!
  • -i :互动模式,在删除前会询问使用者是否删除!
  • -r :递归删除目录!

测试:

[root@centos7 ~]# rm -rf / #系统中所有的文件就被删除了,删库跑路就是这么操作的!
# 将刚刚在 cp 的实例中创建的 install.sh删除掉!
[root@centos7 home]# rm -i install.sh
rm: remove regular file ‘install.sh’? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

mv ( 移动文件与目录,或修改名称 )

参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

  • -u :目标文件已存在,且已经更新过

测试:

# 复制一个文件到当前目录
[root@centos7 home]# cp /root/install.sh /home
# 创建一个文件夹 test
[root@centos7 home]# mkdir test
# 将复制过来的文件移动到我们创建的目录,并查看
[root@centos7 home]# mv install.sh test
[root@centos7 home]# ls
test
[root@centos7 home]# cd test
[root@centos7 home]# ls
install.sh
# 将文件夹重命名,然后再次查看!
[root@centos7 test]# cd ..
[root@centos7 home]# mv test mvtest
[root@centos7 home]# ls
mvtest

4.2 基本属性

看懂文件属性 root Linux

十个字母,第一个是类型

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用 ll 或者ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

Linux操作系统入门_第17张图片

实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件
  • 若是[ l ]则表示为链接文档 ( link file )
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

其中,[ r ]代表可读( read )、[ w ]代表可写( write )、[ x ]代表可执行( execute )。

要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

每个文件的属性由左边第一部分的10个字符来确定( 如下图 ):

Linux操作系统入门_第18张图片

从左至右用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。

修改文件属性

1、chgrp:更改文件属组

chgrp [-R] 属组名 文件名

-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

3、chmod:更改文件9个属性

chmod [-R] xyz 文件或目录

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

r:4 	w:2 	x:1
可读可写不可执行	rw- 	6
可读可写不课执行	rwx 	7
chomd 777 文件赋予所有用户可读可执行!

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0
chmod 770 filename

4.3 文件内容查看

概述

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容,用来读文章或读取配置文件
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!

Linux操作系统入门_第19张图片

  • nl 显示的时候,顺道输出行号!常用

Linux操作系统入门_第20张图片

  • more 一页一页的显示文件内容,带余下内容的 ( 空格代表翻页,enter代表向下看一行,:f 行号 )

Linux操作系统入门_第21张图片

  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!( 空格下翻页,上下键代表翻动页面!退出 q 命令 ) 查找字符串 /要查询的字符向下查询,向上查询使用 ?要查询的字符串,n继续搜寻下一个,N向上寻找

Linux操作系统入门_第22张图片

Linux操作系统入门_第23张图片

  • head 只看头几行,通过 -n 参数来控制显示几行!

Linux操作系统入门_第24张图片

  • tail 只看尾巴几行,-n参数要查看几行

Linux操作系统入门_第25张图片

你可以使用 man [命令]来查看各个命令的使用文档,如:man cp。

测试:

cat 由第一行开始显示文件内容

网络配置目录:cd /etc/sysconfig/network-scripts

Linux操作系统入门_第26张图片

ifconfig命令查看网络配置!

拓展:Linux 链接的概念

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为软链接(Symbolic Link)

硬链接: A–B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!

硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软链接: 类似Window下的快捷方式,删除的源文件,快捷方式也访问不了!

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

创建链接使用 ln 命令产生硬链接。

测试:

[root@centos7 /]# cd /home
[root@centos7 home]# touch f1 # 创建一个测试文件f1
[root@centos7 home]# ls
f1
[root@centos7 home]# ln f1 f2 # 创建f1的一个硬连接文件f2
[root@centos7 home]# ln -s f1 f3 # 创建f1的一个符号连接文件f3
[root@centos7 home]# ls -li # -i参数显示文件的inode节点信息
397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f1
397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f2
397248 lrwxrwxrwx 1 root root 2 Mar 13 00:50 f3 -> f1

从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 397247,然而符号连接文件的 inode 节点不同。

# echo 字符串输出 >> f1 输出到 f1文件
[root@centos7 home]# echo "I am f1 file" >>f1
[root@centos7 home]# cat f1
I am f1 file
[root@centos7 home]# cat f2
I am f1 file
[root@centos7 home]# cat f3
I am f1 file
[root@centos7 home]# rm -f f1
[root@centos7 home]# cat f2
I am f1 file
[root@centos7 home]# cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效;

依此您可以做一些相关的测试,可以得到以下全部结论:

  • 删除符号连接f3,对f1,f2无影响;
  • 删除硬连接f2,对f1,f3也无影响;
  • 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
  • 同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

4.4 Vim编辑器

什么是Vim编辑器

vim 通过一些插件可以实现和IDE一样的功能!

vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用 ( 查看内容,编辑内容,保存内容 )。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。

vim 则可以说是程序开发者的一项很好用的工具。

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

vim 键盘图:

Linux操作系统入门_第27张图片

三种使用模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

Linux操作系统入门_第28张图片

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i 被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。如果是编辑模式,需要先退出编辑模式! ESC

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式:

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

Linux操作系统入门_第29张图片

底线命令模式:

在命令模式下按下:(英文冒号)就进入了底线命令模式。光标就移动到了最底下,就可以在这里输入一些底线命令了!

在这里插入图片描述

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):wq

  • q 退出程序
  • w 保存文件

在这里插入图片描述

按ESC键可随时退出底线命令模式。

在这里插入图片描述

简单的说,我们可以将这三个模式想成底下的图标来表示:

Linux操作系统入门_第30张图片

执行流程

新建或者编辑文件,按 i 进入编辑模式,编写内容,编写完成后退出编辑模式,Esc,退出之后进入底线命令模式:wq保存退出!

Vim 按键说明

除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行,配置文件中空格较多!
数字< space> 那个 n 表示『数字』,例如 20 。快捷切换光标,数字+空格即可!
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
数字< Enter> n 为数字。光标向下移动 n 行(常用)
搜索替换
/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird后,按下 N 则表示『向上』搜寻 vbird 。
删除、复制与粘贴
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd 删除游标所在的那一整行(常用)
ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符
d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G 复制游标所在行到第一行的所有数据
yG 复制游标所在行到最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成30 行。 (常用)
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u 复原前一个动作。(常用)
[Ctrl]+r 重做上一个动作。(常用)

第二部分:一般模式切换到编辑模式的可用的按钮说明

进入输入或取代的编辑模式
i, I 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用)
r, R 进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
[Esc] 退出编辑模式,回到一般模式中(常用)

第三部分:一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令
:w 将编辑的数据写入硬盘档案中(常用)
:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q 离开 vi (常用)
:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在vi 当中,常常具有『强制』的意思~
:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename] 将编辑的数据储存成另一个档案(类似另存新档)
:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。
:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
:set nu设置行号,代码中经常使用 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!

掌握标记的命令即可,我们平时使用Vim最多的就是修改下文件内容而已!

4.5 账号管理

简介

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。

属主,属组

Linux(Centos7)取消密码复杂度及长度限制(使用passwd修改用户密码少于8位时的情况)

(1)编辑密码验证策略

vim /etc/pam.d/system-auth
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=6 ucredit=1 lcredit=1 ocredit=1 dcredit=1

Linux操作系统入门_第31张图片

(2)修改用户root的密码
注:输入一次密码:123456,提示“无效的密码: 密码未通过字典检查 - 过于简单化/系统化”,不用管,继续输入密码:123456,回车即可。

[root@centos7 ~]# passwd root
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@centos7 ~]# 

添加账号 useradd 并修改用户的密码

useradd -选项 用户名

参数说明:

  • 选项 :
    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -m 使用者目录如不存在则自动建立,如/home/Linux。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名 :
  • 指定新账号的登录名。

测试:

# 此命令创建了一个用户linux,其中-m选项用来为登录名linux产生一个主目录
/home/linux
[root@centos7 home]# useradd -m linux
#或者
#新增用户后设置密码 passwd + name
[root@centos7 ~]# useradd Linux
#或者
[root@centos7 ~]# adduser Linux
#此时我们输入想要设置的密码,密码是不回显到屏幕上的,所以我们在屏幕上看不到输入的密码
[root@centos7 ~]# passwd Linux
#此时我们在home路径下,可以看到刚才创建的用户Linux
#创建好用户后,直接按快捷键Ctrl+d切换到刚刚创建的用户

理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了!

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow,/etc/group等。

使用cat /etc/passwd可以查看新增用户的信息

配置Linux用户具有root权限,方便后期加sudo执行root权限的命令

[root@centos7 ~]# vim /etc/sudoers

修改/etc/sudoers文件,在%wheel这行下面添加一行,如下所示:

# Allow root to run any commands anywhere
root  ALL=(ALL)   ALL

# Allows people in group wheel to run all commands
%wheel ALL=(ALL)    ALL
Linux   ALL=(ALL)   NOPASSWD:ALL

注意:Linux这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了Linux具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以Linux要放到%wheel这行下面。

删除帐号 userdel

如果一个用户的账号不再使用,可以从系统中删除。

删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel 命令,其格式如下:

[root@centos7 home]# userdel -r linux   # 参数 -r,它的作用是把用户的主目录一起删除。

此命令删除用户linux在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

修改帐号 usermod

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod 命令,其格式如下:

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd 命令中的选项一样,可以为用户指定新的资源值。

例如:

[root@centos7 home]# usermod -s /bin/ksh -d /home/z –g developer linux

此命令将用户linux的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

Linux下如何切换用户

root用户

Linux操作系统入门_第32张图片

1、切换用户的命令为: su username 【username是你的用户名】

Linux操作系统入门_第33张图片

2、从普通用户切换到root用户,还可以使用命令: sudo su

3、在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令

Linux操作系统入门_第34张图片

4、在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root]

$表示普通用户

#表示超级用户,也就是root用户

用户的密码设置

我们一般通过root创建用户的时候!要配置密码!

Linux上输入密码是不会显示的,你正常输入就可以了,并不是系统的问题!

如果是超级用户的话:

passwd username:
new password:
re password:

如果是普通用户:

passwd
(current) UNIX password :
new password:#密码不能太过于简单!
re password:

锁定账号

root,冻结这个账号,一旦冻结,这个人就登录不上系统了!

[root@centos7 ~]# passwd -l linux  # 锁定之后,这个用户就不能登录了  
[root@centos7 ~]# passwd -d linux  # 将密码清空,没有密码也不能登录 

在/opt目录下创建文件夹,并修改所属主和所属组

(1)在/opt目录下创建module、software文件夹

[root@centos7 ~]# mkdir /opt/module
[root@centos7 ~]# mkdir /opt/software

(2)修改module、software文件夹的所有者和所属组均为Linux用户

[root@centos7 ~]# chown Linux:Linux /opt/module 
[root@centos7 ~]# chown Linux:Linux /opt/software

(3)查看module、software文件夹的所有者和所属组

[root@centos7 ~]# cd /opt/
[root@centos7 ~]# ll
#出现以下内容
总用量 12
drwxr-xr-x. 2 Linux Linux 4096 516 23:06 module
drwxr-xr-x. 2 root  root  4096 1031 2018 rh
drwxr-xr-x. 2 Linux Linux 4096 516 23:06 software

(4)卸载虚拟机自带的JDK

注意:如果你的虚拟机是最小化安装不需要执行这一步。

[root@centos7 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
[root@centos7 ~]# rpm -qa | grep -i jdk | xargs -n1 rpm -e --nodeps
#各参数的含义
rpm -qa:查询所安装的所有rpm软件包
grep -i:忽略大小写
xargs -n1:表示每次只传递一个参数
rpm -e –nodeps:强制卸载软件

(5)重启虚拟机

[root@centos7 ~]# reboot

4.6 用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

创建一个用户组 groupadd

[root@centos7 ~]# groupadd mstudy
[root@centos7 ~]# cat /etc/group

创建完用户组后可以得到一个组的id,这个id是可以指定的!-g 520,若果不指定就是自增1

[root@centos7 ~]# groupadd -g 520 mstudy2
[root@centos7 ~]# cat /etc/group

删除一个用户组 groupdel

[root@centos7 ~]# groupdel mstudy
[root@centos7 ~]# cat /etc/group

修改用户组的权限信息和名字 groupmod -g -n

# 把用户组mstudy2的id改为666,组名改为mstudy3
[root@centos7 ~]# groupmod -g 666 -n mstudy3 mstudy2
[root@centos7 ~]# cat /etc/group

切换用户组

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

# 登录当前用户 Linux
$ newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

拓展:文件的查看( 了解即可 )

/etc/passwd

用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell

这个文件中的每一行都代表这一个用户,我们可以从这里看出这个用户的主目录在哪里,可以看到属于哪一个组!

登录口令:把真正的加密后的用户口令字存放到/etc/shadow文件中,密码经过了加密,保证我们密码的安全性!

用户组的所有信息都存放在/etc/group文件中。

4.7 磁盘管理

概述

Linux磁盘管理好坏直接关系到整个系统的性能问题。

Linux磁盘管理常用三个命令为 df、du 和 fdisk。

  • df :列出文件系统的整体磁盘使用量
  • du:检查磁盘空间使用量

df ( 列出文件系统整体的磁盘使用量 )

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

Linux操作系统入门_第35张图片

du ( 检查磁盘空间使用量 )

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。

Linux操作系统入门_第36张图片

通配符 * 来代表每个目录。

与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

Linux操作系统入门_第37张图片

在这里插入图片描述

磁盘挂载与卸除

Mac或者想使用Linux挂载我们的一些本地磁盘或者文件!

Linux 的磁盘挂载使用 mount 命令

Linux操作系统入门_第38张图片

卸载使用 umount 命令,umount -f [挂载位置]强制卸载

除了这个之外,以后我们安装了JDK,其实可以使用java中的一些命令来查看信息!

4.8 进程管理

Linux中一切皆文件

(文件∶读写执行 (查看,创建,删除,移动,复制,编辑),权限 (用户、用户组),系统 (磁盘,进程) )

简介

1、在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。

2、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。

3、 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

4、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。

命令

ps 查看当前系统中正在执行的进程的各种进程信息

基本语法

  • ps –选项

选项说明:

  • -a:显示当前终端的所有进程信息
  • -u:以用户的形式显示进程信息
  • -x:显示后台进程运行的参数
# ps -aux 查看所有的进程
# ps -aux|grep xxx  查看某个服务的进程 如,ps -aux|grep mysql
# 说明:
# 1、grep 命令用于查找文件里符合条件的字符串。
# 2、 | 在Linux这个叫做管道符 A|B,命令格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象

对于我们来说,这里目前只需要记住一个命令即可 ps -xx|grep 进程名字!过滤进程信息!

ps -ef :可以查看到父进程的信息

ps -ef|grep mysq1 # 看父进程我们一般可以通过目录树结构来查看!

#进程树
pstree -pu
	-p  显示父id
	-u  显示用户组

Linux操作系统入门_第39张图片

结束进程:杀掉进程,等价于windows结束任务!

我们平时写的一个Java代码死循环了,可以选择结束进程!杀死进程!

kill -9 进程的id  #表示强制结束该进程!

五、环境安装

5.1 宝塔面板安装

1、傻瓜式 ( 宝塔面板 )

宝塔面板安装教学: https://www.bt.cn/bbs/thread-19376-1-1.html

安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 12f2c1d72

下载完毕之后,就可以得到一个地址:宝塔的管理面板!

url:xxx

username:xxx

password:xxx

Linux操作系统入门_第40张图片

Linux操作系统入门_第41张图片

注意:

  • 如果是本地虚拟机上的CentOS7系统安装的宝塔面板,则先在本地CentOS7系统开启8888端口
  • 使用内网面板地址 (如:http://192.168.10.110:8888/f543eaa8) 访问宝塔面板

自定义安装服务器环境

Linux操作系统入门_第42张图片

一键部署应用

Linux操作系统入门_第43张图片

端口开启

Linux操作系统入门_第44张图片

放入网站进行访问

比如tomcat就直接放到webapps目录下!

特殊的网站:开源项目,就按照自己操作来!

上传文件尽量使用XFTP

网站如果访问测试失败,一定是防火墙,( Linux服务器,阿里云安全组面板 )

war直接丢到tomcat即可

jar直接用 java -jar 执行即可访问

2、命令式 ( 原生 )
使用Linux命令操作

安装软件一般有三种方式:

  • rpm ( Jdk:在线发布一个SringBoot项目)
  • 解压缩( tomcat,启动并通过外网访问,发布网站)
  • yum在线安装 ( docker:直接安装运行跑起来docker就可以 )

5.2 jdk(rpm)安装

1、rpm下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、如果有安装openjdk 则先卸载

[root@centos7 ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
# 检查
[root@centos7 ~]# rpm -qa|grep jdk
jdk1.8.0_121-1.8.0_121-fcs.x86_64
# 卸载 -e --nodeps 强制删除
[root@centos7 ~]# rpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64
[root@centos7 ~]# java -version
-bash: /usr/bin/java: No such file or directory # OK

3、安装java环境JDK

#检测当前系统是否存在java环境!		java -version
#如果有的话就需要卸载
# rpm -qa|grep jdk		# 检测JDK版本信息
# rpm -e --nodeps jdk_

#卸载完毕后即可安装jdk
# rpm -ivh rpm包

如果存在则可以提前卸载:

Linux操作系统入门_第45张图片

安装:

# 安装java rpm
[root@centos7 java]# rpm -ivh jdk-8u261-linux-x64.rpm

Linux操作系统入门_第46张图片

配置环境变量/etc/profile,在文件的最后面增加 java 的配置和 windows 安装环境变量一样

# 安装完成后配置环境变量 文件:/etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
# 保存退出
# 让新增的环境变量生效!
source /etc/profile
# 测试 java -version
[root@centos7 etc]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
[root@centos7 etc]# 

我们来发布一个项目试试!

firewall-cmd --zone=public --add-port=8081/tcp --permanent  #开启防火墙端口,8081是测试项目的访问端口
systemctl restart firewalld.service #重启防火墙
firewall-cmd --list-ports # 查看所有防火墙的端口信息

启动项目:

项目jar包我放到了/opt/module/java/java_back目录下

[root@centos7 java_back]# java -jar springboot-helloworld.jar 
[root@centos7 java_back]# nohup java -jar springboot-helloworld.jar >nohup.out 2>&1 &  # 后台启动运行

测试:http://localhost:8081/hello

Linux操作系统入门_第47张图片

5.3 Tomcat(解压缩)安装

ssm war就需要放到 tomcat 中运行!

1、下载tomcat安装包,官网下载即可 tomcat9 apache-tomcat-9.0.63.tar.gz

2、解压这个文件

#解压到当前文件夹
tar -zxvf apache-tomcat-9.0.63.tar.gz
#解压到指定文件夹
tar -zxvf apache-tomcat-9.0.63.tar.gz -C /opt/module/

3、进入bin目录,和我们以前在Windows下看的都是一样的,启动tomcat测试! ./xxx.sh脚本即可运行

# 执行: startup.sh -->启动tomcat
# 执行: shutdown.sh -->关闭tomcat
./startup.sh
./shutdown.sh

Linux操作系统入门_第48张图片

4、确保Linux的防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开放的!

# 查看firewall服务状态
systemctl status firewalld
# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
# tomcat端口是8080
开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效

Linux操作系统入门_第49张图片

5.4 Docker(yum)安装

我们现在是在Linux下执行,一定要联网,yum在线安装,即yum install -y yum源

安装

1、官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/

2、检测或确定你是CentOS7及以上版本

[root@centos7 bin]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@centos7 bin]# 

3、安装准备环境,yum安装gcc相关包(需要确保 虚拟机可以连上外网 )

yum -y install 包名  # yum install 安装命令  -y所有的提示都为 y
yum -y install gcc
yum -y install gcc-c++

4、卸载旧版本

yum -y remove docker docker-common docker-selinux docker-engine
# 官网版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

5、安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

6、设置stable镜像仓库

# 错误
yum-config-manager --add-repo
https://download.docker.com/linux/centos/docker-ce.repo
## 报错
[Errno 14] curl#35 - TCP connection reset by peer
[Errno 12] curl#35 - Timeout
# 正确推荐使用国内的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

7、更新yum软件包索引

yum makecache fast

8、安装Docker CE

yum -y install docker-ce docker-ce-cli containerd.io

9、启动docker

systemctl start docker

10、测试

docker version
docker run hello-world
docker images

11、配置镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qiyb9988.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

12、卸载

systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker

六、扩展:Vmware使用

6.1 快照

保留当前系统信息为快照,随时可以恢复,以防未来系统被你玩坏,就好比游戏中的归档!

Linux操作系统入门_第50张图片

Linux操作系统入门_第51张图片

6.2 本地网络配置

桥接模式

需要保证Linux虚拟机和本机处在同一个网段!

windows

Linux操作系统入门_第52张图片

Linux 也必须要配置到对应的网段192.168.0.*,如192.168.0.110

Linux操作系统入门_第53张图片

桥接模式:虚拟机的网络地址会自动映射到本地网络,一定要桥接到正确的网卡即可!

Linux操作系统入门_第54张图片

NAT模式

静态的话就需要配置IP地址,IPADDR=192.168.0.110,以下是静态的网络配置,这两种方式,都可以让虚拟机连接外网从而实现网络开发!

Linux操作系统入门_第55张图片

1、修改网络IP地址为静态IP地址,避免IP地址经常变化,从而方便节点服务器间的互相通信

[root@centos7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

将其中的内容替换成以下内容,执行Esc+“:wq”命令,保存退出

#网络类型(通常是Ethemet)
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
#IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
BOOTPROTO="static"
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"
#随机id
UUID="14e65587-b35a-43bd-99fa-18034764c8fa" 
#接口名(设备,网卡)
DEVICE="ens33"  
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT="yes"
#IP地址
IPADDR=192.168.10.110
#网关  
GATEWAY=192.168.10.2      
#域名解析器
DNS1=192.168.10.2

执行systemctl restart network命令,重启网络服务,如果报错,则执行“reboot”命令,重启虚拟机

[root@centos7 ~]# systemctl restart network

使用ifconfig命令查看当前IP

[root@centos7 ~]# ifconfig

Linux操作系统入门_第56张图片

修改主机名称为centos7

[root@centos7 ~]# vim /etc/hostname

配置Linux虚拟机主机名称映射hosts文件,打开/etc/hosts

[root@centos7 ~]# vim /etc/hosts
#将默认内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#更改为
192.168.10.110 centos7

重启虚拟机centos7

[root@centos7 ~]# reboot

修改windows的主机映射文件(hosts文件)

#进入C:\Windows\System32\drivers\etc路径
#拷贝hosts文件到桌面
#打开桌面hosts文件并添加如下内容
192.168.10.110 centos7
#将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件

2、虚拟机的虚拟网络配置

打开虚拟机,编辑==> 虚拟网络编辑器 ==>VMnet8

Linux操作系统入门_第57张图片

Linux操作系统入门_第58张图片

3、Windows系统网络适配器配置

修改VMware Network Adapter VMnet8的IP地址,保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同

Linux操作系统入门_第59张图片

Linux操作系统入门_第60张图片

傻瓜式配置,只能在图形界面下有效!

Linux操作系统入门_第61张图片

Linux操作系统入门_第62张图片

配置完毕即可上网!

6.3 CentOS7操作系统基础配置

CentOS7操作系统基础配置要求如下(本文Linux系统全部以CentOS-7-x86_64-DVD-2009.iso为例)

(1)使用yum安装需要虚拟机可以正常上网,yum安装前可以先测试下虚拟机联网情况

[root@centos7 ~]# ping www.baidu.com
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=128 time=345 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=128 time=344 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=128 time=345 ms

(2)安装epel-release

注:Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)

[root@centos7 ~]# yum install -y epel-release

(3)安装Linux命令补全工具

[root@centos7 ~]# yum install -y bash-completion bash-completion-extras 

(4)注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作

#net-tool:工具包集合,包含ifconfig等命令
[root@centos7 ~]# yum install -y net-tools
#vim:编辑器
[root@centos7 ~]# yum install -y vim

(5)关闭防火墙,关闭防火墙开机自启

[root@centos7 ~]# systemctl stop firewalld
[root@centos7 ~]# systemctl disable firewalld.service

你可能感兴趣的:(虚拟机与云服务器,linux,服务器,centos)