1、Linux 运维入门到高级目 录1. Linux 入门篇 .31. 1 Linux 操作系统简介 31. 2 Linux 发展趋势 41. 3 Linux 系统安装 41. 4 Linux 学习技巧 192. Linux 系统篇 .202.1 Linux 系统管理 202.1. 1 Linux 目录初识 202.1. 2 Linux 常用命令 212.1. 3 Linux 用户权限 222.1. 4 Linux 网络配置 233. Linux 服务篇 .253.1 Linux 服务部署 253.1. 1 构建 NTP 时间服务器 .253.1. 2 构建 DHCP 服务器 .273.1. 3
2、搭建 Samba 服务器 .293.1. 4 搭建 NFS 服务器 .323.1. 5 搭建 FTP 服务器 .333.1. 6 构建 Apache WEB 服务器 .353.1. 7 构建 MySQL 服务器 .383.1. 8 LAMP 架构网站搭建 423.1. 9 Cacti 监控平台搭建 463.1. 10 Nagios 监控平台搭建 503.1. 11 Kickstart 自动化安装平台 564. Linux 编程篇 .604.1 Linux Shell 编程 604.1. 1 Shell 编程简介 604.1. 2 Shell 变量设置 614.1. 3 Shell 流程控制语句
3、 624.1. 4 Shell 脚本案例 674.1. 5 Shell 数组编程 715. Linux 深入篇 .725. 1 构建 Nginx WEB 服务器 .725.1. 1 Nginx WEB 安装 735.1. 2 Nginx 虚拟主机配置 .745.1. 3 Nginx 性能优化 755.1. 4 Nginx 参数深入理解 775.1. 5 Nginx Rewrite 规则 785. 2 构建 Rsync 同步服务器 .805.2. 1 Rsync 服务端配置 805.2. 2 Rsync 基于 SSH 同步 835.2. 3 Rsync 实时同步配置 835. 3 Tomcat/
4、Resin JAVA 服务器 845.3. 1 Tomcat 安装配置 845.3. 2 Tomcat 性能优化 855.3. 3 Resin 安装配置 875.3. 4 Resin 性能优化 885.3. 5 Resin 多实例配置 895. 4 Nginx Tomcat 动静分离 905. 5 LNAMP 高性能架构配置 925. 6 构建 DNS 域名解析服务器 .995. 7 MySQL 主从高可用架构 1025. 8 LVS+Keepalived 负载均衡 1105. 9 Squid 缓存服务器配置 1166. Linux 下高并发系统内核优化 1227. Nginx 负载均衡机制及
5、常见问题 1248. Linux 运维职业规划 1279. Linux 运维面试总结 1271) 面试技巧总结 .1272) 面试题目总结 .1281. Linux 入门篇1. 1 Linux 操作系统简介Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。1991 年的 10 月 5 日,Linux 创始人林纳斯托
6、瓦兹(Linus Torvalds)在comp.os.minix 新闻组上发布消息,正式向外宣布 Linux 内核的诞生,1994 年 3 月,Linux 1.0 发布,代码量 17 万行,当时是按照完全自由免费的协议发布,随后正式采用GPL(General Public License 的缩写,是一份 GNU 通用公共授权)协议。Linux 具有如下优点: 稳定、免费或者花费少 安全性高 多任务,多用户 耗资源少 由于内核小,所以它可以支持多种电子产品,如:Android 手机、PDA 等。1. 2 Linux 发展趋势随着 IT 产业的不断发展,用户对网站体验要求也越来越高,而目前主流网站
7、后端承载系统都是 Linux 系统,目前 Android 手机全部基于 Linux 内核研发。企业大数据、云存储、虚拟化等先进技术都是基于 Linux 系统。2010 年据有关权威部门统计:将来几年内我国软件行业的从业机会十分庞大,中国每年对软件人才的需求将达到 50 万人左右。而对于 Linux 专业人才的就业前景,更是广阔;据悉在未来 5-10 年内 Linux 专业人才的需求将达到 120 万+!尤其是有经验的资深的Linux 工程师目前非常的缺乏,薪资也是非常诱人,平均月薪都是 15-20K,能力强的薪资更高。所以机会对每个人都是公平的,关键是我们每个人如何去行动,选择大于努力。1.
8、3 Linux 系统安装在安装 Linux 系统之前,先来了解 windows 系统结构,windows 系统一般是安装在 C盘系统盘,同样 Linux 也有类似的系统盘(/根分区) ,Linux 通常分区为(根分区/、swap分区) ,Linux 系统以文件的存储方式,所有的文件都是存储在某个目录下的,类似于windows 的文件夹。对于文件系统的属性来说,windows 文件系统类型一般是 ntfs、fat32 等,而 Linux文件系统类型则为 ext2、ext3、ext4 等(文件系统:是操作系统用于明确磁盘或分区上的文件的方法和数据结构,文件系统由三部分组成:与文件管理有关软件、被管
9、理文件以及实施文件管理所需数据结构。 )安装 Linux 系统是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多人还是感觉无从下手。这其中的原因主要是不清楚 Linux 的分区规定。就好比如果我们了解了 windows 分区的规则,系统盘 C、数据盘 D 等,就很好分区了。 在 Linux 中规定,每一个硬盘设备最多只能有 4 个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。 下面正式来安装 Linux 系统,安装
10、系统前需要准备如下软件: VMware workstation 10.0 CentOS 5.8 x86_i386.iso安装图解如下:第一步,新建虚拟机如下图:第二步,选择相关选项,如下图:第三步选择“稍后安装操作系统” ,如下图:第四步,选择客户机操作系统类型如下图:第五步,设置虚拟机硬盘大小为 20G,最低不能小于 5G,如下图:第六步,虚拟机新建完成,如下图:第七步,修改虚拟机内存为 512M,并添加 ISO 镜像,如下图:自此,虚拟机新建完成,接下来点击“启动此虚拟机”进行 Linux 系统安装,Linux 系统安装图解如下:第一步,进入安装界面,直接按 Enter 回车键即可。第二步
11、,光盘检测,选择 SKIP 跳过。第三步,选择安装过程中的语言,初学者可以选择“简体中文” 。第四步,选择初始化整个硬盘,清除所有数据。第五步,选择分区方式为“自定义分区“。第五步,点击“新建“-首先创建一个 swap 交换分区,大小为物理内存的 2 倍(1024M) 。第六步,继续创建分区,选择“新建“,然后创建根分区/,如下图选择,大小为剩余所有空间即可。第七步,默认点击下一步,同时默认 DHCP 配置,时钟选择上海,去掉 UTC 勾,点击下一步。第八步,设置 root 密码,至少六位,点击下一步。第九步,系统安装包选择,这里选择“现在定制“。第十步,系统安装包选择,左侧选择“开发“-右侧
12、选择”开发工具“和“开发库” ,语言选择“支持中文“,其他一概不选择。安装完毕会提示“reboot“,直接回车即可。1. 4 Linux 学习技巧初学者可以自己安装虚拟机,然后把 linux 常用命令例如cd、ls、chmod、useradd、vi 等等多练习几十遍,把自己敲打命令的熟练程度提升上来。然后根据文档搭建 Linux 下常见的各种服务(DHCP、SAMBA、DNS、Apache、Mysql 等) ,遇到问题后可以在 google 搜索,搜索的时候多看几篇文章,综合最好的文章来解决问题。能够熟练的搭建服务后,理解每个服务的完整配置和优化,可以拓展思维。例如LAMP,我们一般是把所有服
13、务放在一台机器上,如果分开多台该如何部署呢?等等。平时多积累 shell 编程,可以在网上查找前辈们写的非常好的 shell,自己下载下来多练习几遍,从中吸取,不断提高。建立一个自己的学习博客,把平时工作学习中的知识都记录在里面,这样也可以供别人来参考同时也能提高自己的编写文档及方案的能力。通过以上学习能够满足企业的一般应有,需要达到资深级别,还需要深入学习集群架构、负载均衡、自动化运维、运维开发等知识。最后还是一句话:多练习才是硬道理!实践出真知!2. Linux 系统篇2.1 Linux 系统管理通过前两章的学习,我们已经能够独立安装 Linux 系统,已经掌握了 Linux 学习的技巧,
14、那接下来,我们将系统的来了解 Linux 系统各目录、权限及常用命令的使用。2.1. 1 Linux 目录初识通过前面的学习,我们已经能够独立安装完一个 linux 系统,那接下来我们来熟悉一下Linux 系统里面的各个目录文件夹的大致功能:主要的目录树的有/、/root、/home、/usr、/bin 等目录。下面是一个典型的 linux 目录结构如下: (附图表)/ 根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件/dev 存放设备文件 /etc 存放系统配置文件 /home 普通用户的宿主目录,用户数据存放在其主目录中 /lib 存放必要的运行库 /mnt 存放临
15、时的映射文件系统,通常用来挂载使用。/proc 存放存储进程和系统信息 /root 超级用户的主目录 /sbin 存放系统管理程序 /tmp 存放临时文件/usr 存放应用程序,命令程序文件、程序库、手册和其它文档。 /var 系统默认日志存放目录2.1. 2 Linux 常用命令默认进入系统,我们会看到这样的字符: rootlocalhost #,其中#代表当前是root 用户登录,如果是$表示当前为普通用户。我们了解 linux 由很多目录文件构成,那我们来学习第一个 Linux 命令:cd 命令, cd /home ;解析:进入/home 目录cd /root 进入/root 目录 ;c
16、d /返回上一级目录;cd ./当前目录;(.和可以理解为相对路径;例如 cd /hom/test ,cd 加完整的路径,可以理解为绝对路径)接下来继续学习更多的命令:ls ./ 查看当前目录所有的文件和目录。ls -a 查看所有的文件,包括隐藏文件,以.开头的文件。pwd 显示当前所在的目录。mkdir 创建目录,用法 mkdir test ,命令后接目录的名称。rmdir 删除空目录rm 删除文件或者目录,用法 rm rf test.txt (-r 表示递归,-f 表示强制)。cp 拷贝文件,用法,cp old.txt /tmp/new.txt ,常用来备份;如果拷贝目录需要加 r 参数。
17、mv 重命名或者移动文件或者目录,用法, mv old.txt new.txt touch 创建文件,用法,touch test.txt,如果文件存在,则表示修改当前文件时间。Useradd 创建用户,用法 useradd wugk ,userdel 删除用户。Groupadd 创建组,用法 groupadd wugk1 ,groupdel 删除组。find 查找文件或目录,用法 find /home -name “test.txt”,命令格式为:find 后接查找的目录,-name 指定需要查找的文件名称,名称可以使用*表示所有。find /home -name “*.txt” ;查找/ho
18、me 目录下,所有以 .txt 结尾的文件或者目录。vi 修改某个文件,vi 有三种模式:命令行模式、文本输入模式、末行模式。默认 vi 打开一个文件,首先是命令行模式,然后按 i 进入文本输入模式,可以在文件里写入字符等等信息。写完后,按 esc 进入命令模式,然后输入:进入末行模式,例如输入:wq 表示保存退出。如果想直接退出,不保存,可以执行:q!, q!叹号表示强制退出。cat 查看文件内容,用法 cat test.txt 可以看到 test.txt 内容more 查看文件内容,分页查看,cat 是全部查看,如果篇幅很多,只能看到最后的篇幅。可以使用 cat 和 more 同时使用,例
19、如: cat test.txt |more 分页显示 text 内容,|符号是管道符,用于把|前的输出作为后面命令的输入。echo 回显,用法 echo ok,会显示 ok,输入什么就打印什么。echo ok test.txt ;把 ok 字符覆盖 test.txt 内容,表示追加并覆盖的意思。两个大于符号,表示追加,echo ok test.txt,表示向 test.txt 文件追加 OK 字符,不覆盖原文件里的内容。初学者常见的命令就如上所示,当然还有很多深入的命令需要学习,后面的课程会讲解。2.1. 3 Linux 用户权限在 Linux 操作系统中,root 的权限是最高的,相当于 w
20、indows 的 administrator,拥有最高权限,能执行任何命令和操作。在系统中,通过 UID 来区分用户的权限级别,UID等于 0,表示此用户具有最高权限,也就是管理员。其他的用户 UID 依次增加,通过/etc/passwd 用户密码文件可以查看到每个用户的独立的 UID。每一个文件或者目录的权限,都包含一个用户权限、一个组的权限、其他人权限,例如下:标红第一个 root 表示该文件所有者是 root 用户,第二个 root 代表该文件的所属的组为 root 组,其他用户这里默认不标出。rootnode1 # ls -l monitor_log.sh -rw-r-r- 1 roo
21、t root 91 May 7 20:21 monitor_log.shrootnode1 #如果我们想改变某个文件的所有者或者所属的组,可以使用命令 chownchown R test:test monitor_log.sh 即可。每个 Linux 文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。利用 ls -l 命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为准。第一个字段由 10 个字符组成,如下:rootnode1 # ls -l monitor_log.sh -rw-r-r- 1 root root 91 May 7 20:21 monitor_
22、log.shrootnode1 #第一位表示文件类型,-表示文件,d 表示目录;后面每三位为一组。第一组:2-4 位表示文件所有者的权限,即用户 user 权限,简称 u第二组:5-7 位表示文件所有者所属组成员的权限,group 权限,简称 g第三组:8-10 位表示所有者所属组之外的用户的权限,other 权限,简称 o从上面这个文件,我们可以看出,monito_log.sh 文件对应的权限为:root 用户具有读和写的权限,root 组具有读的权限,其他人具有读的权限。为了能更简单快捷的使用和熟悉权限,rwx 权限可以用数字来表示,分别表示为 r(4) 、w(2) 、x(1) 。Moni
23、tor_log.sh 权限可以表示为:644如果给某个文件授权,命令为 chmod:chmod 777 monitor_log.sh2.1. 4 Linux 网络配置熟悉了常用的命令和 Linux 权限,那接下来如何让所在的 Linux 系统上网呢?管理linux 服务器网络有哪些命令呢?Linux 服务器默认网卡配置文件在/etc/sysconfig/network-scripts/下,命名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0 表示第一块网卡,eth1 表示第二块网卡,依次类推。一般 DELL R720 标配有 4 块千兆网卡。修改网卡的 IP,可以使用命令:
24、 vi /etc/sysconfig/network-scripts/ifcfg-eth0 如果是 DHCP 获取的 IP,默认配置如下:# Advanced Micro Devices AMD 79c970 PCnet32 LANCEDEVICE=eth0BOOTPROTO=dhcpHWADDR=00:0c:29:52:c7:4eONBOOT=yesTYPE=Ethernet如果是静态配置的 IP,ifcfg-eth0 网卡配置内容如下:# Advanced Micro Devices AMD 79c970 PCnet32 LANCEDEVICE=eth0BOOTPROTO=staticHW
25、ADDR=00:0c:29:52:c7:4eONBOOT=yesTYPE=EthernetIPADDR=192.168.33.10NETMASK=255.255.255.0GATEWAY=192.168.33.1网卡参数详解如下:DEVICE=eth0 #物理设备名ONBOOT=yes # yes|no(重启网卡是否激活设备)BOOTPROTO=static #none|static|bootp|dhcp(不使用协议|静态分配|BOOTP 协议|DHCP协议)TYPE=Ethernet #网卡类型IPADDR=192.168.33.10 #IP 地址NETMASK=255.255.255.0
26、#子网掩码GATEWAY=192.168.33.1 #网关地址网卡配置完毕,重启网卡,命令: /etc/init.d/network restart 即可。查看 ip 命令:ifconfig 查看当前服务器所有网卡的 IP,可以单独指定,ifconfig eth0 查看 eth0 的 IP 地址。网卡配置完毕,如果来配置 DNS,首先要知道 DNS 配置在哪个目录文件下,vi /etc/resolv.conf 文件:在该文件里面添加如下两条:nameserver 202.106.0.20nameserver 8.8.8.8从上到下,分别表示主 DNS,备 DNS。配置完毕后,不需要重启网卡,D
27、NS 立即生效。可以 ping 看看效果:IP 配置完毕后,我们可以通过远程工具来连接 Linux 服务器,常见的 Linux 远程连接工具有:putty、secureCRT(主流) 、xshell、xmanger 等工具。下载安装 secureCRT,打开工具,然后如图配置:点击左上角 quick connect 快速连接,弹出界面,然后输入 IP,用户名,端口默认是 22,然后点击下方的 connect 连接,会提示输入密码,输入即可。弹出输入密码框:进入远程界面,与服务器真实登录一样,然后可以执行命令:通过这几章的学习,我们已经熟练了 Linux 常用命令的操作,权限网络、网络配置、远
28、程连接等知识,那接下来我们还能做什么呢?我们已经差不多入门了,接下来就是更进一步的服务配置,Linux 系统到底用来做什么呢?接下来的章节将跟大家一起来学习。Linux 系统的应用,我们最开始介绍的时候简单介绍过,目前大中型企业都用它来承载 web 网站、数据库、虚拟化平台等,那接下来我们将在 Linux 系统安装各种服务和软件来实现 Linux 真正的价值。3. Linux 服务篇3.1 Linux 服务部署3.1. 1 构建 NTP 时间服务器NTP 服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间。互联
29、网的时间服务器也有很多,例如 ntpdate 复旦大学的 NTP 免费提供互联网时间同步。NTP 服务器监听端口为 UDP 的 123,那就需要在本地防火墙开启运行客户端访问 123 端口,vi /etc/sysconfig/iptables 添加如下规则:-A INPUT -m state -state NEW -m udp -p udp -dport 123 -j ACCEPT NTP 时间服务器配置:yum install ntp ntpdate -y 即可!修改 ntp.conf 配置文件cp /etp/ntp.conf /etc/ntp.conf.bak vi /etc/ntp.c
30、onf 只修改如下两行,把#号去掉即可!server 127.127.1.0 # local clockfudge 127.127.1.0 stratum 10以守护进程启动 ntpd /etc/init.d/ntpd start 即可(注意*: ntpd 启动后,客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。 )配置时间同步客户机crontab -e 增加一行,在每天的 6 点 10 分与时间同步服务器进行同步10 06 * * * /usr/sbin/ntpdate ntp-server 的
31、ip /usr/local/logs/crontab/ntpdate.log 备注:如果客户机没有 ntpdate,可以 yum y install ntp 即可!以下是 ntp 服务器配置文件内容(局域网 NTP,如果需要跟外网同步,添加外网 server 即可) driftfile /var/lib/ntp/driftrestrict default kod nomodify notrap nopeer noqueryrestrict -6 default kod nomodify notrap nopeer noqueryrestrict 127.0.0.1 restrict -6 :1
32、server 127.127.1.0 # local clockfudge 127.127.1.0 stratum 10includefile /etc/ntp/crypto/pwkeys /etc/ntp/keys下面是参数详解:restrict default ignore # 关闭所有的 NTP 要求封包restrict 127.0.0.1 # 开启内部递归网络接口 lorestrict 192.168.0.0 mask 255.255.255.0 nomodify #在内部子网里面的客户端可以进行网络校时,但不能修改 NTP 服务器的时间参数。server 198.123.30.132
33、 #198.123.30.132 作为上级时间服务器参考restrict 198.123.30.132 #开放 server 访问我们 ntp 服务的权限driftfile /var/lib/ntp/drift 在与上级时间服务器联系时所花费的时间,记录在 driftfile 参数后面的文件内broadcastdelay 0.008 #广播延迟时间自此 NTP 服务搭建完毕,然后在所有客户端 crontab 里面添加如下语句:0 0 * * * /usr/sbin/ntpdate 10.0.0.155 /data/logs/ntp.log 2ignore client-updates;next
34、-server 192.168.0.79;filename “pxelinux.0“;allow booting;allow bootp;subnet 192.168.0.0 netmask 255.255.255.0 # - default gatewayoption routers 192.168.0.1;option subnet-mask 255.255.252.0;# option nis-domain “domain.org“;# option domain-name “192.168.0.10“;# option domain-name-servers 192.168.0.11;
35、# option ntp-servers 192.168.1.1;# option netbios-name-servers 192.168.1.1;# - Selects point-to-point node (default is hybrid). Dont change this unless# - you understand Netbios very well# option netbios-node-type 2;range dynamic-bootp 192.168.0.100 192.168.0.200;host ns hardware ethernet 00:1a:a0:2
36、b:38:81;fixed-address 192.168.0.101;参数解析如下:选 项 解 释ddns-update-style interim|ad-hoc|none 参数用来设置 DHCP 服务器与 DNS 服务器的动态信息更新模式:interim 为 DNS 互动更新模式,ad-hoc 为特殊 DNS 更新模式,none 为不支持动态更新模式。next-server ip pxeclient 远程安装系统,指定 tftp server 地址filename 开始启动文件的名称,应用于无盘安装,可以是 tftp 的相对或绝对路径 ignore client-updates 为忽略客户
37、端更新subnet-mask 为客户端设定子网掩码option routers 为客户端指定网关地址domain-name 为客户端指明 DNS 名字domain-name-servers 为客户端指明 DNS 服务器的 IP 地址host-name 为客户端指定主机名称broadcast-address 为客户端设定广播地址ntp-server 为客户端设定网络时间服务器的 IP 地址time-offset 为客户端设定格林威治时间的偏移时间,单位是秒注意如上配置,需要修改成对应服务器网段 IP,然后重启 DHCP 服务,/etc/init.d/dhcpd restart 即可。客户端要从这
38、个 DHCP 服务器获取 IP,需要做简单的设置,如果是 linux 需要把/etc/sysconfig/network-scritps/ifcfg-eth0 里 BOOTPROTO 相改成 dhcp 即可,windows机器的话,需要修改本地连接,把它设置成自动获取 IP 即可。BOOTPROTO=dhcp 3.1. 3 搭建 Samba 服务器Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间
39、提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。安装 SAMBA 服务器:Yum install samba y安装完毕,然后做如下设置(过滤#号行、空行如下命令)cp /etc/samba/smb.conf /etc/samba/smb.conf.bak ;egrep -v “#|$“ /etc/samba/smb.conf.bak |grep -v “;“ /etc/samba/
40、smb.conf查看 smb.conf 配置文件如下:globalworkgroup = MYGROUPserver string = Samba Server Version %vsecurity = sharepassdb backend = tdbsamload printers = yescups options = rawtempcomment=Temporary file spacepath=/tmpread only=nopublic=yesdatacomment=Temporary file spacepath=/dataread only=nopublic=yes根据需求修改之后重启服务:rootnode1 # /etc/init.d/smb restartShutting down SMB services: FAILEDShutting down NMB services: FAILEDStarting SMB services: OK Starting NMB services: OK