Linux基础知识及学习准备
1.Linux学习大致介绍
https://www.bilibili.com/video/av47702283/?p=2
1.1 linux课程内容
JavaEE:至少得会Linux搭建JavaEE环境
大数据对服务器集群的操作,需要学习shell编程:脚本
python专业开发平台:Ubuntu;及开发环境搭建
1.2 linux学习方向
1)linux运维工程师:
- 服务器的规划、调试优化、日常监控、故障处理、数据备份、日志分析
- 服务器瘫痪,要迅速恢复
2)linux嵌入式工程师:
- 熟练掌握linux下各种驱动程序开发
- 在嵌入式系统中进行程序开发
3)linux下开发项目:
- 程序开发、部署、维护
- python、JavaEE、c/c++、PHP……
程序员为什么要学linux:程序的开发、部署、维护都需要linux操作系统的使用。
1.3 linux应用领域
1)个人桌面领域
2)服务器领域:因为Linux OS
- 免费、开源
- 安全、稳定
- 高效、处理高并发非常强悍
3)嵌入式系统 - 运行稳定
- 对网络良好支持
- 低成本
- 可以根据需求进行软件裁剪,内核最小可以达到几班KB
- 主要应用:物联网、智能硬件方面将会是主要应用领域
1.4 linux进阶之路
1)第一阶段:基本操作命令
- ①文件操作命令
- ②编辑工具使用:vi、vim
- ③Linux用户管理:useradd、userdel、usermod……
2)第二阶段:linux各种配置
- ①环境变量配置
- ②网络配置
- ③服务配置
3)第三阶段:linux下搭建对应语言的开发环境
- ①大数据
- ②JavaEE
- ③Python
4)第四阶段:能写shell脚本,对linux服务器进行维护
- shell编程
更高要求:(已经达到运维工程师的要求)
5)第五阶段:能进行安全设置,防止攻击。保障服务器正常运行,能对系统调优
6)第六阶段:深入理解linux系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各环节的部署和维护方法
1.5 Linux的学习方法
1)高效而愉快的学习:学习结果——达到实操水平
2)先建立整体框架,然后细节
3)不需要掌握所以指令,学会查询手册和百度(基本指令要掌握)
4)先know how,再know why
5)计算机是一门“做中学”的学科,必须上手做了才会
6)适当的囫囵吞枣(实操中会使你大彻大悟)
7)Linux不是编程,重点是实际操作,各种指令要玩的溜
2.Linux基础知识
2.1 Linux入门
linux系统组成及结构:
https://blog.csdn.net/hguisu/article/details/6122513
1)计算机硬件、操作系统内核、操作系统发现版本的关系
- 硬件层
- 操作系统层
- shell层:命令解释层
- 应用软件
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。
2)Liunx发展历史:Unix与Linux关系(GNU计划)
2.2 安装VM和Linux系统
2.2.1 VM的网络模式
VMware虚拟机三种网络模式详解
参考文章:
https://www.linuxidc.com/Linux/2016-09/135521.htm
首先是VMware的几个虚拟设备:
- VMnet0:这是VMware用于虚拟桥接网络下的虚拟交换机;
- VMnet1:这是VMware用于虚拟Host-Only网络下的虚拟交换机;
- VMnet8:这是VMware用于虚拟NAT网络下的虚拟交换机;
- VMware Network Adapter VMnet1:这是Host用于与Host-Only虚拟网络进行通信的虚拟网卡;
- VMware Network Adapter VMnet8:这是Host用于与NAT虚拟网络进行通信的虚拟网卡;
1.vmware为我们提供了三种网络工作模式,它们分别是:
- Bridged(桥接模式)
- NAT(网络地址转换模式)
- Host-Only(仅主机模式)。
打开vmware虚拟机,我们可以在选项栏的“编辑”下的“虚拟网络编辑器”中看到VMnet0(桥接模式)、VMnet1(仅主机模式)、VMnet8(NAT模式),那么这些都是有什么作用呢?其实,我们现在看到的VMnet0表示的是用于桥接模式下的虚拟交换机;VMnet1表示的是用于仅主机模式下的虚拟交换机;VMnet8表示的是用于NAT模式下的虚拟交换机。
2.宿主机的网卡:包含自己的网络适配器,以及两个虚拟机网络适配器
同时,在主机上对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,它们分别作用于仅主机模式与NAT模式下。在“网络连接”中我们可以看到这两块虚拟网卡,如果将这两块卸载了,可以在vmware的“编辑”下的“虚拟网络编辑器”中点击“还原默认设置”,可重新将虚拟网卡还原。
2.2.2 VM安装
1.需求:
- 1)安装虚拟机
- 2)通过vm创建一个虚拟空间
- 3)在虚拟机上安装Centos系统:通过vm软件在虚拟空间上,安装Centos
- 4)使用Centos
2.windows、vm和centos关系:
3.VM安装步骤
1)安装虚拟机软件:
BOIS里修改设置开启虚拟化设备支持(F2/F10)
2)虚拟空间的设置:
虚拟机网络连接的三种形式
2.2.3 centos安装
1.安装流程
http://mirrors.163.com/centos/
1)CentOs磁盘分区的设置:
- /boot分区:操作系统的引导文件:200M
- swap:交换分区,当系统内存不足时,可以使用该分区暂时替代内存。物理内存的1~2倍之间:2048M
- /:根分区:
2)CentOs安装模块的选择:桌面、还是最小安装……
3)CentOs root 用户的创建
虚拟机克隆
- 1)完全克隆
- 2)连接克隆
第一步:修改改静态IP
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2
NAME=eth0
第二步:改主机名
vim /etc/sysconfig/network
- 改HOSTNAME字段
- 改成 HOSTNAME=hadoop100
第三步:改网卡脚本文件(新虚拟机)
vim /etc/udev/rules.d/70-persistent-net.rules
- 第一行删掉
- 第二行最后 NAME=“eth1” 改成 NAME=“eth0”
2.2.4 VM tools安装和共享文件夹的设置
1)VMware Tools的主要作用是:
- 虚拟硬件的驱动,鼠标的无缝移出移入,
- 剪贴板共享;
- 共享主机上的文件夹等功能;
2)安装:https://blog.csdn.net/blessed_sy/article/details/81173746
3)windows和linux共享文件夹的设置:
https://www.cnblogs.com/huangjianxin/p/6343881.html
4)共享文件夹的使用:
在终端命令行输入 cd /mnt/ + 按下两次Tab键 ,回车,即可进入主机中的共享文件夹。
2.3 Linux目录结构
2.3.1 基本介绍
linux 的文件系统:
- 采用级层式的树状目录结构, 在此结构中的最上层是根目录“/” , 然后在此目录下再创建其他的目录。
记住一句经典的话: 在 Linux 世界里, 一切皆文件。
深刻理解 linux 树状文件目录是非常重要的:
2.3.2 每个目录的作用
每个目录的存放内容都有要求,需要清楚。
可参考博客:https://blog.csdn.net/u013239236/article/details/48845251
1./bin:重点(/usr/bin、/usr/local/bin)
- 二进制可执行命令, binary的缩写;
- 这个目录存放着最经常使用的命令;
2./sbin(/usr/sbin、/usr/local/sbin)
- s代表super user的意思;
- 这里存放的是系统管理员使用的系统管理程序;
3./home:重点
- 存放普通用户的主目录;
- 每天用户都有自己的主目录,一般名称为自己账户名;
4./root:重点
- 该目录为系统管理员的用户主目录
5./boot:重点
- 存放启动Linux时使用的一些核心文件;
- 包括一些连接文件,以及镜像文件;
6./proc
- 是一个虚拟目录;
- 是系统内存的映射,通过访问这个目录来获取系统信息。
如:查看Linux内核版本命令(两种方法):
[root@S-CentOS home]# cat /proc/version
7./srv
- service的缩写;
- 存放一些服务启动之后需要提取的数据;
8./sys
- 这是linux2.6内核的一个很大变化文件系统
- 目录下安装了2.6内核中新出现的一个
9./tmp
- 公用的临时文件存储点;
- 这个目录是用来存放一些临时文件;
10./dev
- 类似于windows的设备管理器;
- 把所有硬件用文件的形式存储;
11./media:重点
- linux系统会自动识别一些设备:如U盘、光驱……
- 当识别后,linux会把识别的设备,挂载到这个目录下
12./mnt:重点
- 系统提供该目录,是为了让用户临时挂载别的文件系统;
- 可以将外部存储挂载在/mnt/上,然后进入该目录,就可以查看内容;
- eg.安装VM Tools之后,在虚拟机上设置“共享文件夹”,该文件夹就挂载在/mns目录下
13./opt
- 给主机额外安装软件所摆放的目录;
- 如安装Mysql,可以将安装软件包放在该目录下;
14./usr/local:重点
- 这是一个给主机安装额外软件所用的安装目录;
- 一般是通过编译源码的方式安装程序;
15./var:重点
- 存放不断扩充的东西, 某些大文件的溢出区;
- 习惯将经常被修改的目录放在该目录下;
- 包括各种日志文件;
16./selinux(security-enhanced linux)
- SELinux是一种安全子系统,能控制程序只能访问特定文件。
17./etc
- 系统管理和配置文件
18./lost+found
- 这个目录平时是空的,
- 系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
19./lib
- 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
- 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
2.3.1 Linux 目录总结
- 1)linux 的目录中有且只要一个根目录 /
- 2)linux 的各个目录存放的内容是规划好,不要乱放文件。
- 3)linux 是以文件的形式管理我们的设备, 因此 linux 系统, 一切皆为文件。硬件也是通过文件进行管理,通过把硬件映射成文件来进行管理。
- 4)linux 的各个文件目录下存放什么内容, 要明确。
- 5)脑海中应该有一颗 linux 目录树
3.linux实操篇-远程登陆Linux
3.1 为什么需要远程登录
- 1)实现PC对远端服务器的操作:SSH(安全外壳协议) —远程登录软件(如Xshell)
- 2)实现PC与服务器的文件上传与下载:XFtp软件
说明:公司开发时候, 具体的情况是这样的
- linux 服务器是开发小组共享的.
- 正式上线的项目是运行在公网的.
- 因此程序员需要远程登录到 centos 进行项目管理或者开发.
- 画出简单的网络拓扑示意图(帮助理解)
- 远程登录客户端有 Xshell5, Xftp5 , 我们学习使用 Xshell5 和 Xftp , 其它的远程工具大同小异
3.2 SSH
Secure Shell 的缩写,是一种网络安全协议,专为远程登录会话和其他网络服务提供安全性协议;通过使用SSH,可以把传输的数据进行加密,有效防止远程管理过程中的信息泄露问题。
从客户端来看,有两种验证登录方式:
- 1)基于密码
- 2)基于秘钥
3.2.1基于用户名/密码的验证方式:
连接请求发送,基本语法:
ssh 用户名@服务器IP地址
每次客户端连接服务器,都需要输入密码:
- 1)客户端发起SSH请求;
- 2)服务器会把自己的公钥发送给客户端;
- 3)客户端会根据服务器发来的公钥,对密码进行加密,将加密后的信息回传给服务器;
- 3)服务器使用自己的私钥进行解密、判断;
3.2.2 基于秘钥的登录方式(免密登陆)
能不能每次登录远程服务器时,免密登陆:步骤
- 1)在客户端生成一对秘钥(公钥、私钥);
- 2)客户端将生成的公钥拷贝到需要访问的服务器端机器上,重命名为authorized_keys;
- 3)客户端再次连接时,发送请求:包括IP、用户名;
- 4)服务器端接收请求,会到authorized_keys中查找,如果有相应IP和用户,会随机生成一个字符串;
- 5)服务器使用公钥加密字符串发送给客户端;
- 6)客户端通过私钥对加密字符串进行解密,然后将解密的字符串发送给服务器;
- 7)服务器对发送过来的字符串进行对比,一致,就允许免密登陆。
3.2.3 OpenSSH使用(免密登陆的设置)
OpenSSH是SSH协议的免费开源实现。
OpenSSH由客户端和服务端的软件组成:
- 1)服务端是一个守护进程(daemon),进程在后台运行并响应来自客户端的请求。服务端一般是SSHD进程,提供对远程连接的处理;
- 2)客户端包含SSH程序,以及像scp(远程拷贝),slogin(远程登录)、sftp(安全文件传输)等其他应用程序。
默认情况,CentOS系统会自带安装OpenSSH服务:
- 1)安装语法:
yum list installed | grep openssh
- 2)查看语法:
ps -ef | grep openssh
使用案例:配置node1 至 node2 机器的免密登陆:
a)在node1上,生成秘钥:
ssh-keygen -t rsa [dsa] ->按4下回车
会生成秘钥文件和公钥问价:id_rsa,id_rsa.pub
存放在主目录下 .ssh 文件夹中
rsa/dsa:两种不同的秘钥算法
b)将公钥拷贝给 node2 机器
ssh-copy-id node2的IP
首次连接,需要输入用户密码、验证成功后后续免密登陆;
会在 node2 的.ssh文件夹下复制一份公钥文件:authorized_keys
3.3 Xshell与Xftp的安装、配置与使用
3.3.1 Xshell介绍
Xshell 是目前最好的远程登录到 Linux 操作的软件, 流畅的速度并且完美解决了中文乱码。
Xshell是一个强大的安全终端模拟软件, 它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。
Xshell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
特别说明:
如果希望安装好 XShell 5 就可以远程访问 Linux 系统的话, 需要有一个前提:
- 就是Linux 启用了 SSHD 服务, 该服务会监听 22 号端口。
CentOS6 如何查看与开启SSHD服务:
1)查看SSHD服务是否正在运行:
/etc/init.d/sshd status
或者
service sshd status
服务运行输出:
openssh-daemon (pid 13624) 正在运行...
2)若处于非运行状态则使用(service sshd start)命令开启SSH服务;
3)停止SSHD服务命令(service sshd stop);
4)重启SSHD服务命令(service sshd restart)
3.3.2 Xshell安装
1)安装过程
2)Linux 连接网络、查看IP:ifconfig
3)连接Linux配置:
4)远程连接与操作
3.3.3 XFtp5 软件的安装、配置与使用
SFTP 与 SFTP远程连接
1.《计算机网络》:文件传输协议FTP、SFTP和SCP:
https://www.cnblogs.com/xingxia/p/system_ftp.html
2.SFTP:secure file transfer protocol 安全文件传输协议
- 可以为文件传输提供一种安全的网络加密方法;
- sftp是SSH的其中一部分,本身没有单独守护进程,使用SSHD的守护进程(默认端口号22)来完成相应的连接和答复操作;
3.SFTP模式连接
操作:使用SFTP连接方式连接服务器
常用命令
XFtp5 软件安装
1.XFtp5 软件介绍:
是一个基于 windows 平台的功能强大的 SFTP、 FTP 文件传输软件。
使用了 Xftp 以后, windows用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。
2.配置与使用
1)使用哪个用户(如root),就会显示哪个用户的家目录。
2)乱码的解决:
说明: 如上图配置后, 还需要刷新一下, 就可以解决中文乱码