Linux
1. 概述
- 操作系统
- Linux
- Linux其实就是一款操作系统,和Windows,mac-os都是同一种类型的产品。就是操作系统软件。Linux主要应用服务器,作为服务器系统软件进行运行。
- 服务器划分方式
- 硬件的划分
- 即使一台计算机,这台计算机的配置要比普通的pc(个人电脑)机要高的多
- 软件的划分
- 在硬件服务器去安装一个数据库,那么这个服务器我们常常将其称之为数据服务器
- 在硬件服务器上去安装一个应用服务器(tomcat),那么这个服务器我们常常将其称之为应用服务器
- 在硬件服务器上去安装一个负载均衡的软件(Nginx),那么这个服务器我们常常将其称之为负载均衡服务器
- 硬件的划分
- 不论我们在硬件服务器上需要安装哪些软件,在安装这些软件之前必须先要安装系统软件
- 作为服务器系统软件,我们常常使用的就是Linux
2. 特点
- 开源免费
- 完全兼容POSIX1.0标准
- 多用户、多任务
- Linux占用的硬件资源比较少
- 安全、稳定
- 提倡使用命令和操作系统进行交互
- 支持多种平台
- Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、 TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;
- Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性
3. Linux和Windows区别
- 目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 Unix传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
- Windows与Linux在其他方面的不同
- 开放性
- 所谓的开放性就是Linux 操作系统是开放源码系统,可以对其程序进行编辑修改
- 而微软的Windows 系统是受微软版权保护,就是只能微软内部进行开发及修改。
- 文件格式不同
- Windows 操作系统内核是NT,而Linux 是 shell;另外,windows 硬盘文件格式是fat32或NTFS,而Linux 需要的文件格式是ext2或ext3,该操作系统还多一个SWAP格式的交换分区
- 免费与收费
- 在中国,对个人用户Windows 和Linux 都是免费的,对公用户Windows 需要收费,Linux 是免费的。
- 技术支持
- Windows 较普及
- Linux 需要深度的Linux 版块支持。
- 安全性
- Linux 相对Windows 来说安全性更高。
- 开源
- 开源就是指对外部开放软件源代码。Linux 开源,而Windows并不开源。
- 使用习惯
- Windows 放弃了dos的字符模式,主攻图形界面,让桌面系统更易用。
- Linux 字符模式运行的更好,图形界面还只是附带品,可有可无。
- 软件与支持
- Windows 下可以运行绝大部分软件、玩99.999%的游戏、硬件厂商近乎100%的支持。
- Linux 下可直接运行的软件数量和win下比起来就是1和99的区别,而且目前选择Linux 的人基本不会考虑玩游戏,同时Linux 正期待更多硬件厂商的支持
- 开放性
4. Linux 应用领域
- 今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位。在企业级开发中,我们通常使用Linux作为我们的服务器。
- 比如:服务器系统Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;
- 嵌入式系统路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,高性能运算、计算密集型应用Linux有强大的运算能力。
5. Linux内核
- Linux的基本思想有两点
- 一切都是文件
- 每个文件都有确定的用途
- 内核
- 就是这个操作系统的核心代码,由于Linux是开源的,因此很多的厂商就可以基于这个内核进行二次开发,做出很多很多的操作系统,这些操作系统我们就常常将其称之为Linux的发行版本
- 作为一个Linux操作系统是存在很多的发行版本,他们之间的命令都是大同小异的,我们在学习的时候只需要选择一款公司常用的发行版本即可
- 这里我们选择的是RHEL系列的发行版本:Centos
6. Linux 之CentOS
- CentOS,是基于 Red Hat Linux 提供的可自由使用源代码的企业级 Linux 发行版本;是一个稳定,可预测,可管理和可复制的免费企业级计算平台
- 主要特点
- 主流: 目前的Linux操作系统主要应用于生产环境,主流企业级Linux系统仍旧是RedHat或者CentOS
- 免费: RedHat 和CentOS差别不大,CentOS是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本
- 更新方便:CentOS独有的yum命令支持在线升级,可以即时更新系统,不像RED HAT那样需要花钱购买支持服务!
7. 搭建环境
7.1 下载安装虚拟机
- 我们要使用这个操作系统,首先就需要有硬件的环境。硬件环境就是个人电脑,但是个人电脑上已经安装了一个操作系统就是windows,怎么处理呢?
- 把windows格式化了然后安装Linux
- 在个人电脑上再次安装一个操作系统就是Linux(个人电脑上就存在两个操作系统,windows,Linux,但是使用的时候只能使用一个)
- 我们可以通过一个软件去模拟硬件的环境,这个软件就是虚拟机。虚拟机的作用就是模拟硬件环境的
- 常见的虚拟机产品
- VMware
- VM VirtualBox
- VMware software下载与安装
- https://www.vmware.com/网址下载安装
7.2 下载安装linux
- 下载操作系统:
- (操作系统我们常常将其称之为镜像)
- 下载地址:https://www.centos.org/download/
- 下载完毕以后就是:CentOS-7-x86_64-DVD-1810.iso
- 安装linux
- 在真实的开发环境中不会在虚拟机中去安装linux,都是使用一台独立的服务器去安装操作系统,学习在虚拟机中安装linux没有太大的意义,并且安装也比较耗时
7.3 操作linux
- 存在两种方式
- 直接在虚拟机中去操作linux操作系统(不建议: 在真实的开发环境中不会在虚拟机中去安装linux,都是使用一台独立的服务器去安装操作系统)
- 通过一些远程连接工具连接到虚拟机的linux操作系统上,然后进行linux的使用(建议使用这种方式)
- 常见的远程连接工具:CRT (SecureCRT)、PuTTY、xshell、MobaXterm
- 这里使用CRT
- 需要先现在注册软件
- 注册之后才可以进入CRT
- 通过远程链接工具CRT链接到linux的时候,需要保证windows操作系统可以和linux进行正常的通讯。要进行正常的通讯就需要做一些配置。
- 在虚拟机中进行配置,具体的步骤如下所示:
- 进行网络编辑
- 更改子网的网段
- 更改网关
- 更改windows中vmnet8虚拟网卡的IP地址
- 完成之后使用IP在CRT中创建连接
- 注意:轻易不要卸载虚拟机软件,可能会导致网络设置中找不到虚拟网卡
8. Linux操作系统命令
8.1 命令介绍
- 命令我们可以理解成在Windows中我们常常为了查看ip输入的ipconfig,在Linux中也有很多的命令,比如操作目录、文件、网络、磁盘等等命令
- Linux刚面世时并没有图形界面, 所有的操作全靠命令完成, 如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等
- 在职场中,大量的 服务器维护工作 都是在 远程 通过SSH客户端 来完成的, 并没有图形界面, 所有的维护工作都需要通过命令来完成
- 作为后端程序员或者运维, 必须要或多或少的掌握一些Linux常用的终端命令
- Linux发行版本的命令大概有200多个, 但是常用的命令只有几十个而已
8.2 Linux目录结构
- 在Linux中是不存在盘符的概念,这个windows操作系统就不一样的。Linux操作系统提供的是一个树形的目录结构,不同的目录会存放不同的文件内容。
- 结构图
- 详解
目录 | 详解 |
---|---|
/bin | Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。这些命令可以被任意的用户进行访问 |
/etc | Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。包含后期我们自己所安装的一些软件所需要的配置文件 |
/home | 用户(普通用户)的主目录,在Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的 |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录 |
/sbin | s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。这些命令只能被超级管理员进行使用 |
/var | variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件 |
8.3 Linux 用户管理
- 相关命令
命令 | 作用 |
---|---|
useradd 选项 用户名 | 添加用户,后续可以使用这个用户名登录系统 |
passwd 用户名 | 设置口令,即设置密码,普通用户只能修改自己的,管理员可以修改所有用户 |
su 用户名 | 切换账号 |
usermad 选项 用户名 | 修改用户,就是更改用户的有关属性 |
userdel 选项 用户名 | 删除一个已有的用户 |
命令 --help | 显示此命令的帮助信息,相关选项 |
8.4 Linux用户组管理
- 概述
- 为了方便用户管理, 提出了 组 的概念
- 新增一个账户,它默认属于自己(账户)的组
- 比如新建账户【张三】,那么它默认对应的组就是张三
- 一个用户可以有一个或者多个组
- 例如:我们把张三、李四、王五统一放到【开发组】,在对文件授权的时候,我们只对【开发组】进行授权由此,这样的话【张三、李四、王五】都有相等的权利操作了
- 相关命令
命令 | 作用 |
---|---|
groupadd 选项 用户组 | 添加用户组 |
groupadd 选项 ID 用户组 | 创建新的用户组,并添加组ID |
groupmod 选项 用户组 | 修改用户组 |
groups 用户名 | 查询一个用户属于哪个用户组 |
groupdel 用户组 | 删除一个已有的用户组 |
gpasswd 选项 组名 | 把多个用户按照业务需求归并到统一的一个组中 |
grep ‘用户组’ /etc/group | 查看用户组下所有用户 |
8.5 常用系统管理
- 相关命令