目 录
-
Linux入门篇… 3
-
1 Linux操作系统简介… 3
-
2 Linux发展趋势… 4
-
3 Linux系统安装… 4
-
4 Linux学习技巧… 19
-
Linux系统篇… 20
2.1 Linux系统管理… 20
2.1. 1 Linux目录初识… 20
2.1. 2 Linux常用命令… 21
2.1. 3 Linux用户权限… 22
2.1. 4 Linux网络配置… 23
- Linux服务篇… 25
3.1 Linux服务部署… 25
3.1. 1 构建NTP时间服务器… 25
3.1. 2 构建DHCP服务器… 27
3.1. 3 搭建Samba服务器… 29
3.1. 4 搭建NFS服务器… 32
3.1. 5 搭建FTP服务器… 33
3.1. 6 构建Apache WEB服务器… 35
3.1. 7 构建MySQL服务器… 38
3.1. 8 LAMP架构网站建设… 42
3.1. 9 Cacti搭建监控平台… 46
3.1. 10 Nagios搭建监控平台… 50
3.1. 11 Kickstart自动安装平台… 56
- Linux编程篇… 60
4.1 Linux Shell编程… 60
4.1. 1 Shell编程简介… 60
4.1. 2 Shell变量设置… 61
4.1. 3 Shell流程控制语句… 62
4.1. 4 Shell脚本案例… 67
4.1. 5 Shell数组编程… 71
-
Linux深入篇… 72
-
1 构建Nginx WEB服务器… 72
5.1. 1 Nginx WEB安装… 73
5.1. 2 Nginx 虚拟主机配置… 74
5.1. 3 Nginx性能优化… 75
5.1. 4 Nginx深入了解参数… 77
5.1. 5 Nginx Rewrite规则… 78
- 2 构建Rsync同步服务器… 80
5.2. 1 Rsync服务端配置… 80
5.2. 2 Rsync基于SSH同步… 83
5.2. 3 Rsync实时同步配置… 83
- 3 Tomcat/Resin JAVA服务器… 84
5.3. 1 Tomcat安装配置… 84
5.3. 2 Tomcat性能优化… 85
5.3. 3 Resin安装配置… 87
5.3. 4 Resin性能优化… 88
5.3. 5 Resin多实例配置… 89
-
4 Nginx Tomcat动静分离… 90
-
5 LNAMP高性能架构配置… 92
-
6 构建DNS域名分析服务器… 99
-
7 MySQL主从高可用架构… 102
-
8 LVS Keepalived负载均衡… 110
-
9 Squid缓存服务器配置… 116
-
Linux下高并发系统核优化… 122
-
Nginx负载平衡机制和常见问题… 124
-
Linux运维职业规划… 127
-
Linux运维面试总结… 127
-
总结面试技巧… 127
-
总结面试题目… 128
-
Linux入门篇
1.1 Linux操作系统简介 Linux一套免费使用和自由传播的类别Unix基于操作系统的操作系统POSIX和UNIX多用户、多任务、支持多线程和多任务CPU操作系统。它可以运行主要UNIX支持32位和64位硬件的工具软件、应用程序和网络协议。Linux继承了Unix以网络为核心的设计理念是一个性能稳定的多用户网络操作系统。
1991年的10月5日,Linux林纳斯,创始人·托瓦兹(Linus Torvalds)在comp.os.minix新闻组发布消息,正式向外宣布Linux内核的诞生,1994年3月,Linux 1.0发布,代码量17万行,当时按照完全免费的协议发布,然后正式采用GPL(General Public License缩写,是一份GNU一般公共授权)协议。
Linux具有以下优点:
? 稳定,免费或低成本
? 安全性高
? 多任务,多用户
? 耗资源少
? 由于以支持各种电子产品,如:Android手机、PDA等。
1.2 Linux发展趋势 随着IT随着行业的不断发展,用户对网站体验的要求越来越高。目前,主流网站的后端承载系统是Linux系统,目前Android所有基于手机Linux核心研发。企业大数据、云存储、虚拟化等先进技术都是基于Linux系统。
2010年,据相关权威部门统计,未来几年中国软件行业将有巨大的就业机会,中国每年对软件人才的需求将达到50万左右。而对于Linux 专业人才就业前景广阔;据报道,未来5-10年 Linux 专业人才的需求将得到满足 120 万 !特别是有经验的资深人士Linux目前工程师很缺,工资也很诱人。平均月薪是15-20K,能力强的工资更高。
所以机会对每个人都是公平的,关键是如何行动,选择大于努力。
1.3 Linux系统安装 在安装Linux先了解系统windows系统结构,windows系统一般安装在C盘系统盘上,同样Linux也有类似的系统盘(/根分区),Linux通常分为(根分区/,swap分区),Linux系统以文件的方式存储,所有文件都存储在某个目录下,类似于windows的文件夹。
对于文件系统的属性,windows一般来说,文件系统的类型是ntfs、fat32等,而Linux文件系统类型为ext2、ext3、ext4等(文件系统:操作系统用于澄清磁盘或分区上的文件的方法和数据结构。文件系统由三部分组成:与文件管理相关的软件、管理文件和实施文件管理所需的数据结构。
安装 Linux系统是每个初学者的第一个门槛。在这个过程中,最大的困惑是分区硬盘。虽然现在各种发行版本的 Linux 它提供了友好的图形交互界面,但许多人仍然觉得无法开始。主要原因是不清楚 Linux 分区规定。例如,如果我们理解它,如果我们理解它windows分区规则,系统盘C、数据盘D等,分区很好。
在 Linux 根据规定,每个硬盘设备最多只能有 由四个主分区(包括扩展分区)组成。任何扩展分区都应占用主分区号,即在硬盘中,主分区和扩展分区最多 4 个。
下面正式安装Linux在安装系统之前,备以下软件:
ü VMware workstation10.0
ü CentOS 5.8x86_i386.iso
安装图如下:
第一步,新建虚拟机如下图所示:
第二步,选择相关选项,如下图所示:
第三步选择稍后安装操作系统
第四步选择客户机操作系统类型如下图所示:
第五步是将虚拟机硬盘设置为20G,最低不小于5G,如下图:
第六步,虚拟机新建完成,如下图所示:
第七步是修改拟机内存修改为512M,并添加ISO如下图所示:
此后,虚拟机新建,然后点击启动此虚拟机Linux系统安装,Linux系统安装图如下:
第一步是直接进入安装界面Enter回车键。
第二步,光盘检测,选择SKIP跳过。
第三步是在安装过程中选择语言,初学者可以选择简体中文。
第四步是选择整个硬盘的初始化,清除所有数据。
第五步是选择自定义分区的分区方式。
第五步,点击新建-首先创建一个swap交换分区的大小是物理内存的两倍(1024)M)。
第六步,继续创建分区,选择新建,然后创建根分区/,如下图所示,大小为剩余空间。
第七步,默认点击下一步,默认点击DHCP选择上海配置时钟,去掉UTC点击下一步。
第八步,设置root至少六位密码,点击下一步。
第九步,选择系统安装包,选择现在定制。
第十步,选择系统安装包,选择左侧开发-右侧选择发工具“和“开发库”,语言选择“支持中文“,其他一概不选择。
安装完毕会提示“reboot“,直接回车即可。
1.4 Linux学习技巧 初学者可以自己安装虚拟机,然后把linux常用命令例如cd、ls、chmod、useradd、vi等等多练习几十遍,把自己敲打命令的熟练程度提升上来。
然后根据文档搭建Linux下常见的各种服务(DHCP、SAMBA、DNS、Apache、Mysql等),遇到问题后可以在google搜索,搜索的时候多看几篇文章,综合最好的文章来解决问题。
能够熟练的搭建服务后,理解每个服务的完整配置和优化,可以拓展思维。例如LAMP,我们一般是把所有服务放在一台机器上,如果分开多台该如何部署呢?等等。
平时多积累shell编程,可以在网上查找前辈们写的非常好的shell,自己下载下来多练习几遍,从中吸取,不断提高。
建立一个自己的学习博客,把平时工作学习中的知识都记录在里面,这样也可以供别人来参考同时也能提高自己的编写文档及方案的能力。
通过以上学习能够满足企业的一般应有,需要达到资深级别,还需要深入学习集群架构、负载均衡、自动化运维、运维开发等知识。最后还是一句话:多练习才是硬道理!实践出真知!
-
Linux系统篇
2.1 Linux系统管理 通过前两章的学习,我们已经能够独立安装Linux系统,已经掌握了Linux学习的技巧,那接下来,我们将系统的来了解Linux系统各目录、权限及常用命令的使用。
2.1.1 Linux目录初识 通过前面的学习,我们已经能够独立安装完一个linux系统,那接下来我们来熟悉一下Linux系统里面的各个目录文件夹的大致功能:
主要的目录树的有/、/root、/home、/usr、/bin等目录。下面是一个典型的linux目录结构如下: (附图表)
/ 根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件 /dev 存放设备文件 /etc 存放系统配置文件 /home 普通用户的宿主目录,用户数据存放在其主目录中 /lib 存放必要的运行库 /mnt 存放临时的映射文件系统,通常用来挂载使用。
/proc 存放存储进程和系统信息 /root 超级用户的主目录 /sbin 存放系统管理程序 /tmp 存放临时文件 /usr 存放应用程序,命令程序文件、程序库、手册和其它文档。 /var 系统默认日志存放目录
2.1.2 Linux常用命令 默认进入系统,我们会看到这样的字符: [root@localhost ~]#,其中#代表当前是root用户登录,如果是$表示当前为普通用户。
我们了解linux由很多目录文件构成,那我们来学习第一个Linux命令:
cd命令,cd /home ;解析:进入/home目录
cd /root 进入/root目录;cd …/返回上一级目录;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参数。
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” ;查找/home目录下,所有以.txt结尾的文件或者目录。
vi 修改某个文件,vi有三种模式:
命令行模式、文本输入模式、末行模式。
默认vi打开一个文件,首先是命令行模式,然后按i进入文本输入模式,可以在文件里写入字符等等信息。
写完后,按esc进入命令模式,然后输入:进入末行模式,例如输入:wq表示保存退出。
如果想直接退出,不保存,可以执行:q!, q!叹号表示强制退出。
cat 查看文件内容,用法 cat test.txt 可以看到test.txt内容
more 查看文件内容,分页查看,cat是全部查看,如果篇幅很多,只能看到最后的篇幅。可以使用cat和more同时使用,例如: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的权限是最高的,相当于windows的administrator,拥有最高权限,能执行任何命令和操作。在系统中,通过UID来区分用户的权限级别,UID等于0,表示此用户具有最高权限,也就是管理员。其他的用户UID依次增加,通过/etc/passwd用户密码文件可以查看到每个用户的独立的UID。
每一个文件或者目录的权限,都包含一个用户权限、一个组的权限、其他人权限,例如下:
标红第一个root表示该文件所有者是root用户,第二个root代表该文件的所属的组为root组,其他用户这里默认不标出。
[root@node1 ~]#ls -l monitor_log.sh
-rw-r–r--1 root root 91 May 7 20:21monitor_log.sh
[root@node1 ~]#
如果我们想改变某个文件的所有者或者所属的组,可以使用命令chown
chown –R test:test monitor_log.sh即可。
每个Linux文件具有四种访问权限:可读®、可写(w)、可执行(x)和无权限(-)。 利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为 准。第一个字段由10个字符组成,如下: [root@node1 ~]# ls -lmonitor_log.sh
-rw-r–r-- 1 rootroot 91 May 7 20:21 monitor_log.sh
[root@node1~]# 第一位表示文件类型,-表示文件,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)。
Monitor_log.sh权限可以表示为:644
如果给某个文件授权,命令为chmod:chmod 777 monitor_log.sh
2.1.4 Linux网络配置 熟悉了常用的命令和Linux权限,那接下来如何让所在的Linux系统上网呢?管理linux服务器网络有哪些命令呢?
Linux服务器默认网卡配置文件在/etc/sysconfig/network-scripts/下,命名的名称一般为:ifcfg-eth0 ifcfg-eth1 ,eth0表示第一块网卡,eth1表示第二块网卡,依次类推。一般DELL R720标配有4块千兆网卡。
修改网卡的IP,可以使用命令: vi /etc/sysconfig/network-scripts/ifcfg-eth0 如果是DHCP获取的IP,默认配置如下:
Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0c:29:52:c7:4e
ONBOOT=yes
TYPE=Ethernet
如果是静态配置的IP,ifcfg-eth0网卡配置内容如下:
Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0c:29:52:c7:4e
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.33.10
NETMASK=255.255.255.0
GATEWAY=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 #子网掩码 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.20
nameserver 8.8.8.8
从上到下,分别表示主DNS,备DNS。配置完毕后,不需要重启网卡,DNS立即生效。
可以ping www.baidu.com 看看效果:
IP配置完毕后,我们可以通过远程工具来连接Linux服务器,常见的Linux远程连接工具有:putty、secureCRT(主流)、xshell、xmanger等工具。
下载安装secureCRT,打开工具,然后如图配置:
点击左上角quick connect快速连接,弹出界面,然后输入IP,用户名,端口默认是22,然后点击下方的connect连接,会提示输入密码,输入即可。
弹出输入密码框:
进入远程界面,与服务器真实登录一样,然后可以执行命令:
通过这几章的学习,我们已经熟练了Linux常用命令的操作,权限网络、网络配置、远程连接等知识,那接下来我们还能做什么呢?我们已经差不多入门了,接下来就是更进一步的服务配置,Linux系统到底用来做什么呢?接下来的章节将跟大家一起来学习。
Linux系统的应用,我们最开始介绍的时候简单介绍过,目前大中型企业都用它来承载web网站、数据库、虚拟化平台等,那接下来我们将在Linux系统安装各种服务和软件来实现Linux真正的价值。
-
Linux服务篇
3.1 Linux服务部署 3.1.1 构建NTP时间服务器 NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间。
互联网的时间服务器也有很多,例如ntpdate ntp.fudan.edu.cn 复旦大学的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.conf 只修改如下两行,把#号去掉即可!
server 127.127.1.0 # local clock
fudge 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的ip>>/usr/local/logs/crontab/ntpdate.log
备注:如果客户机没有ntpdate,可以yum –y install ntp 即可!
以下是ntp服务器配置文件内容(局域网NTP,如果需要跟外网同步,添加外网server即可)
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeernoquery
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
下面是参数详解:
restrict default ignore
关闭所有的 NTP 要求封包
restrict 127.0.0.1
开启内部递归网络接口 lo
restrict 192.168.0.0 mask 255.255.255.0 nomodify
#在内部子网里面的客户端可以进行网络校时,但不能修改NTP服务器的时间参数。
server 198.123.30.132
#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.log2>&1
3.1.2 构建DHCP服务器 DHCP(Dynamic HostConfiguration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作,主要用途:给内部网络或网络服务供应商自动分配IP地址,DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口。
DHCP可以部署在服务器、交换机或者服务器,可以控制一段IP地址范围,客户机登录服务器时就可以自动获得DHCP服务器分配的IP地址和子网掩码。其中DHCP所在服务器的需要安装TCP/IP协议,需要设置静态IP地址、子网掩码、默认网关。
正式安装DHCP服务:
Yum install dhcp dhcp-devel –y 即可,然后修改DHCP /etc/dhcpd.conf配置文件内容如下:
ddns-update-style interim;
ignore client-updates;
next-server 192.168.0.79;
filename “pxelinux.0”;
allow booting;
allow bootp;
subnet 192.168.0.0 netmask 255.255.255.0 {
— default gateway
option routers 192.168.0.1;
optionsubnet-mask 255.255.252.0;
optionnis-domain “domain.org”;
optiondomain-name “192.168.0.10”;
optiondomain-name-servers 192.168.0.11;
optionntp-servers 192.168.1.1;
option netbios-name-servers 192.168.1.1;
— Selects point-to-point node(default is hybrid). Don’t 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:2b: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
为忽略客户端更新
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即可。
客户端要从这个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,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS overTCP/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/smb.conf
查看smb.conf配置文件如下:
[global]
workgroup =MYGROUP
server string =Samba Server Version %v
security =share
passdb backend= tdbsam
load printers =yes
cups options =raw
[temp]
comment=Temporaryfile space
path=/tmp
read only=no
public=yes
[data]
comment=Temporaryfile space
path=/data
read only=no
public=yes
根据需求修改之后重启服务:
[root@node1 ~]# /etc/init.d/smb restart
Shutting down SMB services: [FAILED]
Shutting down NMB services: [FAILED]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
workgroup =
WORKGROUP 设Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v
Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
security = user
1.share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
-
user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
-
server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
-
domain:域安全级别,使用主域控制器(PDC)来完成认证。
comment = test
是对该共享的描述,可以是任意字符串。
path = /home/test
共享目录路径
browseable= yes/no
用来指定该共享是否可以浏览。
writable = yes/no
writable用来指定该共享路径是否可写。
available = yes/no
available用来指定该共享资源是否可用
admin users = admin
该共享的管理者
valid users = test
允许访问该共享的用户
invalid users = test
禁止访问该共享的用户
write list = test
允许写入该共享的用户
public = yes/no
public用来指定该共享是否允许guest账户访问。
在浏览器里面访问方式为:\192.168.33.10(SMB文件共享服务端IP),如何没有权限访问,需要注意防火墙和selinux设置,可以使用如下命令关闭:
/etc/init.d/iptables stop ;sed –i ‘/SELINUX/s/enforcing/disabled’ /etc/sysconfig/selinux
3.1.4 搭建NFS服务器 NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的。
NFS应用场景,常用于高可用文件共享,多台服务器共享同样的数据,可扩展性比较差,本身高可用方案不完善,取而代之的数据量比较大的可以采用MFS、TFS、HDFS等等分布式文件系统。
NFS安装配置:
Yum install nfs* portmap -y 如下图,安装成功即可。
NFS安装完毕,需要创建共享目录,共享目录在/etc/exports文件里面配置,可配置参数如下:
/data/ 192.168.33.11(rw,sync,no_hide,no_all_squash)
在配置文件中添加如上一行,然后重启Portmap,NFS服务即可,/etc/init.d/portmap restart;/etc/init.d/nfs restart
第一列/data/表示需要共享的目录。
IP表示允许哪个客户端访问。
IP后括号里的设置表示对该共享文件的权限。
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
Linux客户端,如何想使用这个NFS文件系统,需要在客户端挂载,挂载命令为:
Mount –t nfs 192.168.33.10:/data/ /mnt 即可。如果有报错根据错误信息排查。常见问题有rpc服务没有启动、防火墙没关闭、selinux未关闭等问题。(拓展* 有兴趣的童鞋可以研究MFS(分布式文件系统)。)
3.1.5 搭建FTP服务器 FTP 是文件传输协议,正是由于这种协议使得主机间可以共享文件。 FTP 使用TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。
vsftpd是一款在Linux发行版中最主流的FTP服务器程序;特点是小巧轻快,安全易用;能让其自身特点得发发挥和掌握。
目前在开源操作系统中常用的FTP服务器程序主要有vsftpd、ProFTPD、PureFTPd和wuftpd等,这么多FTP服务器程序,关键在于自己熟练哪一个就使用哪一个。今天我们来研究一下VSFTPD简单安装及使用。安装命令: yum install vsftpd* -y
修改配置文件如下:
#vsftpd config2014 by wugk
anonymous_enable=NO //禁止匿名用户访问
local_enable=YES //允许本地用户登录FTP
write_enable=YES //运行用户在FTP目录有写入的权限
local_umask=022 //设置本地用户的文件生成掩码为022,默认是077
dirmessage_enable=YES//激活目录信息,当远程用户更改目录时,将出现提示信息
xferlog_enable=YES //启用上传和下载日志功能
connect_from_port_20=YES //启用FTP数据端口的连接请求
xferlog_std_format=YES //是否使用标准的ftpd xferlog日志文件格式
listen=YES //使vsftpd处于独立启动监听端口模式
pam_service_name=vsftpd//设置PAM认证服务配置文件名称,文件存放在/etc/pam.d/目录
userlist_enable=YES //用户列表中的用户是否允许登录FTP服务器,默认是不允许
tcp_wrappers=YES //使用tcp_wrqppers作为主机访问控制方式
-
第一种方法就是使用系统用户登录FTP,但是也是比较危险的,先测试系统用户登录FTP,在Linux系统上创建useradd test 用户,并为其设置名,然后在xp客户端打开我的电脑资源里面访问 ftp://192.168.33.10,输入用户名和密码即可访问,进行创建和删除操作。
-
第二种方法比较安全,配置相对复杂一点,就是使用vsftpd虚拟用户登录FTP服务器进行常见的操作。
Ø 首先安装FTP 虚拟用户需要用到的软件及认证模块
yum install pam* db4*–skip-broken –y
创建并生成vsftpd数据库文件vi /etc/vsftpd/ftpusers.txt,内容如下:
第一行为FTP虚拟用户,登录用户名,第二行为密码,第三行为用户名,依次类推。
wugk
1
wugk1
1
Ø 生成数据库文件命令:
db_load -T -t hash -f/etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700/etc/vsftpd/vsftpd_login.db
Ø 配置PAM验证文件:
在配置文件vi /etc/pam.d/vsftpd 行首加入如下两行认证语句:(如果是32位,lib64需改成lib,如果RedHat,加入的语句不一样,需注意)
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
Ø 创建vsftpd映射本地用户:
所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码,也不需要登录。主要用来做虚拟用户映射使用。
useradd –d /home/ftpuser –s /sbin/nologin ftpuser
Ø 修改完整版配置文件内容如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
guest_enable=YES
guest_username=ftpuser
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
保存重启,/etc/init.d/vsftpd restart 即可使用虚拟用户登录,这时候所有的虚拟用户共同使用/home/ftpuser目录上传下载,如果想使用自己独立的目录,可以在/etc/vsftpd/vsftpd_user_conf目录创建各自的配置文件,如给wugk创建独立的配置文件:
vi/etc/vsftpd/vsftpd_user_conf/wugk ,内容如下,建立自己的FTP目录。
local_root=/home/ftpsite/wugk
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
重启,使用客户端登录FTP,测试即可。关于FTP讲解就到此,windows还可以使用Server-U来搭建FTP服务器端,有兴趣的童鞋可以研究一下。
Ø FTP主被动模式
FTP主动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的port 21命令端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
FTP被动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的port 21命令端口。然后客户端开始监听端口N+1,同时客户端提交 PASV命令。服务器会开启一个任意的非特权端口(P >1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
3.1.6 构建Apache WEB服务器 Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache工作模式有多种,其中最常用的有两种:
Prefork模式:PreforkMPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。
在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。
Worker模式:WorkerMPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。
Worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉".由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。
Ø 源码安装Apache
官方下载目前稳定版本,http://mirror.esocc.com/apache/httpd/httpd-2.2.27.tar.gz ,解压安装如下,安装apache之前,需要先安装apr apr-util。
然后启动apache服务: /usr/local/apache2/bin/apachectl start
查看apache进程及端口:
源码包安装Apache默认发布目录为:/usr/local/apache2/htdocs/下。
Ø Apache基于域名虚拟主机配置
修改vi/usr/local/apache2/conf/extra/httpd-vhosts.conf 虚拟主机配置文件内容如下:
NameVirtualHost*:80
<VirtualHost*:80>
ServerAdmin wgkgood@163.com
DocumentRoot "/data/webapps/www1"
ServerName www.wugk1.com
<Directory “/data/webapps/www1”>
AllowOverride All
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
ErrorLog logs/error_log
CustomLog logs/access_log common
<VirtualHost*:80>
ServerAdmin wgkgood@163.com
DocumentRoot "/data/webapps/www2"
ServerName www.wugk2.com
<Directory"/data/webapps/www2">
AllowOverride All
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
ErrorLog logs/error_log
CustomLog logs/access_log common
然后在/usr/local/apache2/conf/httpd.conf最末尾加入如下配置:
Includeconf/extra/httpd-vhosts.conf
重新加载apache即可,/usr/local/apache2/bin/apachectlgraceful效果演示如下:
Apache基于IP虚拟主机同样跟域名一直,在服务器配置多个IP,然后把域名改成IP即可。
Ø Apache Rewrite规则讲解
Rewrite URL重定向就是实现URL的跳转和隐藏真实地址,可以把复杂的URL变成简洁直观的URL,对seo优化有很大的帮助。如下几个简单的举例:
把所有配置的域名都跳转到一个域名:
RewriteEngine on //启用rewrite引擎
RewriteCond %{HTTP_HOST}^wugk1.com [NC] //匹配以wugk1.com开头的域名,NC忽略大小写。
RewriteRule ^/(.*)$ http://www.wugk1.com/$1 [L]
//匹配上面条件,然后跳转到http://www.wugk1.com
-
R 强制外部重定向。
-
F 禁用URL,返回403HTTP状态码。
-
G 强制URL为GONE,返回410HTTP状态码。
-
P 强制使用代理转发。
-
L 表明当前规则是最后一条规则,停止分析以后规则的重写。
-
N 重新从第一条规则开始运行重写过程。
-
C 与下一条规则关联。
3.1.7 构建MySQL服务器 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司, 目前属于Oracle公司,MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
对应目前主流的LAMP架构来说,Mysql更是得到各位IT运维、DBA的青睐,目前mysql已被orcacle收购,不过好消息是原来mysql创始人已独立出来自己重新开发了一个MariaDB,而且使用的人数越来越多。而且MariaDB兼容mysql所有的功能和相关参数。
Mysql常用的两大引擎有MyISAM和innoDB,那他们有什么明显的区别呢,什么场合使用什么引擎呢?
MyISAM类型的表强调的是性能,其执行数 度比InnoDB类型更快,但不提供事务支持,如果执行大量的SELECT操作,MyISAM是更好的选择,支持表锁。
InnoDB提供事务支持事务,外部键等高级 数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。
MySQL安装方式有两种,一种是yum/rpm安装,另外一种是tar源码安装。
Yum 安装方法很简单,执行命令如下即可: yum install –y mysql-server mysql-devel mysql
源码安装MySQL方式:
cd/usr/src ;wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz ;tarxzf mysql-5.1.63.tar.gz ;cd mysql-5.1.63 ;./configure–prefix=/usr/local/mysql --enable-assembler &&make &&make install
配置Mysql服务为系统服务:
cp/usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
cp/usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld chkconfig --level 345 mysqld on
cd /usr/local/mysql
useradd mysql chown -R mysql.mysql /usr/local/mysql /usr/local/mysql/bin/mysql_install_db --user=mysql chown -R mysql var /usr/local/mysql/bin/mysqld_safe --user=mysql &
MySQL日常操作命令:
create database test_db; 创建名为test_db数据库
use test_db; 进入test_db数据库
show tables; 查看数据库里有多少张表。
create table test01 (id varchar(20),namevarchar(20));创建名为test01表,并创建两个字段,id、name、数据长度(用字符来定义长度单位。)
insert into test01 values(“001”,“wugk1”); 向表中插入数据。
select * from test01; 查看test01表数据内容。
grant all privileges on test_db.* to test@localhost identified by ‘123456’;
grant all on test_db.* to test@localhost identified by ‘123456’;
grant select,insert,update,delete on . to test@”%” identified by ‘123456’;
给mysql数据库授权。
flush privileges;刷新权限
mysqldump –uroot –p123456 test_db >/tmp/test.db.sql ;MySQL备份或导出
mysql –uroot –p123456 test_db </tmp/test.db.sql ;MySQL导入
mysqladmin –uroot–p123456 password newpassword ;修改MySQL root密码
drop database test_db ; 删除数据库
drop table test01 ; 删除表
delete from test01 ; 清空表内容
show variables like ‘%char%’; 查看数据库字符集
修改Mysql字符集为UTF-8的方法:在/etc/my.cnf对应如下配置段加入相应命令。
[client]字段里加入default-character-set=utf8
[mysqld]字段里加入character-set-server=utf8
[mysql]字段里加入default-character-set=utf8
然后重启MySQL服务即可。
3.1.8 LAMP架构网站搭建 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。
目前LAMP架构是大多数中小企业最青睐的PHP架构选择,也是众多Linux SA喜欢选择的一套架构。那接下来我们就实战来操作一下,如果来搭建这样一套架构,当然可以使用yum方法,安装命令很简单,一条命令搞定所有。
yum install httpd httpd-devel mysql-servermysql-devel php php-devel php-mysql –y
这一条命令LAMP环境即可安装成功,只需要重启apache、mysql服务即可。
如果想要更多功能和自定义模块,需要使用源码包的方式来安装LAMP架构。如下我们使用源码包来实现LAMP架构安装与配置:
Ø 源码安装LAMP之Apache
yum install apr-devel apr-util-devel –y;
cd /usr/src ; wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.27.tar.gz ;tarxzf httpd-2.2.27.tar.gz ;cd httpd-2.2.27;./configure --prefix=/usr/local/apache --enable-so --enable-rewrite&&make &&make install
Ø 源码安装LAMP之MySQL
cd /usr/src ;wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz ;tarxzf mysql-5.1.63.tar.gz ;cd mysql-5.1.63 ;./configure --prefix=/usr/local/mysql–enable-assembler &&make &&make install
配置Mysql服务为系统服务:
cp/usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
cp/usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld chkconfig --level 345 mysqld on
cd /usr/local/mysql
useradd mysql chown -R mysql.mysql /usr/local/mysql /usr/local/mysql/bin/mysql_install_db --user=mysql chown -R mysql var /usr/local/mysql/bin/mysqld_safe --user=mysql &
Ø 源码安装LAMP之PHP
cd /usr/src ;wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2 ;tarjxf php-5.3.28.tar.bz2 ;cd php-5.3.28;./configure --prefix=/usr/local/php5–with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/
Ø 源码安装Apache+PHP整合
整合apache+php环境,修改httpd.conf配置文件,然后加入如下语句:
LoadModule php5_modulemodules/libphp5.so (默认已存在)
AddType application/x-httpd-php .php
DirectoryIndex index.phpindex.html (把index.php加入index.html之前)
然后在/usr/local/apache/htdocs目录下创建index.php测试页面,执行如下命令:
cat>>/usr/local/apache/htdocs/index.php <<EOF
<?php phpinfo(); ?>EOF
重新启动apache服务,通过IP访问界面如下图,即代表LAMP环境搭建成功。
Ø 源码安装DISCUZ论坛
下载discuz源码包文件,然后解压:
cd /usr/src ;wget http://download.comsenz.com/DiscuzX/3.1/Discuz_X3.1_SC_UTF8.zip
解压discuz程序包:unzip Discuz_X3.1_SC_UTF8.zip -d /usr/local/apache/htdocs/
重命名程序文件:cd/usr/local/apache/htdocs/ ;mv upload/* .
赋予discuz目录完全访问权限:cd /usr/local/apache/htdocs/ ;chmod 777 -R data/ uc_server/ config/uc_client/
然后访问IP安装discuz论坛,如下图,选择“我同意”
进入如下界面,数据库安装,如果不存在则需要新建数据库并授权。
数据库创建及授权命令如下:
create database discuz charset=utf8;
grant all on discuz.* toroot@‘localhost’ identified by “123456”;
点击下一步,直至安装完成,进入等待已久的论坛画面:
自此LAMP环境整合并搭建成功,通过IP直接访问即可。
3.1.9 Cacti监控平台搭建 作为一名Linux SA,日常最重要的就是保证网站正常稳定的运行,我们需要实时监控网站、服务器的运行状态,这时需要借助开源软件(cacti、nagios、zabbix等)监控来实现。
Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。
Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下,一般以rra为后缀名称)。简单原理图如下:
- Cacti服务器端安装
官网下载cacti相关软件,一共需要三个软件,下载地址分别如下:
http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.5.tar.gz
http://www.cacti.net/downloads/spine/cacti-spine-0.8.8a.tar.gz
- 安装LAMP系统环境
这里采用yum安装方式,安装命令:
yum install httpd mysql mysql-server php php-mysql php-json php-pdo -y
- 安装rrdtool采集工具
安装rrdtool之前需要安装相应的lib库,如下安装:
yum install cairo-devel libxml2-devel pango pango-devel –y
tar xzf rrdtool-1.4.5.tar.gz ;cd rrdtool-1.4.5 ;./configure --prefix=/usr/local/rrdtool/
make &&make install;ln -s /usr/local/rrdtool/bin/* /usr/local/bin/
- 安装SNMP服务
yum install net-snmp net-snmp-utils –y
- 安装cacti主程序
tar xzf cacti-0.8.8a.tar.gz &&mv cacti-0.8.8a /var/www/html/cacti/
- 创建cacti数据库
mysql -uroot –p 输入你的密码进入数据库,然后创建数据库:
create database cacti;创建数据库
grant all on cacti.* to cacti@‘localhost’ identified by"123456";创建用户并授权
flush privileges; 刷新权限
mysql配置完毕后,把cacti数据导入cacti数据库
mysql -ucacti -p123456 cacti </var/www/html/cacti/cacti.sql
配置完mysql后,我们需要设置cacti rra、log 目录的权限,这里设置为777:
chmod -R 777 /var/www/html/cacti/rra/
chmod -R 777 /var/www/html/cacti/log/
- 修改cacti全局配置文件
vi /var/www/html/cacti/include/config.php为如下配置:
- 添加Rrdtool抓图任务计划
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php>>/tmp/cacti_rrdtool.log 2 >&1
- Cacti安装完毕,测试访问
通过http://ip/cacti/ 访问出现如下界面,点击NEXT下一步。
默认一直点击下一步:
进入登录界面,第一次需要修改密码:
进入Cacti配置管理界面
点击device,可以添加设备,默认可以看到127.0.0.1这台服务器。右上角Add可以增加设备。
点击localhost可以看到具体的设置,包括采用的snmp协议版本,监控的名称等:
如果出现snmp error,检查snmp服务是否已启动,或者是否有权限。出现如上信息则表示正常。
点击左上角第二个按钮,graphs查看cacti图像—选择localhost主机—右边会显示cacti每5分钟的监控图像。
更多cacti深入知识,根据需求深入讲解。
3.1.10 Nagios监控平台搭建 Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios和cacti有什么区别呢?简单的来说cacti主要监控流量,服务器状态页面展示;nagios主要监控服务,邮件及短信报警灯,当然也有简单的流量监控界面,二者综合使用效果更好。(附Nagios工作简单逻辑图)
Nagios监控客户端需要借助插件及NRPE软件来实现,NRPE作为中间的代理程序,接收Nagios服务器端发来的请求,另一端在远程主机上指定的相关的监控信息。
- Nagios服务端安装
同样安装nagios服务需要安装LAMP环境,这里省略,可以参考之前的cacti PHP环境安装方法:官网下载nagios相应版本和插件:
wget http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.2.1/nagios-3.2.1.tar.gz/download
http://down1.chinaunix.net/distfiles/nagios-plugins-1.4.14.tar.gz
/usr/sbin/useraddnagios
tar zxvf nagios-3.2.1.tar.gz
cd nagios-3.2.1
./configure --prefix=/usr/local/nagios --with-command-group=nagios
make all
make install //来安装主程序,CGI和HTML文件
make install-init //在/etc/rc.d/init.d安装启动脚本
make install-config //来安装示例配置文件,安装的路径是/usr/local/nagios/etc
make install-commandmode //来配置目录权限
make install-webconf // 配置nagios跟apache整合
- 安装Nagios-plugins
tar zxvf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios–with-nagios-group=nagios
make && make install
- nagios访问控制设置
htpasswd -c /usr/local/nagios/etc/htpasswd.usersnagiosadmin
输入两次密码即可,登录页面的时候会用到这个密码.
- Nagios测试访问
重启nagios ,/etc/init.d/nagios restart;/etc/init.d/httpd restart ;
http://localhost/nagios/ 如下图:
点击左侧的Hosts可以看到右侧默认localhost主机的监控,UP表示主机目前运行正常:
点击左侧的Services可以看到右侧默认localhost监控的各个服务的状态,绿色OK表示正常:
- Nagios案例配置
默认安装完nagios,配置文件主目录在/usr/local/nagios/下,目录各种的功能如下:
bin
Nagios 可执行程序所在目录
etc
Nagios 配置文件所在目录
sbin
Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录
share
Nagios网页文件所在的目录
libexec
Nagios 外部插件所在目录
var
Nagios 日志文件、lock 等文件所在的目录
var/archives
Nagios 日志自动归档目录
var/rw
用来存放外部命令文件的目录
这里先来了解etc/objects目录主要包括监控主机的配置、模板、监控时间段等配置文件。
简单来添加一个客户端监控的步骤:
cplocalhost.cfg 192.168.33.10.cfg
把默认配置文件里面的locahost、127.0.0.1、check_local替换成最新
sed -i’s#localhost#192.168.33.10#g;s#127.0.0.1#192.168.33.10#g;s#check_local#check#g;s#linux-servers#192.168.33.10#g’ 192.168.33.10.cfg
在nagios.cfg36行后加入cfg_file=/usr/local/nagios/etc/objects/192.168.33.10.cfg
sed -i’36a cfg_file=/usr/local/nagios/etc/objects/192.168.33.10.cfg’/usr/local/nagios/etc/nagios.cfg
最后执行:/usr/local/nagios/bin/nagios-v /usr/local/nagios/etc/nagios.cfg没有报错即可。
默认有报错,因为没有在客户端安装nagios插件及NRPE,需删掉配置文件里disk、swap、process、user、cpu等监控配置段:
defineservice{
use local-service
host_name 192.168.33.10
service_description Swap Usage
check_command check_swap!20!10
}
这里注意*如果没有配置check_nrpe监控,默认不能监控客户端例如swap、disk、CPU、process等状态,需要在配置文件里删除或者注释掉。
如下是刚刚添加的默认的客户端监控图:
- Nagios客户端插件安装
Nagios客户端安装需要安装两个软件,nagios-plugins-1.4.15.tar.gz和nrpe-2.13.tar.gz,安装方法如下:
useradd nagios ;tar-xzf nagios-plugins-1.4.15.tar.gz &&cd nagios-plugins-1.4.15&&./configure –prefix=/usr/local/nagios &&make&&make install
tar -xzfnrpe-2.13.tar.gz && cd nrpe-2.13 &&./configure --enable-ssl–with-ssl-lib &&make all && make install-plugin &&make install-daemon && make install-daemon-config
chown -R nagios:nagios /usr/local/nagios/ ;cd … ;cp nrpe.cfg /usr/local/nagios/etc/nrpe.cfg
启动nrpe客户端命令:/usr/local/nagios/bin/nrpe-c /usr/local/nagios/etc/nrpe.cfg –d
- Nrpe客户端配置
修改vi/usr/local/nagios/etc/nrpe.cfg 修改默认配置段的内容如下,去掉#号,做相应修改。
command[check_users]=/usr/local/nagios/libexec/check_users-w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load-w 15,10,5 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk-w 20 -c 10 -p /dev/sda2
command[check_procs]=/usr/local/nagios/libexec/check_procs-w 50 -c 100
command[check_swap]=/usr/local/nagios/libexec/check_swap-w 20 -c 10
- Nagios服务器Nrpe配置
Nagios 服务器端也需要安装nrpe,同时需要定义Nrpe监控命令,写command.cfg末尾即可:
define command{
command_namecheck_nrpe
command_line$USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
- Nagios监控端客户机配置
在192.168.33.10.cfg加入如下配置段,引用客户端nrpe.cfg里面配置的check_load命令,命令一般格式为:check_nrpe!command
define service{
use local-service
host_name 192.168.33.10
service_description Current Load
check_command check_nrpe!check_load
}
其他同理,添加的方法一样。只要在客户端nrpe.cfg里面添加的监控命令,都可以在服务端引用。
- Nagios监控端HTTP关键词
在真实的线上环境中,如果要监控HTTP、web、tomcat某个URL关键词,监控网站关键词是否被篡改,如果来实现呢?
这里可以使用默认监控命令check_http命令+相关的参数来实现,如下:
在command.cfg添加如下关键词监控命令:check_http_word,参数解析:-I指定IP或者主机名,-u指定URL,-p指定端口,-s指定关键词。
define command{
command_name check_http_word
command_line $USER1$/check_http-I $HOSTADDRESS$ -u
ARG1 − p A R G 2 −p ARG2 −pARG2 -s A R G 3 ARG3 ARG3
}
然后在服务器端监控主机的配置文件里面引用即可,引用的方法如下:
也可以在服务器端命令行执行如下命令来做测试,例如监控页面不存在ATM关键词,但82端口web服务可以访问,依然会发送报警。
/usr/local/nagios/libexec/check_http -I192.168.33.11 -u /index.html -p 82 -s “ATM”
如上截图表示,关键词ATM不存在,则nagios在监控页面上会显示CRITICAL紧急。
- Nagios邮件及短信报警
使用nagios报警,以前可以用飞信发送报警,但是自从飞信更改接口后,就不方便了,那我们要发短信报警怎么办呢,我们可以139邮箱,机制是nagios给139邮箱发送信息,然后信