Linux服务篇

Linux服务篇

3.1 YUM源设置

3.2构建NTP时间服务器

3.3构建DHCP服务器

3.4搭建Samba服务器

3.5搭建NFS服务器

3.6搭建FTP服务器

3.7构建Apache WEB服务器

3.8构建MySQL服务器

 3.9 LAMP架构网站搭建

​​​​​​​3.10 Cacti监控平台搭建

​​​​​​​3.11 Nagios监控平台搭建

​​​​​​​3.12 Kickstart自动化安装平台

​​​​​​​3.13 zabbix部署

​​​​​​​3.14 ansible部署


Linux服务篇

3.1 YUM源设置

yum需要一个yum库,也就是yum源。默认情况下,redhat就有一个yum源。在/etc/yum.repos.d/目录下有一些默认的配置文件(可以将这些文件删除重建,或者直接在yum.repos.d/下重命名)。

本地yum源的创建方法;

下载完整版的iso文件,并上传或者挂载到Linux文件系统中,例如/opt/tools/。

mkdir /mnt/vcdrom

mount /opt/tools/redhat.iso /mnt/vcdrom

/etc/yum.repos.d/下新建一个yum.repo文件

[yum]

name=yum

baseurl=file:///mnt/vcdrom/#将baseurl修改为文件的挂载目录

gpgcheck=1

enabled=1#开启本地更新模式

利用命令yum cleancache& yum list后即可正确安装。

这样就可以使用yum –y install  文件名,安装所需要的应用了。

 

3.2构建NTP时间服务器

NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间。

互联网的时间服务器也有很多,例如ntpdate ntp.fudan.edu.cn 复旦大学的NTP免费提供互联网时间同步。

NTP服务器监听端口为UDP的123,那就需要在本地防火墙开启运行客户端访问123端口,vi /etc/sysconfig/iptables添加如下规则:

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 nopeer noquery

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里面添加如下语句:

    1.  0   *  *  * /usr/sbin/ntpdate  10.0.0.155 >>/data/logs/ntp.log 2>&1

3.3构建DHCP服务器

