课程来自兄弟连 www.bilibili.com/video/BV1mW… P1-P11
1.Linux系统简介
1.1 UNIX与Linux发展史
背景
- MIT/GE/AT&T贝尔实验室
- 肯·汤普森 UNIX系统
- TCP/IP协议
- C语言的诞生
UNIX主要发行版本
- AIX > IBM > PowerBC
- HP-UX > HP > PA-RISC
- Solaris > Sun > SPARC
- Linux > Redhat Linux, Ubuntu Linux ... > IA(Intel, AMD, Cyrix, RISE...)
- BSD
Linux发展历史
- 1991年, 芬兰大学Linus Torvalds,开源软件
- 以企鹅作为标志
Linux内核版本
Linux主要发行版本
- Redhat系列 redhat centos suse fedora mandriva...
- Debian系列 debian ubuntu knoppix
1.2 开源软件简介
商业软件:收费,不开放源代码
开源软件:apache php python nginx samba ruby mysql mongoDB sphinx
- 使用的自由:绝大多数免费
- 研究的自由:可以获得软件源代码
- 散步及改良的自由:可以自由传播,改良甚至销售
支撑互联网的开源技术 LAMP
- Linux 操作系统 《细说Linux》
- Apache Web服务器
- MySQL 数据库
- PHP 编程语言 《细说PHP》
1.3 Linux应用领域
基于Linux的企业服务器
-
www.netcraft.com 踩点扫描
-
QQ, taobao, microsoft 官网都是用的linux服务器
嵌入式应用
- 手机、平板电脑 > 安卓
- 其他嵌入式应用
- 智能家电:机顶盒,游戏机,数码相机
- 智能卡系统
- 航空系统
- 银行系统
- 卡拉OK点歌系统
- ...
Linux在电影娱乐业
- CAD/CAM
1.4 Linux学习方法
- 为什么选择命令行:应用性、稳定性 [图形界面更占用系统资源]
- 解决问题的智慧:帮助文档、自己寻找答案、问问题描述清楚
- 英文提示的困惑
- 忘掉windows的思维方式
- 计划、专注、坚持、练习
2.Linux系统安装
2.1 VMware虚拟机安装与使用
VMware 虚拟PC软件,模拟出一台新的PC
官方网站:www.vmware.com
主要特点
- 不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统
- 本机系统可以与虚拟机系统网络通信
- 可以设定并且随时修改虚拟机操作系统的硬件环境
VMware配置
- CPU 1Ghz以上
- 内存 1GB以上
- 硬盘 8GB以上
安装VMware
- 不要用太高版本,个人用7就可以了
- 典型安装即可,最好别放C盘,不需要检测更新
新建虚拟机
- 新建虚拟机 标准 创建一个虚拟空白硬盘 选择linux操作系统 选择CentOS 名称 磁盘空间20G(用多少占用多少)
硬件设置
- 调整:内存不超过物理内存的一半(最小628M),处理器可以选多核,光驱可以选镜像文件,网卡设置比较复杂后面讲
使用技巧
- 快照:可随时恢复到快照状态
- 克隆:链接克隆占用资源更小
P6.over
2.2 系统分区
磁盘分区
- 磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分,碟片一旦划分成数个分区,不同类的目录与文件可以储存进不同的分区
- 提高读取文件和目录的效率
分区类型
- 主分区:最多4个
- 扩展分区:最多1个,主分区加扩展分区最多4个,不能写入数据,不能格式化,只能包含逻辑分区
- 逻辑分区:可以写入数据和格式化
格式化(在柜子中打入隔断)
- 又称逻辑格式化,他是根据用户选定的文件系统(FAT16 FAT32 NTFS EXT2 EXT3 EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间
- 数据块 block,文件存入数据块可以是不连续的
- 文件编号 inode
- node列表
硬件设备文件名
| 硬件 | 设备文件名 |
|---|---|
| IDE硬盘 | /dev/hd[a-d] |
| SCSI/SATA/USB硬盘 | /dev/sd[a-p] |
| 光驱 | /dev/cdrom, /dev/sr0 |
| 软盘 | /dev/fd[0-1] |
| 打印机 25针 | /dev/lp[0-2] |
| 打印机 USB | /dev/usb/lp[0-15] |
| 鼠标 | /dev/mouse |
分区设备文件名(硬件设备文件名后面加数字)
- /dev/hda1 IDE硬盘接口
- /dev/sda1 SCSI硬盘接口,SATA硬盘接口 (SATA串口接口现在更多)
- 1-4都会分配给主分区,并且任何情况下,逻辑分区永远从5开始
挂载
- 盘符--挂载点
- 必须分区:【/ 根分区】【swap分区 交换分区 内存2倍 不超过2GB】
- 推荐分区:【/boot 启动分区 200MB】
文件系统结构
从目录结构看呈树形结构
/
-> /boot
-> /etc
-> passwd
-> shadow
-> group
->/home
从硬盘结构来看,每个目录都可对应单独的硬盘空间
/boot => /dev/sda1
/home => /dev/sda2
/ => /dev/sda3
总结
- 分区:把大硬盘分为小的逻辑分区
- 格式化:写入文件系统,顺便清空
- 分区设备文件名:给每个分区定义设备文件名
- 挂载:给每个分区分配挂载点,必须是空目录
2.3 Linux系统安装
硬件调整
- 内存:最小628MB
- CD/DVD:使用ISO镜像 CentOS安装光盘
- 其余硬件后续再调整
设置光盘启动(本例为CentOS6)
- 开启电源,F2,进入BIOS(主板上的操作系统)
- Boot > CD-ROM Drive 按+号上调置顶,修改为光驱启动
- 注意安装完后要重新调整为硬盘启动
- Exit > Exit Saving Changes 保存退出
欢迎界面
- 有五个选项,安装选第一个就行 Install
- 文字界面跑字 Ctrl+Alt+Enter 进入全屏
- 进入设置页面 简体中文>美式英语键盘>基本存储设备>是,忽略所有设置>选择默认主机名>时区 亚洲上海>管理员密码
分区
- 创建自定义布局,标准分区,创建
- /boot ext4 200 => sda1
- /home ext4 2000
- 不适用 swap 1000
- / ext4 使用全部可用空间(会自动变为扩展分区下的逻辑分区)
- 格式化
- 建议选择basic server,也可以自定义
- 安装完成后,root登陆
密码原则
- 复杂性:8为以上,大小写字母,数字,符号,不能是英文单词,不能和用户相关
- 容易记忆:对你有含义的话
- 时效性:定期更换,90-180d
软件包选择
- Desktop
- Minimal Desktop
- Minimal
- Basic Server 基本服务器
- Database Server 数据库服务器
- Web Server 网页服务器
- Virtual Host 虚拟主机
- software devlopment workstation 软件开发工作站
安装日志
- /root/install.log 存储安装了在系统中的软件包及其版本信息
- /root/install.log.syslog 存储了安装过程中留下的事件记录
- /root/anaconda-ks.cfg 以kickstart配置文件的格式记录安装过程中设置的选项信息
2.4 远程登录管理工具
虚拟机网络配置:虚拟机设置 > 硬件 > 网络连接
- 桥接:利用真实网卡上网,相当于一台真的电脑,占用一个同地址段下的IP,容易引起IP冲突
- NAT:VMnet8虚拟网卡,只和本机通信,本机能上网,虚拟机也能上网
- Host:VMnet1虚拟网卡,只能和本机通信,均无网络
设置linux的IP地址
# 修改为真实机同地址段IP
# 这里是临时生效
ifconfig eth0 192.168.118.2
- 如果不能连接网络,注意网卡的选择
- 回到windows ping一下,能ping通表明可以通信
远程连接工具
- SecureCRT:快速连接 > hostname填入ip > 填入用户名 > accept and save > 输入密码
- 中文乱码解决:session option > appearance > font > 中文字体 字符集 GB2312 > 确定 > character encoding > utf-8
- ctrl+L清屏
- Winscp文件拷贝工具
3.给初学者的建议
3.1 学习linux的注意事项
- linux严格区分大小写,命令、选项、文件名等写错了会报错
- linux内所有内容都以文件形式保存,包括硬件
- 硬盘文件是/dev/sd[a-p]
- 光盘文件是/dev/sr0等
- linux不靠文件扩展名区分文件类型,少数特定类型文件会有扩展名
- 压缩包 .gz .bz2 .tar.bz2 .tgz
- 二进制软件包 .rpm
- 网页文件 .html .php
- 脚本文件 .sh
- 配置文件 .conf
- linux所有存储设备都必须挂载之后用户才能使用,包括硬盘、U盘、光盘
- windows下的程序不能直接在linux中安装和运行
3.2 服务器管理和维护建议
linux各目录的作用
初学时可以自己操作的目录/root,/tmp
| 目录名 | 目录作用 |
|---|---|
| /bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。不过放在/bin下的命令在单用户模式下也可以执行 |
| /sbin/ | 保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看 |
| /usr/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
| /usr/sbin/ | 存放根文件系统不必要的系统管理命令,例如多数服务程序。只有超级用户可以使用。大家其实可以注意到Linux的系统,在所有“sbin”目录中保存的命令只有超级用户可以使用,“bin”目录中保存的命令所有用户都可以使用 |
| /boot/ | 系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
| /dev/ | 设备文件保存位置。我们已经说过Linux中所有内容以文件形式保存,包括硬件。那么这个目录就是用来保存所有硬件设备文件的 |
| /etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务的配置文件全部都保存在这个目录当中,如用户账户和密码,服务的启动脚本,常用服务的配置文件等 |
| /home/ | 普通用户的家目录。建立每个用户时,每个用户要有一个默认登录位置,这个位置就是这个用户的家目录,所有普通用户的家目录就是在/home下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1 |
| /lib/ | 系统调用的函数库保存位置 |
| /lost+found/ | 当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录 |
| /media/ | 挂载目录。系统建议是用来挂载媒体设备的,例如软盘和光盘 |
| /mnt/ | 挂载目录,早期Linux中只有这一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘,移动硬盘和其他操作系统的分区 |
| /misc/ | 挂载目录。系统建议用来挂载NFS服务的共享目录。我们在刚刚已经解释了挂载,童鞋们应该知道只要是一个已经建立的空目录就可以作为挂载点。那么系统虽然准备了三个默认挂载目录/media、/mnt、/misc,但是到底在哪个目录中挂载什么设备都可以由管理员自己决定。例如超哥接触Linux的时候,默认挂载目录只有/mnt一个,所以养成了在/mnt下建立不同目录挂载不同设备的习惯。如/mnt/cdrom挂载光盘,/mnt/usb挂载U盘,这都是可以的 |
| /opt/ (用的不多) | 第三方安装的软件保存位置。这个目录就是放置和安装其他软件的位置,我手工安装的源码包软件都可以安装到这个目录当中。不过我还是更加习惯把软件放置到**/usr/local/**目录当中,也就是说/usr/local/目录也可以用来安装软件 |
| /proc/ | 虚拟文件系统,该目录中的数据并不保存到硬盘当中,而是保存到内存当中。主要保存系统的内核,进程,外部设备状态和网络状态灯。如/proc/cpuinfo是保存CPU信息的,/proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的,/proc/net/是保存网络协议信息的 |
| /sys/ | 虚拟文件系统。和/proc目录相似,都是保存在内存当中的,主要是保存于内核相关信息的 |
| /root/ | 超级用户的家目录。普通用户家目录在“/home”下,超级用于家目录直接在“/”下 |
| /srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
| /tmp/ | 临时目录。系统存放临时文件的目录,该目录下所有用户都可以访问和写入。我们建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
| /usr/ | 系统软件资源目录。注意usr不是user的缩写,而是“Unix Softwre Resource”的缩写,所以不是存放用户数据,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里,所以除了/usr/bin/和/usr/sbin/这两个目录,我在介绍几个/usr/下的二级目录 |
| /var/ | 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件 |
服务器注意事项
- 远程服务器不允许关机,只能重启
- 重启时应该关闭服务
- 不要在服务器访问高峰运行高负载命令
- 远程配置防火墙时不要把自己踢出服务器
- 指定合理的密码规范并定期更新
- 合理分配权限(越少越好,够用就好)
- 定期备份重要数据和日志(不要把鸡蛋放在同一个篮子里)