写在前面
这则笔记主要整理linux的基础知识,主要包括以下内容:
Linux基础知识
centos7安装
初次登陆centos7
ssh远程登陆
单用户模式及救援模式
虚拟机的备份和克隆
Linux基础知识
Linux跟MacOS、Windows一样,都是计算机操作系统,不同之处在有两点:
一是开源(大部分是免费的);
二是多用在服务器领域;
常见的Linux发行版
系统名称 | 特点 | 备注 |
---|---|---|
Ubuntu | 目前最流行的个人版Linux系统,界面做得比较美观。 | 使用apt安装和更新软件 |
Red Hat Enterprise(RHEL) | 面向企业的server版本,也是应用最广泛的server版本。 | 需要授权付费才能使用yum工具 |
centOS | CentOS与RHEL 100%兼容,更重要的是完全免费。 | 使用yum工具安装和更新软件 |
Debian | 元老级的linux版本,也非常适合英语server | 使用apt安装和更新软件 |
注:课程中使用的是centos7 64位版本,它是RHEL的开源版本,两者操作习惯一致。
centos安装
前提准备:虚拟机安装
常见的虚拟机有以下三种,课程中选择的是虚拟机是vmware。
虚拟机 | 特点 | 备注 |
---|---|---|
VirtualBox | 免费,适用于mac、Windows | |
VMware fusion | 付费,使用与mac和wondows | 价格居中,尤其是在某宝上 |
parallel desktop | 付费,适用于mac和windows | 价格最贵,不过近两年都有bundle。 |
下载centOS7
注:推荐从国内的镜像网站下载安装ISO。
下载地址:
安装要点:
1. 系统语言:有中文设置,不过我选择了默认英文
2. 时区设置:选择asia,shanghai或者hongkong都OK,反正都是东八区
3. 系统分区:
在系统“安装位置”中,选择“我要配置分区”,自定义系统分区;
在 LVM下拉菜单,选择 “标准分区”,之后点击加号手动进行修改
这里分了三个区:
/boot
、/swap
、/
。除/boot
、/swap
之外的空间都可以分给/
根目录。
4. 设置一下root用户密码,稍微复杂一点。
5. 接受分区,更改,点击继续,等到安装完成。
安装注意事项:
系统分区注意事项:
- 系统分区一般按照如下原则进行划分,但考虑到虚拟机主要是为了学习目的,总共只有20G硬盘空间,所以没有设置
/data
分区。
分区名称 | 空间大小 |
---|---|
/boot | 200M |
/swap | 4G |
/ | 20G |
/data | 剩余磁盘空间 |
- swap分区大小跟物理内存大小有关,通常建议如下:
物理内存 | SWAP分区 |
---|---|
4G以内 | 内存的2倍 |
4-8G | 等于内存大小 |
8-64G | 8G |
64-256G | 16G |
虚拟机上网三种上网方式:
NAT模式:
就是让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
NAT模式中,虚拟机的网卡,是在vmware提供的一个虚拟网络,跟物理网卡的网络不在同一个网络。换句话说,宿主机可以虚拟机,虚拟机也可以访问局域网内的其他主机,但是局域网内的其他电脑不能访问虚拟机。
桥接模式
桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,物理网卡和虚拟网卡处于同一个网段,虚拟交换机相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。
在这种模式下,虚拟机可以访问外网,局域网内的其他电脑也可以访问虚拟机。
Host-only 模式
与NAT模式类似,不同之处在于,在Host-Only模式下,虚拟网络是一个全封闭的网络,虚拟机只能与虚拟机、主机互访,但虚拟机和外部的网络是被隔离开的,不能上Internet。局域网内的计算机也不能访问虚拟机。
初次登陆centos7
初次登陆centos7,首先要做三件事:设置静态ip、设置语言环境变量、安装vim。
设置静态ip
获取IP地址信息
在登录框中输入以下命令,获取ip地址
1 | dhclient // 自动获取ip地址 |
可以通过ping命令来验证网络是否联通
1 | ping -c 4 www.163.com |
查看当前网络状况,使用命令
1 | ip addr // 查看ip地址信息 |
需要注意的是,这里需要记下来ip address、gateway、netmask、ensXX(网卡信息),后面设置静态ip会用到。
编辑网卡配置
1 | # vi /etc/sysconfig/network-scripts/ifcfg-ens33 |
注:此处的XX,就是前面查到的网卡信息。
1 | ONBOOT=yes;//表示网卡随系统一起启动 |
最后,先按“esc”退出编辑模式,之后再输入“:wq”进行保存。
重启ip设置
1 | systemctl restart network.service |
正常情况下,静态ip就设置好。检查是否成功,可以ping一下外网,如:
1 | ping -c 4 www.163.com |
Troubleshooting:网关及DNS配置错误
新手设置静态ip后,有时会出现ping不通的现象,错误提示:name or service not know
,此处主要从以下两个方面排查错误:
网关gateway
ip和网关gateway必须是在同一个网段,否则会报错;
DNS
DNS服务必须要有,至少设置两组:
DNS1:
119.29.29.29
DNS1:
8.8.8.8
或者8.8.4.4
注:其他可供选择的还包括,114.114.114.114
,或者1.1.1.1
设置语言环境变量
刚安装的centos7在登陆时,经常会有一个错误提示::Centos warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
,该如何解决?
解决方法:修改环境变量配置文件 /etc/environment
1 | vi /etc/environment |
之后,按esc
键退出编辑状态,按:wq
保存退出。
安装vim
第一步:查看相关的是不是安装了vim:
1 | rpm -qa|grep vim |
出现如下的命令
1 | vim-minimal-7.4.160-1.el7.x86_64 |
第二步:输入以下命令行安装:
1 | yum -y install vim* |
第三步:vim简单配置
Vim编辑环境配置 有两种方式:
是在
/etc/vimrc
进行设置,这种设置方法会作用与所有登录到Linux环境下的用户。不建议使用。命令行
cd ~
,在~
目录下创建一个.vimrc
文件,在其中进行自己习惯的编程环境的设置,这样当别的用户使用实并不互相影响。编辑
.vimrc
文件,添加如下内容:
1 | vim .vimrc //编辑` .vimrc`文件 ,增加以下内容 |
之后,按 esc
键,输入:wq
进行保存。
ssh远程登陆
由于服务器一般都安置在机房里,管理员一般都是通过远程进行操作,所以接下里要配置ssh免密码远程登陆。
在windows下,常用的ssh软件包括putty、xshell等;在mac下,系统自带的终端 terminal就可以,更推荐的方案是iterm2.
我的个人电脑是mac,所以这里重点记录iterm2免密码登陆的方法,putty、xshell大同小异,不再赘述。
前提准备:mac安装iterm2
方法一:安装包
官网 下载安装包,解压后拖到application文件夹即可。
方法二:brew安装
1 | // 先安装 brew |
ip连接虚拟机
1 | // 终端输入 |
注意事项:
此处的username是cent os 中的账户名;
xxx.xxx.xxx.xxx 是虚拟机刚刚设置的静态ip;
22 表示连接的默认端口号
秘钥认证连接虚拟机
总体思路:
假设有两台电脑A和B,这里的A是你要操作的电脑;B是虚拟机。
先在A电脑生成密匙对(公钥、私钥各一个),私钥始终保存在A电脑不动,公钥复制出来,添加到电脑B的
authorized_ keys
里面,再进行一些必要的设置,就可以从A电脑面输入密码登陆B电脑了。注意:如果已经在A电脑上设置过keygen,比如笔者已经在搞github折腾过一回,密匙对已经存在,就不用重新生成了,只要公钥复制出来粘贴过去就可以了。
生成密钥对 (在A电脑操作)
进入当前用户目录,一般root用户只需要这样即可
1 | cd |
创建.ssh目录并设置权限
1 | mkdir -p .ssh |
进入 .ssh 目录和生成密钥对
1 | cd .ssh |
然后,一路回车即可。
注意事项:
ssh-keygen 的详细用法,参见ssh-keygen 中文手册
前面生成密钥的会显示地址,记住这个地址,需要使用
cat <filename>
查看,把id_rsa.pub 的内容复制出来,后面会用到。
编辑密钥认证文件 (在B电脑操作或者通过ssh 连接B电脑操作)
创建认证文件
1 | touch authorized_keys |
编辑认证文件
1 | vi /root/.ssh/authorized_keys |
进入编辑界面后按i 开始编辑;把刚才复制的id_rsa.pub
内容复制到里面,稳妥起见,前面可以加一行注释,注释以#开头;
保存并退出
按esc退出编辑状态,再按 :wq
保存退出
授权认证文件
1 | chmod 600 authorized_keys |
修改SSH配置(在B电脑操作或者通过ssh 连接B操作)
使用root登录修改配置文件:/etc/ssh/sshd_config
1 | vi /etc/ssh/sshd_config |
将下面的内容的前面的 # 去掉
1 | # PubkeyAuthentication yes |
修改后效果为
1 | RSAAuthentication yes |
关闭SElinux
- 临时关闭
1 | setenforce 0 |
- 永久关闭
输入vi /etc/selinux/config
,编辑这个文件,找到SELINUX=enforcing
这一行,将enforcing
改为disabled
,保存退出。
重启SSH服务
CentOS 6.x:
1 | service sshd restart |
CentOS 7.x:
1 | systemctl restart sshd |
检验是否成功
重启虚拟机,然后使用如下命令登陆
1 | ssh root@xxx.xxx.xxx.xxx |
单用户模式及救援模式
单用户模式(emergency mode)
centos 7 进入单用户模式修改root密码:
1. 重启虚拟机
2. 三秒内按下下方向键,停留在开机选择界面,定位在第一行CentOS Linux,with Linux 3.10.0-123.e17.x86_64
,按e
进入编辑界面。
3. 将 箭头所指圆心处的 ro 改为 rw init=/sysroot/bin/bash
,之后同时按 ctrl+x,进入emergency mode。
4.输入 chroot /sysroot/
,切换到centos7系统,之后输入passwd,输入新密码(两遍)即可。
注意,如果系统语言是中文,此处可能会显示一对框框,是语言设置的问题,解决方法是输入 LANG=en
,就正常了。
5. 输入 touch /.autorelabel
,密码更高生效。之后,按 ctrl+d,在输入reboot 重启虚拟机,即可使用新密码进行登录。
centos 7之前的版本进单用户模式的方法:
Linux开机引导的时候,按键盘上的
e
进入GRUB
菜单界面。在出现GRUB引导画面时
CentOS(2.6.18-274**)
,按字母e
键,进入GRUB
编辑状态。把光标移动到kernel …那一行,再敲入
e
进入命令行编辑,在kernel 一行的最后加上空格single,回车
敲入
b
,启动系统,即进入单用户模式,passwd root
修改密码。reboot
重启。
给GRUB添加一把密码锁
进入单用户模式(emergency mode)固然很方便,但有的时候出于安全考虑,我们并不想让让别人随随便便修改root密码。这时候就需要给root密码加一把锁。
centOS 6修改grub密码的方法:
vi /etc/grub.conf
,按 i 进入编辑模式,在hiddemenu
下面新增一行,输入password=密码
,设置完成后。按esc
,再输入:wq
保存退出。给grub添加密码之后,再次试图进入单用户模式,须先使用
p
命 令 ,输入正确的密码后才能够对启动标签进行编辑。
CentOS设置grub密码
CentOS从7系列版本开始使用grub2,需要通过grub2-setpassword
命令来设置。
1 | grub2-setpassword |
救援模式(rescue mode)
重启虚拟机,进入bios设置选项,默认是从硬盘启动,更改从光驱启动,保存并退出。
在光驱启动界面,选择
Toubleshooting
回车,使用下方向键选择Rescue a CentOS Linux system
,回车。选择第一项,回车。
输入
chroot /mnt/sysimage
进入初始系统,输入passwd
修改密码,保存。按
ctrl+d
退出初始系统,输入reboot
重启;进入bios 界面,设置从硬盘启动,再次重启,输入新密码进入系统。
虚拟机的备份和克隆
虚拟机备份
- 点击
virtual machine
,接着点击snapshots
- 如下图,点击
curent state
,之后在弹出的对话框里如数名称和注释,标识一下目前进展到什么程度了,最后点击OK就完成备份了。
- 想要回复到之前到备份,只要选择
restore snashots
即可。
注意:备份的时机很重要,这一点跟git当中的commit有点像。建议完成一个阶段备份一次,不要太密集,浪费磁盘空间;也不要间隔时间太长,否则一旦回复,可能辛苦半天配置正确的操作也被覆盖掉了。
虚拟机克隆
注意:虚拟机克隆有两个前提必须满足,否则无法创建快照。
把所有的快照snapshots都删除;
虚拟机shutdown;
第一步:点击菜单栏 virtual machine
-> create full clone
第二步:修改静态ip地址
1 | vi /etc/sysconfig/network-scripts/ifcfg-ens33 |
第三步:修改主机名
1 | //yuanfeng-02是修改后的名字 |