DHCP(Dynamic Host Configuration 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;

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;

#   option ntp-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.4搭建Samba服务器

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

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/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=Temporary file space

     path=/tmp

     read only=no

     public=yes

 

[data]

     comment=Temporary file 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不需要提供用户名和口令, 安全性能较低。

2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。

3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。

4. 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

Linux服务篇_第1张图片

3.5搭建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 如下图,安装成功即可。

Linux服务篇_第2张图片

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.6搭建FTP服务器

FTP 是文件传输协议,正是由于这种协议使得主机间可以共享文件。 FTP 使用TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输

vsftpd是一款在Linux发行版中最主流的FTP服务器程序;特点是小巧轻快,安全易用;能让其自身特点得发发挥和掌握。

目前在开源操作系统中常用的FTP服务器程序主要有vsftpd、ProFTPD、PureFTPd和wuftpd等,这么多FTP服务器程序,关键在于自己熟练哪一个就使用哪一个。今天我们来研究一下VSFTPD简单安装及使用。安装命令: yum  install vsftpd*  -y

Linux服务篇_第3张图片

修改配置文件如下:

#vsftpd config 2014 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作为主机访问控制方式

 

  1. 第一种方法就是使用系统用户登录FTP,但是也是比较危险的,先测试系统用户登录FTP,在Linux系统上创建useradd  test 用户,并为其设置名,然后在xp客户端打开我的电脑资源里面访问 ftp://192.168.33.10,输入用户名和密码即可访问,进行创建和删除操作。
  2. 第二种方法比较安全,配置相对复杂一点,就是使用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.7构建Apache WEB服务器

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache工作模式有多种,其中最常用的有两种:

Prefork模式:Prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。

在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

Worker模式:Worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的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。

Linux服务篇_第4张图片

然后启动apache服务:  /usr/local/apache2/bin/apachectl start

Linux服务篇_第5张图片

查看apache进程及端口:

Linux服务篇_第6张图片

源码包安装Apache默认发布目录为:/usr/local/apache2/htdocs/下。

  • Apache基于域名虚拟主机配置

修改vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 虚拟主机配置文件内容如下:

NameVirtualHost *:80

    ServerAdmin [email protected]

    DocumentRoot "/data/webapps/www1"

    ServerName www.wugk1.com

 

    AllowOverride All

    Options -Indexes FollowSymLinks

    Order allow,deny

    Allow from all

 

    ErrorLog  logs/error_log

    CustomLog logs/access_log common

 

    ServerAdmin [email protected]

    DocumentRoot "/data/webapps/www2"

    ServerName www.wugk2.com

 

    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最末尾加入如下配置:

Include conf/extra/httpd-vhosts.conf

重新加载apache即可,/usr/local/apache2/bin/apachectl graceful效果演示如下:

Linux服务篇_第7张图片

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

    1. R 强制外部重定向。
    2. F 禁用URL,返回403HTTP状态码。
    3. G 强制URL为GONE,返回410HTTP状态码。
    4. P 强制使用代理转发。
    5. L 表明当前规则是最后一条规则,停止分析以后规则的重写。
    6. N 重新从第一条规则开始运行重写过程。
    7. C 与下一条规则关联。

3.8构建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 ;tar xzf mysql-5.1.63.tar.gz ;cd mysql-5.1.63 ;./configure --prefix=/usr/local/mysql     --enable-assembler &&make &&make install

Linux服务篇_第8张图片 配置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; 查看数据库里有多少张表。

Linux服务篇_第9张图片

create table test01 (id varchar(20),name varchar(20));创建名为test01表,并创建两个字段,id、name、数据长度(用字符来定义长度单位。)

insert into test01 values ("001","wugk1"); 向表中插入数据。

select * from test01; 查看test01表数据内容。

Linux服务篇_第10张图片

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.9 LAMP架构网站搭建

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。

随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。

目前LAMP架构是大多数中小企业最青睐的PHP架构选择,也是众多Linux SA喜欢选择的一套架构。那接下来我们就实战来操作一下,如果来搭建这样一套架构,当然可以使用yum方法,安装命令很简单,一条命令搞定所有。

yum  install  httpd  httpd-devel  mysql-server mysql-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 ;tar xzf  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 ;tar xzf mysql-5.1.63.tar.gz ;cd mysql-5.1.63 ;./configure  --prefix=/usr/local/mysql --enable-assembler &&make &&make install

Linux服务篇_第11张图片 配置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 ;tar jxf  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/

Linux服务篇_第12张图片

  • 源码安装Apache+PHP整合

整合apache+php环境,修改httpd.conf配置文件,然后加入如下语句:

LoadModule     php5_module modules/libphp5.so (默认已存在)

AddType     application/x-httpd-php .php

DirectoryIndex  index.php index.html (把index.php加入index.html之前)

然后在/usr/local/apache/htdocs目录下创建index.php测试页面,执行如下命令:

cat >>/usr/local/apache/htdocs/index.php <

phpinfo();

?>

EOF

重新启动apache服务,通过IP访问界面如下图,即代表LAMP环境搭建成功。

Linux服务篇_第13张图片

  • 源码安装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论坛,如下图,选择“我同意”

Linux服务篇_第14张图片

 进入如下界面,数据库安装,如果不存在则需要新建数据库并授权。

Linux服务篇_第15张图片

数据库创建及授权命令如下:

create database discuz charset=utf8;

grant all on discuz.* to root@'localhost' identified by "123456";

Linux服务篇_第16张图片

点击下一步,直至安装完成,进入等待已久的论坛画面:

Linux服务篇_第17张图片

自此LAMP环境整合并搭建成功,通过IP直接访问即可。

​​​​​​​3.10 Cacti监控平台搭建

作为一名Linux SA,日常最重要的就是保证网站正常稳定的运行,我们需要实时监控网站、服务器的运行状态,这时需要借助开源软件(cacti、nagios、zabbix等)监控来实现。

Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。

Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下,一般以rra为后缀名称)。简单原理图如下:

Linux服务篇_第18张图片

  1. 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

  1. 安装LAMP系统环境

这里采用yum安装方式,安装命令:

yum install  httpd  mysql   mysql-server    php   php-mysql  php-json php-pdo   -y

  1. 安装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/

  1. 安装SNMP服务

yum install net-snmp  net-snmp-utils  –y  

  1. 安装cacti主程序

tar xzf cacti-0.8.8a.tar.gz && mv  cacti-0.8.8a   /var/www/html/cacti/

  1. 创建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

配置完mysql后,我们需要设置cacti  rra、log 目录的权限,这里设置为777:

chmod -R  777  /var/www/html/cacti/rra/

chmod -R  777  /var/www/html/cacti/log/

  1. 修改cacti全局配置文件

vi /var/www/html/cacti/include/config.php为如下配置:

Linux服务篇_第19张图片

 

  1. 添加Rrdtool抓图任务计划

*/5  * * * * /usr/bin/php /var/www/html/cacti/poller.php >>/tmp/cacti_rrdtool.log 2 >&1

  1. Cacti安装完毕,测试访问

通过http://ip/cacti/ 访问出现如下界面,点击NEXT下一步。

Linux服务篇_第20张图片

 默认一直点击下一步:

Linux服务篇_第21张图片

 进入登录界面,第一次需要修改密码:

Linux服务篇_第22张图片

 

进入Cacti配置管理界面

Linux服务篇_第23张图片

点击device,可以添加设备,默认可以看到127.0.0.1这台服务器。右上角Add可以增加设备。

Linux服务篇_第24张图片

点击localhost可以看到具体的设置,包括采用的snmp协议版本,监控的名称等:

Linux服务篇_第25张图片

如果出现snmp error,检查snmp服务是否已启动,或者是否有权限。出现如上信息则表示正常。

点击左上角第二个按钮,graphs查看cacti图像—选择localhost主机—右边会显示cacti每5分钟的监控图像。

Linux服务篇_第26张图片

更多cacti深入知识,根据需求深入讲解。

​​​​​​​3.11 Nagios监控平台搭建

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios和cacti有什么区别呢?简单的来说cacti主要监控流量,服务器状态页面展示;nagios主要监控服务,邮件及短信报警灯,当然也有简单的流量监控界面,二者综合使用效果更好。(附Nagios工作简单逻辑图)

Nagios监控客户端需要借助插件及NRPE软件来实现,NRPE作为中间的代理程序,接收Nagios服务器端发来的请求,另一端在远程主机上指定的相关的监控信息。

 

  1. 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/useradd nagiLinux服务篇_第27张图片os

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整合

  1. 安装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

  1. nagios访问控制设置

htpasswd  -c  /usr/local/nagios/etc/htpasswd.users nagiosadmin

输入两次密码即可,登录页面的时候会用到这个密码.

  1. Nagios测试访问

重启nagios ,/etc/init.d/nagios restart ;/etc/init.d/httpd restart ;

http://localhost/nagios/ 如下图:

Linux服务篇_第28张图片

点击左侧的Hosts可以看到右侧默认localhost主机的监控,UP表示主机目前运行正常:

Linux服务篇_第29张图片

点击左侧的Services可以看到右侧默认localhost监控的各个服务的状态,绿色OK表示正常:

Linux服务篇_第30张图片

  1. 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目录主要包括监控主机的配置、模板、监控时间段等配置文件。

Linux服务篇_第31张图片

 简单来添加一个客户端监控的步骤:

cp localhost.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.cfg 36行后加入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等监控配置段:

define service{

        use                             local-service        

        host_name                       192.168.33.10

        service_description                 Swap Usage

        check_command                   check_swap!20!10

        }

Linux服务篇_第32张图片

这里注意* 如果没有配置check_nrpe监控,默认不能监控客户端例如swap、disk、CPU、process等状态,需要在配置文件里删除或者注释掉。

如下是刚刚添加的默认的客户端监控图:

Linux服务篇_第33张图片

  1.  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 -xzf nrpe-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

  1. 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

  1. Nagios服务器Nrpe配置

Nagios 服务器端也需要安装nrpe,同时需要定义Nrpe监控命令,写command.cfg末尾即可:

define command{

        command_name check_nrpe

        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

        }

  1. 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

        }

Linux服务篇_第34张图片

其他同理,添加的方法一样。只要在客户端nrpe.cfg里面添加的监控命令,都可以在服务端引用。

  1. 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 $$ARG2$ -s $ARG3$

        }

然后在服务器端监控主机的配置文件里面引用即可,引用的方法如下:

Linux服务篇_第35张图片

 也可以在服务器端命令行执行如下命令来做测试,例如监控页面不存在ATM关键词,但82端口web服务可以访问,依然会发送报警。

/usr/local/nagios/libexec/check_http -I 192.168.33.11 -u /index.html -p 82 -s "ATM"

 如上截图表示,关键词ATM不存在,则nagios在监控页面上会显示CRITICAL紧急

  1.  Nagios邮件及短信报警

使用nagios报警,以前可以用飞信发送报警,但是自从飞信更改接口后,就不方便了,那我们要发短信报警怎么办呢,我们可以139邮箱,机制是nagios给139邮箱发送信息,然后信息会自动发到我们绑定的手机。提前在139上绑定好手机即可。除此之外还可以使用短信猫(收费)设备来发送报警。

默认command.cfg里面已经配置好了邮件报警设置,可以使用默认的配置,使用系统默认的mail发送邮件;还可以自己定义发送的内容格式及发送的邮件smtp服务器端软件。

这里使用默认的配置文件,要能收到短信报警,除了在139.com界面绑定139邮箱之外,还需要在nagios服务器端配置文件修改邮件收件人如下:

修改配置文件:vi /usr/local/nagios/etc/objects/contacts.cfg内容如下:

Linux服务篇_第36张图片

 

同样也可以使用sed命令修改:cd  /usr/local/nagios/etc/objects/ ;

sed  -i  's#nagios@localhost#[email protected]#g'  contacts.cfg

  如上配置完毕后,重启nagios服务,可以测试关闭某个服务,过一会就会收到nagios发来的报警邮件。

   自此,Nagios相关的配置就到此为止,当然有兴趣的童鞋还可以进一步研究,例如nagios跟cacti如何整合,nagios如何优化等等。

​​​​​​​3.12 Kickstart自动化安装平台

随着公司业务不断增加,经常需要采购新服务器,并要求安装Linux系统,并且要求Linux版本要一致,方便以后的维护和管理,每次人工安装linux系统会浪费掉更多时间,如果我们有办法能节省一次一次的时间岂不更好呢?

大中型互联网公司一次采购服务器上百台,如果采用人工手动一台一台的安装,一个人得搞坏N张光盘,得多少个加班加点才能完成这项”艰巨”的任务呢,我们可以看到全人工来完成这样的工作太浪费人力了,有没有自动化安装平台呢,通过一台已存在的系统然后克隆或者复制到新的服务器呢。Kickstart可以毫不费力的完成这项工作。

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。

要使用kickstart安装平台,包括的完整架构为:Kickstart+DHCP+NFS+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、nfs、kickstart/pxe等。

  1. DHCP、TFTP安装

yum  install   -y   dhcp*  tftp* 

首先配置tftp服务:

vi /etc/xinetd.d/tftp

service tftp

{

disable = no

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -u nobody -s /tftpboot

per_source = 11

cps = 100 2

flags = IPv4

}

只需要把disable = yes改成disable = no即可。

  1. TFTP+PXE配置

要实现远程安装系统,首先需要在TFTPBOOT目录指定相关PXE内核模块及相关参数。配置步骤如下:

mount     /dev/cdrom    /mnt 挂载本地光盘

#如果系统是5.x,默认tftpboot目录已经自动创建到/根目录下

#如果系统是6.x,默认tftpboot目录在/var/lib/下,所以centos6.x需要做软链接到/根目录下。

cp /usr/lib/syslinux/pxelinux.0 ./

cp  /mnt/images/pxeboot/{vmlinuz,initrd.img}   ./  拷贝内核至tftpboot目录下

mkdir  -p  pxelinux.cfg  &&cp  /mnt/isolinux/isolinux.cfg   pxelinux.cfg/default

拷贝isolinux.cfg配置文件重命名,系统安装的时候会根据这个文件的配置启动相应的选项。

修改pexlinux.cfg/default内容如下:

default linux

prompt 1

timeout 10

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label centos5.8

kernel vmlinuz

append ks=nfs:192.168.0.79:/centosinstall/ks.cfg  ksdevice=eth0 initrd=initrd.img

label text

kernel vmlinuz

append initrd=initrd.img text

label ks

kernel vmlinuz

append ks initrd=initrd.img

label local

localboot 1

label memtest86

kernel memtest

append

解析:192.168.0.79是kickstart服务器,/centosinstall 是nfs共享linux镜像的目录,也是linux存放安装文件的路径,ks.cfg是kickstart主配置文件;设置timeout 10 /*超时时间为10S */;ksdevice=etho代表当我们有多块网卡的时候,要实现自动化需要设置从eth0安装。

TFTP配置完毕,由于是TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令为:

chkconfig    tftp  --level 35 on  && service  xinetd  restart 

  1. NFS+KICKSTART配置

远程系统安装,客户端需要下载系统所需的软件包,所以需要使用NFS或者httpd把镜像文件共享出来。

mkdir   -p   /centosinstall

nohup cp  -rf   /mnt/*  /centosinstall  &

echo  “/centosinstall    *(rw,sync)” >>/etc/exports

在NFS配置文件/etc/exports中加入如上语句:/centosinstall    *(rw,sync),表示允许任何主机访问/centosinstall目录,有读写权限。

   配置kickstart,可以使用system-kickstart系统软件包来配置,也可以直接拷贝/root/目录下anaconda-ks.cfg 重命名为ks.cfg,并把ks.cfg拷贝至刚共享的/centosinstall目录下,赋权限为chmod 777 ks.cfg

如下我这里采用配置文件内容如下:vi ks.cfg

# Kickstart file automatically generated by anaconda.

install

text

nfs --server=192.168.0.79 --dir=/centosinstall

key --skip

lang zh_CN.UTF-8

keyboard us

network --device eth0 --bootproto=dhcp --noipv6

rootpw 123456

firewall --disabled

authconfig --enableshadow --enablemd5

selinux --disabled

timezone Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="rhgb quiet"

clearpart --all --initlabel

part /boot --fstype ext3 --size=200

part swap --size=4000

part / --fstype ext3 --size=80000

part /data --fstype ext3 --size=1 --grow

%packages

@admin-tools

@base

@core

@development-libs

@development-tools

@editors

@system-tools

@base-x

@chinese-support

keyutils

kexec-tools

trousers

fipscheck

device-mapper-multipath

imake

audit

xorg-x11-server-Xnest

xorg-x11-server-Xvfb

第一步install,以text字符界面,指定nfs共享IP和目录,设置安装后的服务器字符集、网络分配方式、密码;

然后设置防火墙状态,磁盘采用MBR方式引导,然后客户机分区的情况;%packages

后写入客户机系统需要安装的软件包,可以自己定制。更多详细的参数在此就不做过多的说明了,可以进一步学习。

在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。

需要在ks.cfg末尾添加如下命令来实现需求:

%pre
parted -s /dev/sdb  mklabel gpt
%end

为了实现kickstart安装完系统后,自动初始化系统等等工作,我们可以在系统安装完后,自动执行定制的脚本,需要在ks.cfg末尾加入如下配置:

%post

mount  -t  nfs 192.168.0.79:/centos/init /mnt

cd  /mnt/ ;/bin/sh  auto_init.sh

%end

  1. DHCP配置及测试

Pxe+kickstart自动安装系统,需要用到DHCP分配的客户端的IP地址,这里直接上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;

option subnet-mask      255.255.252.0;

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;}

}

最后重启所有服务,并关闭iptables和selinux,然后找一台新服务器,接入网线与kickstart服务器在一个交换机或通过中继能获取到IP的网络即可。

service  xinetd  restart

service nfs restart

service   dhcpd restart

注*KICKSTART所有配置就此告一段落,真实环境需要注意,新服务器跟kickstart最后独立在一个网络,不要跟办公环境或者服务器机房网络混在一起,如果别的机器以网卡就会把它的系统重装成Linux系统。

​​​​​​​3.13 zabbix部署

  1. 服务端依赖安装

yum  -y install mariadb-devel  net-snmp-devel  libxml2-devel  libevent-devel  curl-devel

内网环境可使用如下命令在外网下载依赖,在内网部署:

yum install --downloadonly --downloaddir=指定路径mariadb-devel  net-snmp-devel  libxml2-devel libevent-devel  curl-devel

使用如下命令内网安装依赖rpm -ivh --nodrps  指定路径

  1.  amp服务端搭建

配置好本地yum源,解压php压缩包,执行install.sh安装脚本,安装完成后mysql默认账户密码root/111111

  1. 创建zabbix用户(server/client均需要)

groupadd -r zabbix

useradd -r -g zabbix  -s /sbin/nologin -M  zabbix

  1. 编译服务端

解压zabbix程序包,进行编译

./configure  --prefix=/usr/local/zabbix   \

--with-mysql \

--with-net-snmp \

--with-libcurl \

--with-libxml2 \

--with-net-snmp  \

--enable-server

Make && make install

编译完成后会在/usr/local/zabbix下生成安装目录

  1. 创建zabbix数据库

 mysql -u root -p"111111" -e "create database if not exists zabbix default character set utf8 collate utf8_general_ci;"

导入zabbix sql文件完成数据库初始化

Use zabbix;

source  /usr/src/zabbix-4.2.3/database/mysql/schema.sql;

source  /usr/src/zabbix-4.2.3/database/mysql/images.sql;

source  /usr/src/zabbix-4.2.3/database/mysql/data.sql;
Show tables;#查看表

  1. 配置web

将/usr/src/zabbix-4.3.2/frontends/php下所有内容考到httpd目录并修改所有者为zabbix

重启zabbix,浏览器端访问服务器地址即可进入web端设置页面

Linux服务篇_第37张图片

设置数据库连接

Linux服务篇_第38张图片

下载生成的配置文件放置到httpd目录下conf中

Linux服务篇_第39张图片

其他步骤选默认即可,部署完成后登陆系统,默认用户名密码Admin/zabbix

  1. 服务端配置修改及启动

vim  /usr/local/zabbix/etc/zabbix_server.conf

DBHost=localhost                                         

#数据库主机IP,我们前面授权了127.0.0.1(localhost)DBName=zabbix                                            

#zabbix数据库名

DBUser=root                                           

#zabbix数据库用户名

DBPassword=111111                                         

#zabbix数据库密码

ListenIP=127.0.0.1

 

  1. 客户端部署

客户端部署依然采用源码编译方式,

./configure  --prefix=/usr/local/zabbix   --enable-agent

make && make install 

安装完程后,进入/usr/local/zabbix/etc下修改配置文件

#!/bin/sh

sip=190.168.1.2 #zabbix server ip

ip=`ip add | grep ens2f0 | grep inet|awk -F" " '{print $2}'|awk -F "/" '{print $1}'`

sed -i "s/Server=127.0.0.1/Server=$sip/g" /usr/local/zabbix/etc/zabbix_agentd.conf

sed -i "s/ServerActive=127.0.0.1/ServerActive=$sip/g" /usr/local/zabbix/etc/zabbix_agentd.conf

sed -i "s/Hostname=Zabbix server/Hostname=$ip/g" /usr/local/zabbix/etc/zabbix_agentd.conf

#如下配置项为启用zabbix自定义监控项设置

echo 'Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf' >>  /usr/local/zabbix/etc/zabbix_agentd.conf

sed -i 's/#UnsafeUserParameters=0/UnsafeUserParameters=1/g'  /usr/local/zabbix/etc/zabbix_agentd.conf

启动代理端:cd /usr/local/zabbix/sbin 

             ./zabbix_agented

 

添加主机及模板(详细配置请自行参考官方文档),附件中提供基于zabbix api 添加主机及模板的python脚本,在主机数量较多时可直接使用,注意修改相关参数

Linux服务篇_第40张图片

Linux服务篇_第41张图片

 

​​​​​​​3.14 ansible部署

  1. Ansible特性

Ansible是一款为类linux系统开发的自由开源的配置和自动化工具,它用Python写成,糅合了批量操作系统配置、批量程序的部署、批量运行命令等功能。但是有一个不同的优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。
    基于Python语言实现,由Paramiko, PyYAML和Jinjia2三个关键模块;ansible是工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。支持自定义模块:支持各种编程语言,可以使用YAML语言定制playbook。

  1. ansible框架介绍

 Linux服务篇_第42张图片

 

  1. 四、Ansible核心组件说明:

ansible是基于模块工作的ansible本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。架构包括:

连接插件connection plugins负责和被监控端实现通信;

Host Inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

各种模块核心模块command模块自定义模块;

借助于插件完成记录日志邮件等功能;

PlayBooks:剧本执行多个任务时。并非必需可以让节点一次性运行多个任务。

五、环境拓扑图

Linux服务篇_第43张图片

  1. 安装ansible

第一步:设置EPEL仓库
Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。
[root@localhost~]#rpm  -iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
第二步:使用yum安装Ansible
[root@localhost ~]#yum install ansible
安装完成后,检查ansible版本
[root@localhost ~]# ansible --version

第三步:设置用于节点鉴权的SSH密钥

[root@localhost~]# ssh-keygen 
Linux服务篇_第44张图片
使用ssh-copy-id命令来复制Ansible公钥到节点中。
ssh-copy-id –i [email protected] 

ssh-copy-id –i [email protected] 
第四步:为Ansible定义节点的清单
文件 /etc/ansible/hosts 维护着Ansible中服务器的清单。
[root@localhost ~]#vi/etc/ansible/hosts
[test-servers]
10.21.17.85
10.21.17.101
保存并退出文件。 

备注:如果没有设置基于ssh的密钥认证,可以在hosts文件中直接指定帐号和密码,方法如下所示:

[test-servers]

10.21.17.101 ansible_ssh_user=root ansible_ssh_pass=password


第五步:尝试在Ansible服务端运行命令
使用ping检查‘test-servers’或者ansible节点的连通性。
[root@localhost ~]# ansible -m ping 'test-servers'

[root@localhost ~]# ansible -m ping 10.21.17.85

七、ansible示例
1、command模块

命令模块,命令模块,默认模块,用于在远程主机执行命令

缺点:运行的命令中无法使用变量,管道。

例子1,检查Ansible节点的日期

[root@ansible ~]# ansible -m command -a "date" 'test-servers'

例子2:检查Ansible节点的运行时间(uptime)
[root@ansible ~]# ansible -m command -a "uptime" 'test-servers'

例子3:检查节点的内核版本
[root@ansible ~]# ansible test-servers -m command -a "uname -r"


例子4:给节点增加用户
[root@ansible ~]# ansible 10.21.17.101 -m command -a "useradd user1"

例子4:给节点删除用户

[root@ansible ~]# ansible 10.21.17.101 -m command -a "userdel user1"
 

2、Shell 模块
执行的命令中有管道或者变量,就需要使用shell。
例子1:给节点增加用户后,修改密码
[root@localhost ~]# ansible 10.21.17.101 -m shell -a 'echo user1|passwd --stdin user1'

3、yum ,service模块

安装软件和启动服务。

例子1:给节点安装tomcat应用

[root@localhost ~]# ansible 10.21.17.101 –m yum –a ‘name=tomcat state=present’

例子2,启动tomcat

[root@localhost ~]# ansible 10.21.17.101 –m service –a ‘name=tomcat state=started enabled=yes’

4、raw模块

支持管道的模块,类似shell模块。

例子1:检查eth0网口

[root@localhost ~]# ansible 10.21.17.101 –m raw –a ‘ifconfig|grep eth0’

你可能感兴趣的:(Linux)