摘录自---跟啊铭学LINUX视频课程(如发现错误欢迎大神们指出,谢谢)

实验系统为CentOS 6.5


设置LINUX DNS地址

编辑配置文件  /etc/resolv.conf

在文件中加入nameserver DNS地址1

            nameserver DNS地址2

 

修改LINUX开机启动项

编辑配置文件  /boot/grub/grub.conf

default = 0 ---默认启动项为title0,可更改为title1、title2等

实验时因自己电脑里有一个WIN7一个centos因此grub.conf配置文件中title项显示为:

title  0  centos

          root

          kernel

       1  other  ---other为其他系统,这里指WIN7

 

配置init启动级别,如默认系统启动命令行模式不启动图形模式

编辑配置文件  /etc/inittab

文件中有如下内容:

0  halt  ---关机

1  Single  ---单用户模式

2  Multiuser without NFS  ---不带NFS的命令行模式

3  Full multiuser mode  ---全命令行模式

4  unused  ---系统保留

5  X11  ---图形化模式

6  reboot  ---重启

 

id:3:initdefault:  ---修改这行中间的数字即可修改默认启动项此处为默认启动3全命令行模式

 

如何安装LINUX组件,列出YUM可安装的组件

yum grouplist | less  ---列出可安装组件列表并用Less显示

yum groupinstall "组件名称"  ---安装对应的组件

 

ctrl + L = 清屏 ctrl + C = 结束当前程序 ctrl + D = 退出当前终端 ctrl + Z = 暂停当前程序

在刷屏状态下可按ctrl + S锁定屏幕  按ctrl + Q解锁屏幕

jobs  ---查看正在运行的任务及id  

fg id  ---让相应id暂停了的程序继续运行

echo $LANG  ---查询当前系统语言

 

/bin  /sbin  /usr/bin  /usr/sbin  ---这四个目录存放二进制文件 存放命令的地方

/boot  ---存放启动相关的文件,微型的内存系统,相当于windows的c盘

/dev  ---设备的文件 如:磁盘等

/etc  ---系统配置文件所在目录

/home  ---普通用户家目录

/lib  ---存放动态链接库等文件

/usr/local  ---存放用户安装工具与程序

 

uname -a  ---可查看系统是32位或64位系统

less /proc/cpuinfo  ---用Less查看cpu信息

文件中processor指CPU的核心数,physical id指有多少颗物理CPU

less /proc/meminfo  ---用less查看内存信息

 

如何给grub启动加密?(对进入单用户模式加密此方法为明文密码)

编辑配置文件  /boot/grub/grub.conf

在title项前加入password 密码

重启后进入单用户模式需要输入设定的密码

 

当LINUX系统无法启动或出现重大故障时可用光盘启动并开启rescue installed system进入救援模式,进入后输入chroot /mmt/sysp_w_picpath即可开始正常系统操作更改密码等

 

mii-tool 网卡名  ---可查看网卡是否正常连接网线

cat /etc/issue  ---查看linux系统版本

yum install -y 程序包名  ---使用yum安装对应的程序如:yum install -y ssh

yum list | grep -i 关键字  ---搜索与关键字相关的程序包并列出同时忽略大小写

yum remove 程序包名  ---卸载程序

which 命令  ---找出命令的绝对路径

rpm -qf 命令的绝对路径  ---可查询命令对应的安装包名称

skill -9 终端名  ---强制退出指定终端

write 用户名 终端名  ---以单聊的形式给对应用户发送消息

wall 通知的内容  ---广播消息给所有终端及用户,通常用于关机前的通知等

getenforce  ---获取SELINUX状态

setenforce 0  ---临时关闭SELINUX

setenforce 1  ---临时开启SELINUX

编辑配置文件/etc/SeLinux/config

将SELINUX=enforcing修改为disabled  ---修改此项可永久关闭SELINUX

hostname  ---获取当前主机名

hostname 主机名称  ---临时修改主机名称

编辑配置文件/etc/sysconfig/network中的HOSTNAME即可永久修改主机名(需重启才可生效)

ssh linux IP地址  ---可直接在一台LINUX中用SSH加IP地址远程到另一台LINUX主机

ssh xxx.xxx.xxx.xxx -p xxxx  ---SSH后面加-p选项可以指定登陆端口

date -s "xxxx-xx-xx xx:xx:xx"  ---手动调整时间

ntpdate time.windows.com  ---同步时间服务器

echo $HOME  ---打印当前登陆的用户家目录

mkdir -p x/x/x  ---递归创建级联目录

alias la="ls -a"  ---为命令加选项设置别名(相当于输入la即可实现ls -a的效果)

unalias la  ---取消对应的命令别名

PATH=$PATH:/路径  ---增加PATH环境变量路径

在现有PATH环境下增加,并只在当前终端生效不影响其他终端,如需永久生效需将此命令写入/etc/profile文件的末尾重启后生效

cp -r  ---复制目录时需加-r选项

cat  ---正顺序查看文档

tac  ---倒顺序查看文档

less  ---可上下翻页并按G可至末行按g可至行首

head -n  ---查看文件头N行

tail -n  ---查看文件尾N行

 

shell中*符号代表通位符

文件类型:-普通文件  d目录  b块设备(如磁盘)  c设备(键盘、鼠标)  s套接字文件  l软链接(windows下的快捷方式)

drwxr-xr-x  7  root  root  ---目录权限后的数字代表有几个目录在使用相同的inode

cat /etc/group  ---可查看系统里有哪些用户组

groupadd xxx  ---添加系统用户组

chgrp -R xxx  ---递归更改目录下的所有文件或文件夹组

useradd xxx  ---新增系统用户、并创建相同名称的用户组

chown -R xxx  ---递归修改相应目录及子目录的所属者

chown :xxx  ---可单独修改文件或目录所属组

chown xxx:xxx  ---可同时修改目录或文件所属者与所属组

umask xxx  ---修改默认创建目录或文件的权限如:默认目录创建后权限为755修改umask为222后创建目录默认权限就变为555(临时性的)如需永久修改umask请在/etc/profile文件中加入修改umask xxx即可

 

chattr +i 目录或文件  ---无法对目录或文件做任何修改

chattr -i 目录或文件  ---去除目录或文件的不可修改属性

chattr -R +i 目录或文件  ---可递归对目录或文件增加i属性

lsattr 目录或文件  ---可查看目录或文件是否有i属性

 

 set uid:chmod u+s(u-s) 命令的绝对路径  ---可让普通用户临时拥有root用户的权限(必须是二进制可执行文件)

set gid:chmod g+s(g-s) 目录  ---设定后,用户创建的目录或文件所属组与设定目录的所属组一致

给指定用户设定新密码用passwd 用户名即可

文件权限取决于文件所处的上一级目录权限为准

sticky bit:chmod o+t(o-t) 目录  ---设定后,目录下当前用户创建的文件其他普通用户不可进行任何操作(root除外)只限创建用户进行操作

 

模糊搜索:find 路径 -type(f,d,s,c) 文件关键字

精确搜索:find 路径 -name "文件名"

Atime:访问时间

Mtime:更改文件即会发生变化同时ctime也发生变化

Ctime:更改权限时发生变化包括文件大小

 


备份iptables规则到指定文件  ---iptables-save > 文件名.rule

从指定文件恢复iptables规则  ---iptables-restore < 文件名.rule

 

例子:通过iptables实现只能访问百度,其他都不能访问

iptables -A INPUT -p tcp --sport 80 -s xxx.xxx.xxx.xxx(百度公网IP) -j ACCEPT;iptables -A INPUT -p tcp --sport 80 -j DROP;

第一条规则先开放指定源IP的80端口INPUT流量,第二条规则禁止所有80端口的INPUT流量

 

crontab计划任务

crontab -l  ---列出当前用户的计划任务

crontab(口诀:分 时 日 月 周)(* * * * *代表每分钟执行一次操作)

crontab -e  ---创建crontab计划任务

crontab格式:分 时 日 月 周 命令  输入完成后用vim的模式进行保存:wq

crontab -e -u 用户名  ---创建指定用户的计划任务

crontab -e  ---创建的路径在/var/spool/cron/目录下有对应用户的计划任务文件

拷贝/var/spool/cron/目录下对应的用户计划任务文件即可进行备份

crontab -r  ---清空当前用户的计划任务

例子:在home目录创建一个日志文件每天早上9点把磁盘容量输入日志文件里

crontab -e 

01 09 * * * df -h > /home/disk.log 2>&1

例子:每隔8小时执行一次可写成00 */8 * * *

以此类推每隔8分钟可写成*/8 * * * *

每天1点5点8点都执行一次可写成* 1,5,8 * * *

每天9点到11点执行可写成00 9-11 * * *

 

stsysv系统服务管理 

常用开机启动服务:crond、iptables、network、rsyslog、sshd、sysstat、irqbalance、sendmail、microcode_ctl

chkconfig --list  ---查看系统所有启动服务并列出对应的启动级别的启动情况

chkconfig --add 用户自定义的脚本  ---把用户自定义的脚本加入启动服务项

chkconfig --del  ---删除启动服务项

chkconfig --level 2345 服务项 on/off  ---定义启动服务的启动级别开关

例子:


 

系统日志

/var/log/messages  ---存放系统关键日志文件

message由syslogd这个守护进程产生的,如果停掉这个服务则系统不会产生/var/log/message日志文件

/var/log/wtmp  ---存放用户登陆日志

last  ---可列出用户登陆记录

/var/log/btmp  ---存放用户登陆无效日志

lastb  ---可列出用户登陆失败的日志

/var/log/dmesg  ---存放系统开机硬件日志

dmesg  ---列出系统硬件日志信息

 

exec

例子:查找当前目录创建时间大于10天的文件并删除

find . -mtime +10 -exec rm -rf {} \;

 

screen工具

screen相当于一个虚拟终端,它不会因为网络中断而退出,每次登陆都可以进入之前的screen窗口

screen -S abc  ---创建一个名为abc的screen虚拟终端

在虚拟终端screen中可以按ctrl + a d暂时退出screen窗口

screen -r abc  ---可以恢复指定名称的虚拟终端

screen -ls  ---可以查看有哪些screen虚拟终端

 

scp远程复制工具rsync远程同步工具

scp [email protected]:/tmp/1.txt ./2.txt  ---将远程192.168.0.22的root帐户服务器的/tmp/1.txt文件拷贝到本机当前目录的2.txt

scp ./2.txt [email protected]:/tmp/1.txt  ---将本机当前目录的2.txt拷贝到远程192.168.0.22的root帐户服务器的/tmp/1.txt中

scp -P 2222  ./2.txt [email protected]:/tmp/1.txt  ---指定SSH端口号为2222并将本机当前目录的2.txt拷贝到远程192.168.0.22的root帐户服务器的/tmp/1.txt中

scp -P 2222 [email protected]:/tmp/1.txt ./2.txt ---指定SSH端口号为2222并将远程192.168.0.22的root帐户服务器的/tmp/1.txt文件拷贝到本机当前目录的2.txt

rsync -avLu [email protected]:/tmp/1.txt ./2.txt  ---将远程192.168.0.22的root帐户服务器的/tmp/1.txt文件拷贝到本机当前目录的2.txt

rsync -avLu ./2.txt [email protected]:/tmp/1.txt  ---将本机当前目录的2.txt拷贝到远程192.168.0.22的root帐户服务器的/tmp/1.txt中

rsync -an "--rsh=ssh -p端口号"   ---指定端口号

rsync -avLu --delete ./2.txt [email protected]:/tmp/1.txt 2.txt  ---加了--delete选项会将目标路径中多出的1.txt文件删除,保持跟源路径相同的文件数(双向同步)

rsync -avLu --exclude=1.txt  ---加了--exclude=1.txt表示同步文件的时候忽略1.txt文件

后台运行rsync,先编辑配置文件/etc/rsyncd.conf,配置文件如下:

#port=873  ---#监听端口默认为873,也可以自行定义端口

log file=/var/log/rsync.log  ---#指定日志

pid file=/var/run/rsyncd.pid  ---#指定pid

#address=192.168.0.10  ---#可以定义绑定的IP

以上为全局配置部分,以下为模块部分配置:

[test]  ---#为模块名,自定义

path=/root/rsync  ---#指定该模块对应在哪个目录下

use chroot=true  ---#是否限定在该目录下,默认为true,当有软连接时,需要改为fasle

max connections=4  ---#指定最大可以连接的客户端数

read only=no  ---#是否为只读

list=true  ---#是否可以列出模块名

uid=root  ---#以哪个用户的身份来传输

gid=root  ---#以哪个组的身份来传输

auth  users=test  ---#指定验证用户名,可以不设置

secrets file=/etc/rsyncd.passwd  ---#指定密码文件,如果设定验证用户,这一项必须设置

hosts allow=192.168.0.101  ---#设置可以允许访问的主机,可以是网段

启动方法:rsync --daemon

编辑/etc/rsyncd.passwd文件,文件加入用户:密码保存即可创建

 

curl工具

curl www.baidu.com  ---可检测访问网站

curl -x192.168.0.10  ---可根据IP检测访问网站

curl -I www.baidu.com  ---打印出网站相关的信息

curl -u user:passwd http://www.123.com  ---可访问带帐户密码的网站

curl www.baidu.com/index.html -O  ---可下载当前页面

dig www.qq.com  ---可通过此命令解析出对应域名的信息

dig @8.8.8.8 www.qq.com  ---可指定相关DNS地址去解析对应的域名

nc -z -w2 www.qq.com 1-1024  ---探测域名开放了哪些端口 


服务器禁PING

  • echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all  ---将文件内容从默认的0修改为1即可禁PING

  • echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all  ---将文件内容从1修改为0即可恢复PING


搭建LAMP试验环境

一、安装mysql

  • 可通过命令 yum install -y mysql mysql-server mysql-devel 进行安装

  • 成功后,可通过rpm -qi和-qd 包名 查看包的情况和安装文件夹情况

  • mysql的配置文件/etc/my.cnf

  • mysql的数据库文件/var/lib/mysql

  • mysql的数据库日志文件/var/log/mysqld.log

  • 通过chkconfig --list|grep mysqld 命令查看mysql服务是不是开机自动启动

  • chkconfig --add mysqld  ---将mysql服务加入开机启动项

  • 通过chkconfig mysqld on 将其设置成开机启动(可知其他服务的开机启动方式)

  • 启动mysql服务service mysqld start

  • 在/etc/my.cnf文件中加入port=xxxx  ---修改mysql默认端口,记得把端口号加入iptables 


二、安装Apache    

  • 从apache官网上下载源码安装包httpd-2.2.29.tar.gz放置于/usr/local/src目录下

  • cd /usr/local/src目录下tar -zxvf httpd-2.2.29.tar.gz解压源码包

  • cd /usr/local/src/httpd-2.2.29  ---进入apache目录

  • ./configure --prefix=/usr/local/apache2 --with-included-apr --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared --with-pcre

解释:

--profix=/usr/local/apache2  ---指定apache安装路径

--with-included-apr  ---apr是为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库(必须有)

--enable-deflate=shared  ---支持压缩

--with-pcre  ---是否支持正则表达式

  • make  ---编译完成后运行make

  • make install  ---make完成后运行make install

  • Apache网站根目录位于/usr/local/apache2/htdocs

 

三、安装php

  • wget http://am1.php.net/distributions/php-5.3.27.tar.gz

  • tar -zxvf php-5.3.27.tar.gz  ---解压源码包

  • cd php-5.3.27.tar.gz  ---进入php源码包目录

  • 编译安装PHP前可将相关依赖组件都安装上,这样编译过程中就不会报错如下:

      yum install -y libxml2-devel zlib-devel openssl-devel bzip2-devel libmcrypt-devel libcurl-             devel libjpeg-devel libpng-devel freetype-devel libXpm-devel libtool-ltdl-devel

  • ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6

以上参数可满足市面上大部分PHP网站需求

apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中

安装PHP需要指定Apache目录及Mysql目录,因此PHP需要最后安装

  • make

  • make install

 

Apache支持解析php

  • 编辑/usr/local/apache2/conf/httpd.conf文件,保证必须有以下这行:

wKiom1VuoH-CYG-OAAA_bEEspO8185.jpg

  • 增加一行:AddType application/x-httpd-php .php

  • DirectoryIndex index.html 改为DirectoryIndex index.html index.php

 

Apache安装扩展模块-mod_status

  • cd /usr/local/src/httpd-2.2.24/modules/generators

  • /usr/local/apache2/bin/apxs -i -a -c -n mod_status mod_status.c

  •  

 

PHP安装扩展模块-memcache

  • 下载memcache源码包 wget http://www.lishiming.net/data/p_w_upload/forum/memcache-2.2.3.tgz

  • tar -zxvf memcache-2.2.3.tgz  ---解压memcache源码包

  • cd memcache-2.2.3.tgz  ---进入memcache源码包目录

  • /usr/local/php/bin/phpize  ---生成config文件

  • ./configure --with-php-config=/usr/local/php/bin/php-config  ---编译模块

  • make

  • make install

  • cp php.ini-development /usr/local/php/etc/php.ini  ---拷贝php源码包下php.ini-development配置模版文件到/usr/local/php/etc/php.ini

  • vim /usr/local/php/etc/php.ini  ---编辑php.ini文件

  • 末尾加入一行extension = memcache.so

 

四、利用LAMP环境搭建Discuz论坛

  • 登陆download.discuz.com下载DiscuzX压缩包放置于apache目录下的htdocs目录

  • 进入apache目录下的htdocs目录

  • 解压缩Discuz压缩包 unzip Discuz_X3.2_SC_GBK.zip

  • mv upload/* .  ---将整个upload目录移动到htdocs根目录

  • /usr/local/apache2/bin/apachectl stop;/usr/local/apache2/bin/apachectl start  ---重启apache服务

  • 调整iptables配置或关闭iptables

  • chown -R deamon config data uc_client uc_server  ---修改对应的几个目录权限为deamon用户可写,为何是deamon?具体视ps aux | grep http显示出来的进程是哪个用户在运行所决定

  • /usr/local/mysql/bin/mysql -uroot -p  ---登入mysql数据库

  • mysql> create database discuz;  ---建立discuz数据库

  • mysql> grant all on *.* to 'benson'@'localhost' identified by '85686827';  ---新建用户benson及设定密码为85686827

  • 用浏览器打开http://ip/index.php进行安装Discuz



 

几个常用小技巧

查看apache编译参数 cat /usr/local/apache2/build/config.nice

查看apache加载的模块 /usr/local/apache2/bin/apachectl -M

测试apache配置文件是否正确 /usr/local/apache2/bin/apachectl -t

更改配置文件后,重新加载apache /usr/local/apache2/bin/apachectl graceful

启动apache的命令为/usr/local/apache2/bin/apachectl start

查看mysql编译参数 cat /usr/local/mysql/bin/mysqlbug | grep -i configure

查看php配置文件位置/usr/local/php/bin/php -i | grep 'Configuration File'

查看extension_dir路径 /usr/local/php/bin/php -i | grep 'extension_dir'

 

搭建LNMP实验环境

一、安装MYSQL,安装步骤同LAMP环境一致

 

二、安装PHP

  • wget http://am1.php.net/distributions/php-5.3.27.tar.gz

  • tar -zxvf php-5.3.27.tar.gz

  • useradd -s  /sbin/nologin php-fpm

  • cd php-5.3.27

  • ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/var/lib/mysql --with-mysql-sock=/var/lib/mysql/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl

  • make

  • make install

  • php源码包中cp php.ini-production /usr/local/php_nginx/etc/php.ini  ---拷贝php配置文件

  • vim /usr/local/php_nginx/etc/php-fpm.conf  ---编辑php配置文件内容如下:

    [global]

    pid = /usr/local/php_nginx/var/run/php-fpm.pid

    error_log = /usr/local/php_nginx/var/log/php-fpm.log

    [www]

    listen = /tmp/php-fcgi.sock

    user = php-fpm

    group = php-fpm

    pm = dynamic

    pm.max_children = 50

    pm.start_servers = 20

    pm.min_spare_servers = 5

    pm.max_spare_servers = 35

    pm.max_requests = 500

    rlimit_files = 1024

  • 检测配置文件是否正确 /usr/local/php_nginx/sbin/php-fpm -t

  • cp /usr/local/src/php-5.3.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm  ---拷贝启动脚本

  • chmod 755 /etc/init.d/php-fpm  ---更改启动脚本属性

  • service php-fpm start  ---启动

  • chkconfig php-fpm on  ---设置开机启动


三、安装Nginx

  • nginx官网下载(http://nginx.org)

  • tar -zxvf nginx-1.9.1.tar.gz  ---解压nginx源码包

  • cd nginx-1.9.1  ---进入nginx源码包目录

  • ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre  ---编译安装

  • make

  • make install

  • 编写启动脚本 vim /etc/init.d/nginx加入以下内容:

#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() {
        echo -n $"Starting $prog: "
        mkdir -p /dev/shm/nginx_temp
        daemon $NGINX_SBIN -c $NGINX_CONF
        RETVAL=$?
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -TERM
        rm -rf /dev/shm/nginx_temp
        RETVAL=$?
        echo
        return $RETVAL
}

reload(){
        echo -n $"Reloading $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

restart(){
        stop
        start
}

configtest(){
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

exit $RETVAL
  • chmod 755 /etc/init.d/nginx  ---更改nginx属性

  • chkconfig --add /etc/init.d/nginx  ---将nginx加入系统启动项

  • chkconfig nginx on  ---设置开机启动

  • /etc/init.d/nginx start  ---启动

  • > /usr/local/nginx/conf/nginx.conf  ---清空原有配置文件
  • 编写nginx配置文件 vim /usr/local/nginx/conf/nginx.conf内容如下:

user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
{
    use epoll;
    worker_connections 6000;
}

http
{
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    '$host "$request_uri" $status'
    '"$http_referer" "$http_user_agent"';
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm application/xml;

server
{
    listen 80;
    server_name localhost;
    index index.html index.htm index.php;
    root /usr/local/nginx/html;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    }

}

}
  • /usr/local/nginx/sbin/nginx -t  ---检测配置文件是否正确

  • /etc/init.d/nginx restart  ---重启nginx服务 

  • 测试curl localhost/index.html

  • 测试解析php,vim /usr/local/nginx/html/1.php编写内容如下:


echo 11111;

?>

  • curl localhost/1.php



如日后工作碰到nginx报错502 bad gateway,可检查nginx.conf配置文件中

个人LINUX学习笔记_第1张图片

此项是否与PHP配置文件相同,如不一致请进行修改



扩展:利用Nginx搭建自己的Discuz论坛

  • 登陆download.discuz.com下载DiscuzX压缩包

  • 进入Nginx目录下的html目录

  • 解压缩Discuz压缩包 unzip Discuz_X3.2_SC_GBK.zip

  • mv upload/* .  ---将整个upload目录移动到html根目录

  • /etc/init.d/nginx restart  ---重启nginx服务

  • 调整iptables配置或关闭iptables

  • chown -R php-fpm config data uc_client uc_server  ---修改对应的几个目录权限为php-fpm可写

  • /usr/local/mysql/bin/mysql -uroot  ---登入mysql数据库

  • mysql> create database discuz;  ---建立discuz数据库

  • mysql> grant all on *.* to 'benson'@'localhost' identified by '85686827';  ---新建用户benson及设定密码为85686827

  • 用浏览器打开http://ip/index.php进行安装Discuz



MYSQL常用操作

一、设置/更改mysql root的密码

  • 默认root密码是空,可以直接登陆

  • select user();  ---查询登陆的用户名

  • /mysql路径如:/usr/local/mysql/bin/mysql -u用户 -p  ---指定用户与密码登陆mysql

  • PATH=$PATH:/usr/local/mysql/bin将此命令放入/etc/profile文件中  ---将mysql路径加入环境变量以便可以直接使用mysql代替/usr/local/mysql/bin/mysql

  • mysqladmin -uroot password '123456'  ---给root用户设定密码为123456

  • mysqladmin -uroot -p123456 password '654321'  ---将原123456密码修改为654321

  • mysql -uroot -p654321 -h远程地址 -P端口  ---远程连接mysql数据库

  • 开启mysql root帐户远程登陆

登入mysql:mysql -uroot -p密码

执行  GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

执行  COMMIT;

退出  exit


二、常用命令

  • show databases;  ---查看现在有哪些数据库

  • use db; show tables;  ---查看某个库的表

  • desc tb;  ---查看表的字段

  • show create tables tb;  ---查看建表语句

  • select user();  ---当前是哪个用户

  • select database();  ---当前库

  • create database 库名;  ---创建库

  • create table 表名 (`id` int(4), `name` char(40));  ---创建表,id类型是整数长度4,name类型是字符串长度是40

  • select version();  ---查看数据库版本

  • show status;  ---查看mysql状态

  • show variables;  ---查看所有mysql参数设置

  • show variables like '%connect%';  ---查找匹配包含connect字样的mysql参数项,%为Mysql通位符

  • show processlist;  ---查看mysql进程队列

  • grant all所有权限/select读/insert写/delete删除 on *.*(库名.表名) to '用户'@'主机地址' (主机地址为全部即可填写%)identified by '密码';  ---创建普通用户并授权

      授权后登陆方式:mysql -u用户 -p密码 -h主机地址

  • UPDATE mysql.user SET password=PASSWORD("密码") WHERE user='用户'  ---更改mysql用户密码,所有用户信息都存在mysql库内,修改后请刷新内存flush privileges;

  • insert into 表名 values(第一列数据,第二列数据);  ---指定数据表插入数据

  • insert into 表名 (指定列名) values(数据);  ---指定表名指定某列插入数据

  • 查询 select count(*) from 库名.表名; select * from 库名.表名; select * from 库名.表名 where host like '关键字%';

  • update 表名 set name='aaa' where id=1;  ---更改指定表内容  如下图:

个人LINUX学习笔记_第2张图片

  • truncate table 表名;  ---清空表

  • drop table 表名;  ---删除表

  • drop database 库名;  ---删除数据库

  • repair table 表名 (use 库名;show tables;)



Mysql的备份与恢复(针对myisam,innodb两种引擎)

  • 切换到mysqldump所在的目录或用find / -name mysqldump找到所在目录

  • ./mysqldump -uroot -p -h主机地址 -P远程端口 库名 > 文件名  ---远程备份mysql数据库到指定文件

  • ./mysqldump -uroot -p -h主机地址 -P远程端口 --default-character=gbk 库名 > 文件名  ---远程备份mysql指定数据库到指定文件并指定字符集

  • mysql -uroot -p -h主机地址 -P远程端口 库名 < 备份的文件  ---将指定备份文件恢复到指定数据库

  • mysql -uroot -p -h主机地址 -P远程端口 --default-character=gbk 库名 < 备份的文件  ---将指定备份文件恢复到指定数据库并指定字符集


Mysql root密码忘记后如何修改

  • vim /etc/my.cnf 在[mysqld]字段下添加参数 skip-grant  ---跳过帐户验证

  • 重启mysql

  • update mysql.user SET password=PASSWORD("12345") WHERE user='root';  ---重置密码为12345

  • vim /etc/my.cnf 将skip-grant字段删除

  • 重启mysql即可用密码12345登陆




NFS服务配置

一、安装配置NFS服务

  • yum install -y nfs-utils  #安装nfs-utils包会同时安装上rpcbind

  • 在NFS服务端上vim /etc/exports编辑内容如下:

  • /home/ 10.0.2.0/24(rw,sync,all_squash,anonuid=501,anongid=501)  #共分为三部分,第一部分是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个IP也可以是一个IP段),第三部分就是小括号里面的一些权限选项。共享的目录为/home,信任的主机为10.0.2.0/24这个网段,权限为读写,同步,限定所有使用者,并且限定的uid和gid都为501。

  • 启动/etc/init.d/rpcbind start;/etc/init.d/nfs start


二、NFS配置的一些选项说明

  • rw  #读写

  • ro  #只读

  • sync  #同步模式,内存中数据实时写入磁盘

  • async  #不同步,把内存中数据定期写入磁盘中

  • no_root_squash  #加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样,不安全,不建议使用

  • root_squash  #和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root

  • all_squash  #不管使用NFS的用户是谁,它的身份都会被限定成为一个指定的普通用户身份

  • anonuid/anongid  #要和root_squash以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid


三、在客户端上挂载NFS

  • 客户端安装yum install -y nfs-utils

  • showmount -e ***.***.***.***(此处为服务端IP)

  • 在客户端上挂载服务端的NFS:mount -t nfs ***.***.***.***:/home(服务端共享目录) /mnt(挂载在客户端的目录)

  • df -h  #查看挂载的情况 


四、exportfs命令的使用

-a  #全部挂载或者卸载

-r   #重新挂载

-u  #卸载某一个目录

-v  #显示共享的目录

改变/etc/exports配置文件后,不用重启nfs服务直接用这个exportfs即可

exportfs -arv  #可立即使NFS配置生效

在使用nfs时,常用一个选项就是 -o nolock

我们还可以把要卸载的nfs目录写到client上的/etc/fstab文件中

192.168.137.10:/tmp/ /test nfs nolock 0 0 然后mount -a


五、Mysql调优

  • 架构层:做从库,实现读写分离

  • 系统层次:增加内存,给磁盘做RAID0或RAID5以增加磁盘的读写速度,可以重新挂载磁盘,并加上noatime参数,这样可以减少磁盘的I/O;

  • Mysql本身调优:

      1、如果未配置主从同步,可以把bin-log功能关闭,减少磁盘I/O(编辑/etc/my.cnf将文件内log-           bin=mysql-bin去掉或注释掉即可)

      2、在my.cnf中加上skip-name-resolve,这样可以避免由于解析主机名延迟造成mysql执行慢(建         议安装完mysql后增加此参数)

      3、调整几个关键的buffer和cache,调整的依据,主要根据数据库的状态来调试

  • 应用层次:查看慢查询日志,根据慢查询日志优化程序中的SQL语句,比如增加索引


六、Mysql调整几个关键的buffer和cache

key_buffer_size  首先可以根据系统的内存大小设定它,大概的一个参考值:1G以下内存设定128M;2G/256M;4G/384M;8G/1024M;16G/2048M;这个值可以通过检查状态值key_read_requests和key_reads,可以知道key_buffer_size设置是否合理,比例key_reads/key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE 'key_read%'获得),注意:该参数值设置的过大反而会使服务器整体效率降低!

table_open_cache  打开一个表的时候,会临时把表里面的数据放到这部分内存中,一般设置成1024就够了,它的大小我们可以通过这样的方法来衡量:如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用SHOW STATUS LIKE 'Open%tables'获得),注意:不能盲目的把table_cache设置成很大的值,如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。

sort_buffer_size  查询排序时所能使用的缓冲区大小,该参数对应的分配内存是每连接独占,如果有100个连接,那么实际分配的总共排序缓冲区大小为100*4=400MB,所以,对于内存在4GB左右的服务器推荐设置为4-8M。


FTP服务

一、使用pure-ftpd搭建FTP服务

  • pure-ftpd官网:http://www.pureftpd.org  #pure-ftpd官网

  • wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.47.tar.bz2  #下载pure-ftpd源码包

  • tar jxvf pure-ftpd-1.0.47.tar.bz2  #解压pureftpd源码包

  • cd pure-ftpd-1.0.47  #切换进入pureftpd源码包目录

  • ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-peruserlimits --with-tls  #编译安装pureftpd

  • make && make install  #make并且make install

  • cd configuration-file  #切换进入configuration-file目录

  • mkdir -p /usr/local/pureftpd/etc  #创建配置文件目录

  • cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf  #复制配置文件到相应目录中

  • cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl  #复制启动脚本到相应目录中

  • chmod 755 /usr/local/pureftpd/sbin/pure-config.pl  #修改启动脚本权限

  • vim /usr/local/pureftpd/etc/pure-ftpd.conf编辑配置文件加入以下内容:

      ChrootEveryone                   yes

      BrokenClientsCompatibility  no

      MaxClientsNumber              50

      Daemonize                           yes

      MaxClientsPerIP                   8

      VerboseLog                          no

      DisplayDotFiles                     yes

      AnonymousOnly                   no

      SyslogFacility                        ftp

      DontResolve                         yes

      MaxIdleTime                        15

      PureDB                                /usr/local/pureftpd/etc/pure-ftpd.pdb

      LimitRecursion                     3136 8

      AnonymousCanCreateDirs   no

      MaxLoad                             4

      AntiWarez                           yes

      Umask                                133:022

      MinUID                               100

      AllowUserFXP                      no

      AllowAnonymousFXP           no

      ProhibitDotFilesWrite           no

      ProhibitDotFilesRead            no

      AutoRename                        no

      PIDFile                                 /usr/local/pureftpd/var/run/pure-ftpd.pid

      MaxDiskUsage                     99

      CustomerProof                    yes

  • /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf  #启动pureftpd服务将命令写入/etc/rc.local中即可开机启动


二、建立帐户

  • mkdir /home/ftp  #创建FTP根目录

  • useradd -s ftp /sbin/nologin ftp  #新建用户ftp并且设定nologin参数禁止远程登陆

  • chown -R ftp:ftp /home/ftp  #修改FTP根目录权限所属者与所属组为ftp

  • /usr/local/pureftpd/bin/pure-pw useradd ftp_user1 -uftp -d /home/ftp/  #创建虚拟帐户并映射到系统帐户ftp

-u将虚拟用户ftp_user1与系统用户ftp关联在一起,也就是说使用ftp_user1账号登陆ftp后,会以ftp的身份来读取文件或下载文件。-d 后边的目录为ftp_user1账户的家目录,这样可以使ftp_user1只能访问其家目录/data/www/. 到这里还未完成,还有最关键的一步,就是创建用户信息数据库文件:

  • /usr/local/pureftpd/bin/pure-pw mkdb  #生成密码文件数据库

  • /usr/local/pureftpd/bin/pure-pw list  #列出当前帐号

  • /usr/local/pureftpd/bin/pure-pw userdel ftp_user1  #删除指定FTP帐号


三、使用vsftpd配置FTP服务

  • yum install -y vsftpd db4-utils  #安装vsftpd及相关依赖包

  • 建立虚拟帐号相关联的系统帐号useradd virftp -s /sbin/nologin

  • 建立虚拟账号相关的文件vim /etc/vsftpd/vsftpd_login内容如下:

      test1

      123456

      test2

      abcdef

  • chmod 600 /etc/vsftpd/vsftpd_login  #修改密码文件安全权限只让ROOT帐户可读

  • 生成对应的库文件db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db

  • 建立虚拟账户相关的目录以及配置文件mkdir /etc/vsftpd/vsftpd_user_conf

  • cd /etc/vsftpd/vsftpd_user_conf  #创建和用户对应的配置文件

  • vim test1内容如下:

local_root=/home/virftp/test1

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=50000

  • mkdir /home/virftp/test1  #创建FTP帐户对应的目录

  • chown -R virftp:virftp /home/virftp/test1  #修改目录所属者与所属组权限

  • vim /etc/pam.d/vsftpd在最开头添加两行

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

  • vim /etc/vsftpd/vsftpd.conf编辑主配置文件内容如下:

anonymous_enable=YES改为anonymous_enable=NO  #是否允许匿名帐户登陆

#anon_upload_enable=YES改为anon_upload_enable=NO  #是否允许匿名上传

#anon_mkdir_write_enable=YES改为anon_mkdir_write_enable=NO  

新增:

chroot_local_user=YES

guest_enable=YES

guest_username=virftp

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

  • 启动vsftpd服务

/etc/init.d/vsftpd start

  • 创建帐户步骤:

vim /etc/vsftpd/vsftpd_login  #编辑此文件加入新的帐户test2与密码123

db_load -T -t hash -f /etc/vsftpd/vsftpd_login/etc/vsftpd/vsftpd_login.db  #生成对应的库文件

在/etc/vsftpd/vsftpd_user_conf目录下新建新帐户名对应的配置文件test2加入内容:

local_root=/home/virftp/test2

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=50000

创建新用户对应的目录mkdir /home/virftp/test2

chown -R virftp:virftp /home/virftp/test2  #修改目录所属者与所属组权限

/etc/init.d/vsftpd restart  #重启vsftpd服务


配置squid服务

一、squid简介

  • squid可以做企业内部使用(正向代理服务器)也可以做反向代理(缓存服务器)

  • squid做正向代理可以节约企业内部宽带资源,做反向代理可以降低服务器I/O

  • 做正向代理squid后面是客户端,客户端上网需要通过squid上网,做反向代理squid后面是服务器,服务器返回给用户的数据需要走squid如网站静态项(图片,html,流媒体,js,css等)的缓存服务器


二、搭建squid正向代理

  • 官网:www.squid-cache.org

  • 下载源码包后解压缩并用以下编译参数进行安装:

./configure --prefix=/usr/local/squid \
--disable-dependency-tracking \
--enable-dlmalloc \
--enable-gnuregex \
--disable-carp \
--enable-async-io=240 \
--with-pthreads \
--enable-storeio=ufs,aufs,diskd,null \
--disable-wccp \
--disable-wccpv2 \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-default-err-language=Simplify_Chinese \
--with-build-environment=POSIX_V6_ILP32_OFFBIG \
--with-maxfd=65535 \
--with-aio \
--disable-poll \
--enable-epoll \
--enable-linux-netfilter \
--enable-large-cache-files \
--disable-ident-lookups \
--enable-default-hostsfile=/etc/hosts \
--with-dl \
--with-large-files \
--enable-removal-policies=heap,lru \
--enable-delay-pools \
--enable-snmp \
--disable-internal-dns

  • make

  • make install

  • 即可用yum直接安装squid

  • yum install -y squid  #安装squid

  • squid -v  #查看版本以及编译参数

  • vim /etc/squid/squid.conf  #编辑squid配置文件加入以下内容:

http_port 3128  #默认正向代理的监听端口定义为3128
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 8080         # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow all
cache_dir aufs /data/cache 1024 16 256  #定义缓存目录
cache_mem 128 MB  #定义可缓存的内存大小,如果服务器上只运行squid服务那服务器只预留1G内存即可其余全部分配给squid
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reload  #定义缓存时间
refresh_pattern .               0       20%     4320

注意:以上蓝色备注部分不可加入配置文件,会报错

  • mkdir -p /data/cache  #创建缓存目录

  • chown -R squid:squid /data/cache  #更改权限

  • /etc/init.d/squid start

  • squid -kcheck  #检测配置文件是否有错误

  • squid -k rec  #重新加载配置文件

  • service squid restart  #重启squid服务

  • curl -xlocalhost:3128 www.qq.com

  • curl -xlocalhost:3128 http://www.lishiming.net/static/p_w_picpath/common/logo.png -l  #测试图片缓存

  • 查看x-cache项MISS表示未访问缓存,HIT表示已访问缓存图片

  • 限制某些域名不能通过代理访问,或者说只想代理某几个域名vim /etc/squid/squid.conf

vim /etc/squid/squid.conf  #添加以下内容设置域名黑名单

acl http proto HTTP

acl good_domain dstdomain .lishiming.net .aminglinux.com

http_access allow http good_domain

http_access deny http !good_domain

测试 curl -xlocalhost:3128 www.google.com.hk -l #403

测试 curl -xlocalhost:3128 www.lishiming.net/forum.php -l #200


三、搭建squid反向代理

vim /etc/squid/squid.conf  #如下变更

http_port 3128改为http_port 80 accel vhost vport

增加如下内容:

cache_peer 123.125.119.147 parent 80 0 originserver name=a

cache_peer 61.135.169.125 parent 80 0 originserver name=b

cache_peer_domain a www.qq.com

cache_peer_domain a www.baidu.com

之前增加的域名白/黑名单相关配置去掉

如果是squid要代理一台web上的所有域名,那么就写成这样:cache_peer 192.168.10.111 80 0 originserver  #只需要这一行,cache_peer_domain都可以省掉

/etc/init.d/squid restart

测试curl -x127.0.0.1:80 www.baidu.com -I


四、如何查看squid的缓存命中率

  • 在squid.conf中配置添加相关选项

acl manager proto cache_object

http_access allow manager

  • squidclient -h host -p port mgr:info  #命令查看命中率

  • /usr/local/squid/bin/squidclient -h 127.0.0.1 -p 8080 mgr:info  #命令查看命中率

wKioL1Xa1TiwTcYmAAEyxAThAE8868.jpg通常查看此值Memory hits


五、配置squid透明代理 

  • yum install -y squid  #安装squid服务

  • rm -rf /etc/squid/squid.conf  #删除squid配置文件

  • vim /etc/squid/squid.conf  #编辑squid配置文件加入以下内容

写入以下内容:

http_port 3128 transparent

acl manager proto cache_object

acl localhost src 127.0.0.1/32 ::1

acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl localhost src 10.0.0.0/8  #RFC1918 possible internal network

acl localhost src 172.16.0.0/12  #RFC1918 possible internal network

acl localhost src 192.168.0.0/16  #RFC1918 possible internal network

acl SSL_ports port 443

acl Safe_ports port 80 8080  #http

acl Safe_ports port 21  #ftp

acl Safe_ports port 443  #https

acl CONNECT method CONNECT

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localnet

http_access allow localhost

http_access deny all

cache_dir aufs /data/cache 1024 16 256

cache_mem 128MB

hierarchy_stoplist cgi-bin ?

coredump_dir /var/spool/squid

refresh_pattern ^ftp:        1440   20%   10080

refresh_pattern ^gopher:        1440   0%    1440

refresh_pattern -i (/cgi-bin/|\?)0   0%   0

refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%    2880    ignore-reload

refresh_pattern .        0    20%    4320


mkdir /data/cache; chown -R squid:squid /data/cache  #创建缓存目录并修改权限

squid -z  #初始化缓存目录

service squid start  #启动squid服务

echo "1" > /proc/sys/net/ipv4/ip_forward  #打开端口转发功能

iptables -t nat  -A POSTROUTING -o etho -j MASQUERADE  #调整防火墙规则

iptables -t nat -A PREROUTING -p tcp -s 192.168.19.0/24 --dport 80 -j REDIRECT --to-ports 3128



LB/LVS简介

LB集群是load balance集群的缩写,翻译成中文就是负载均衡集群

LVS是一个实现负载均衡集群的开源软件项目

LVS架构从逻辑上可分为调度层(Director)、server集群层(Real server)和共享存储层

LVS可分为三种工作模式:

NAT(调度器将请求的目标IP即VIP地址改为real server的IP,返回的数据包也经过调度器,调度器再把源地址修改为VIP)

TUN(调度器将请求来的数据包封装加密通过IP隧道转发到后端的real server上,而real server会直接把数据返回给客户端,而不再经过调度器)

DR(调度器将请求来的数据包的目标MAC地址改为real server的MAC地址,返回的时候也不经过调度器,直接返回给客户端)

三种IP:

DIP(director ip),VIP(virtual ip),RIP(real ip)。其中DIP,RIP为同一个网段


LVS/NAT配置

  • 三台服务器一台作为director,两台作为real server

  • director有一个外网IP(188.188.7.45)和一个内网IP(192.168.200.11)两个real server上只有内网IP(192.168.200.128)和(192.168.200.129)并且需要把两个real server的内网网关设置为director的内网IP(192.168.200.11)

  • 两个real server上都安装httpd: yum install -y httpd

  • 在R1与R2中/var/www/html路径添加测试页面1.html,并加入内容real server 1/real server 2

  • director上安装ipvsadm: yum install -y ipvsadm

  • director上vim /usr/local/sbin/lvs_nat.sh增加内容:

#! /bin/bash

#director 服务器上开启路由转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward  #开启路由转发功能

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects  #关闭ICMP报文转发

echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects  

echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

#director设置nat防火墙

iptables -t nat -F  #清空所有nat链表

iptables -t nat -X  #删除自定义的链

iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE  #增加一条转发规则转发到192.168.200.0/24段

#director设置ipvsadm

IPVSADM='/sbin/ipvsadm'  #设置变量IPVSADM为路径/sbin/ipvsadm

$IPVSADM -C  #清空所有规则

$IPVSADM -A -t 188.188.7.45:80 -s lc -p 300  #新增一条tcp规则指定director地址及80端口-s指定用LC(最少链接调度算法)-p 300表示常连接,保持连接300秒

$IPVSADM -a -t 188.188.7.45:80 -r 192.168.200.128:80 -m -w 1  #新增real server192.168.200.128指定80端口-m使用nat模式 -w表示权重

$IPVSADM -a -t 188.188.7.45:80 -r 192.168.200.129:80 -m -w 1  #新增real server192.168.200.129指定80端口-m使用nat模式 -w表示权重

  • /bin/bash /usr/local/sbin/lvs_nat.sh  ---运行配置脚本

  • 通过浏览器测试两台机器上的httpd内容



安装TOMCAT

一、安装JDK

  • cd /usr/local/src  ---切换到/usr/local/src目录下

  • wget http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm  ---下载JDK安装用的RPM包

  • rpm -ivh jdk-8u45-linux-x64.rpm  ---安装JDK rpm包

  • 检查/usr/java/jdk1.8.0_45目录是否存在,用java -version查看版本信息

  • 编辑/etc/profile文件在底部加入:

    JAVA_HOME=/usr/java/jdk1.8.0_45

    PATH=$JAVA_HOME/bin:$PATH

    CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar

    export PATH JAVA_HOME CLASSPATH

  • source /etc/profile  ---使profile文件立即生效

  • 测试:

    使用javac命令,不会出现command not found错误

    使用java -version,出现版本为java version "1.8.0_45"

    echo $JAVA_HOME, echo $CLASSPATH, echo $PATH,看看自己的配置是否都正确


二、安装tomcat

  • wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz官网下载tomcat8的tar.gz包放置于/usr/local/src目录下

  • tar -zxvf apache-tomcat-8.0.23.tar.gz  ---解压tomcat源码包

  • mv apache-tomcat-8.0.23 /usr/local/tomcat  ---移动tomcat目录到/usr/local/tomcat

  • cp -p /usr/local/tomcat/bin/catalina.sh /etc/init.d/tomcat  ---拷贝tomcat启动脚本到/etc/init.d/目录下更名为tomcat

  • vim /etc/init.d/tomcat  ---编辑tomcat启动脚本在第二行加入以下内容:

#chkconfig: 112 63 37

#description: tomcat server init script

#Source Function Library

./etc/init.d/functions

JAVA_HOME=/usr/java/jdk1.8.0_45/

CATALINA_HOME=/usr/local/tomcat

  • chmod 755 /etc/init.d/tomcat  ---修改tomcat启动脚本权限

  • chkconfig --add tomcat  ---将tomcat加入系统启动项

  • chkconfig tomcat on  ---设置开机启动

  • service tomcat start  ---启动tomcat

  • /usr/local/tomcat/bin/shutdown.sh  #关闭tomcat

  • /usr/local/tomcat/bin/startup.sh  #启动tomcat

  • 浏览器中输入http://ip:8080可以看到tomcat欢迎页


三、配置tomcat

  • tomcat配置文件:vim /usr/local/tomcat/conf/server.xml

  • 更改默认启动端口:Connector port="8080" 改为 Connector port="80"

  • 配置新虚拟主机:找到下一行插入新的内容如下:

www.123.cn" appBase="/data/tomcatweb"

unpackWARs="false" autoDeploy="true" xmlValidation="false"

xmlNamespaceAware="false">

crossContext="true"/>


  • 重启:service tomcat stop;service tomcat start


安装配置SAMBA

  • yum install -y samba samba-client

  • 配置文件解说:

  • [global] 定义全局的配置,workgroup用来定义工作组,相信如果你安装过windows的系统,你会对这个workgroup不陌生。一般情况下,需要我们把这里的MYGROUP改成WORKGROUP(windows默认的工作组名字)。

  • security = user #这里指定samba的安全等级。关于安全等级有四种:

  • share:用户不需要账户及密码即可登录samba服务器

  • user:由提供服务的samba服务器负责检查账户及密码(默认)

  • server:检查账户及密码的工作由另一台windows或samba服务器负责

  • domain:指定windows域控制服务器来验证用户的账户及密码。

  • passdb backend = tdbsam # passdb backend(用户后台),samba有三种用户后台:smbpasswd, tdbsam和ldapsam.

  • smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。

  • tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用 smbpasswd -a 创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。pdbedit参数很多,列出几个主要的:

pdbedit -a username:新建Samba账户。

pdbedit -x username:删除Samba账户。

pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。

pdbedit -Lv:列出Samba用户列表详细信息。

pdbedit -c “[D]” -u username:暂停该Samba用户账号。

pdbedit -c “[]” -u username:恢复该Samba用户账号。

ldapsam:基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置 “passdb backend = ldapsam:ldap://LDAP Server”

load printers 和 cups options 两个参数用来设置打印机相关。

  • 除了这些参数外,还有几个参数需要你了解:

  • netbios name = MYSERVER # 设置出现在网上邻居中的主机名

  • hosts allow = 127. 192.168.12. 192.168.13. # 用来设置允许的主机,如果在前面加 ”;” 则表示允许所有主机

  • log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios name

  • max log size = 50 # 指定日志的最大容量,单位是K

  • [homes] 该部分内容共享用户自己的家目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。

  • [printers] 该部分内容设置打印机共享。


1. 共享一个目录,任何人都可以访问,即不用输入密码即可访问,要求只读

  • 打开samba的配置文件/etc/samba/smb.conf 在[global]部分

把:

MYGROUP

改成:

WORKGROUP

把:

security = user

修改为:

security = share

然后在文件的最末尾处加入以下内容:

[share]
       comment = share all
       path = /tmp/samba
       browseable = yes
       public = yes
       writable = no

  • 创建测试目录:

mkdir /tmp/samba
chmod 777 /tmp/samba
touch /tmp/samba/sharefiles
echo "111111" > /tmp/samba/sharefiles

  • 启动samba服务:

/etc/init.d/smb start

  • 测试:

首先测试你配置的smb.conf是否正确,用下面的命令:

testparm

你应该会看到一个警告:WARNING: The security=share option is deprecated, 不过影响不大,无需管它。如果没有错误,则在你的windows机器上的浏览器中输入:

file://IP/share

看是否能访问到sharefiles


2. 共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写

  • 打开samba的配置文件/etc/samba/smb.conf

[global] 部分内容如下:

[global]
       workgroup = WORKGROUP
       server string = Samba Server Version %v
       security = user
       passdb backend = tdbsam
       load printers = yes
       cups options = raw

  • 还需要加入以下内容:

[myshare]
       comment = share for users
       path = /samba
       browseable = yes
       writable = yes
       public = no

  • 保存配置文件,创建目录:

mkdir /samba
chmod 777 /samba

  • 然后添加用户。因为在[globa]中 “passdb backend = tdbsam”, 所以要使用 pdbedit 来增加用户,注意添加的用户必须在系统中存在,所以需要先创建系统账号:

useradd user1
useradd user2

  • 然后添加user1为samba账号:

pdbedit -a user1

  • 再添加user2为samba账号:

pdbedit -a user2

  • 我们可以列出samba所有账号:

pdbedit -L

  • 重启samba服务:

service smb restart

  • 测试:

打开IE浏览器输入:

file://IP/myshare/

然后输入用户名和密码


3. 使用linux访问samba服务器

  • Samba服务在linux下同样可以访问。前提是你的linux安装了samba-client软件包。安装完后就可以使用smbclient命令了。具体语法为:

smbclient //IP/共享名  -U 用户名

如:

[root@localhost]# smbclient //10.0.4.67/myshare/ -U user1
Password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
smb: \>

出现如上所示的界面。可以打一个 ”?” 列出所有可以使用的命令。常用的有cd, ls, rm, pwd, tar, mkdir, chown, get, put等等,使用 help + 命令可以打印该命令如何使用,其中get是下载,put是上传。

  • 另外的方式就是通过mount挂载了,如:

mount -t cifs //10.0.4.67/myshare /mnt -o username=user1,password=123456

格式就是这样,要指定 -t cifs //IP/共享名 本地挂载点 -o后面跟username 和 password 挂载完后就可以像使用本地的目录一样使用共享的目录了,注意共享名后面不能有斜杠。


Mysql replication(主从)配置

一、Mysql主从应用场景

  • 原理是master上数据更新时会记录一个bin-log,slave会实时同步该bin-log然后slave根据bin-log的sql语句进行相应的操作

  • Mysql主从可以实时备份,保证数据高安全性

  • 可以应用在读写分离的场景中,用以降低单台Mysql服务器的I/O

  • 可以实现Mysql服务的HA集群

  • 可以是1主多从,也可以是互相主从(主主)


二、配置mysql服务

  • MySQL Replication 又叫做AB复制或者主从复制。它主要用于MySQL的时时备份或者读写分离。在配置之前先做一下准备工作,配置两台mysql服务器,或者在一台服务器上配置两个端口也可以。本章的实验中就是在一台服务器上跑了两个mysql。

  • 原有一台3306端口的Mysql再搭建一个3307端口的mysql:

[root@localhost ~]# cd /usr/local/
[root@localhost local]# cp -r mysql mysql_2
[root@localhost local]# cd mysql_2
[root@localhost mysql_2]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql2

  • 最后一步是初始化数据库目录,如果出现两个 “OK” 并且生成/data/mysql2目录才正确

  • 拷贝配置文件到mysql_2下,并修改相关项目:

[root@localhost mysql_2]# cp /etc/my.cnf  ./my.cnf
[root@localhost mysql_2]# vim my.cnf

其中:

port          = 3306

改为:

port          = 3307

把:

socket        = /tmp/mysql.sock

改为:

socket        = /tmp/mysql2.sock

在这一行的下面再加一行:

datadir         = /data/mysql2

  • 保存后就可以启动它了:

[root@localhost mysql_2]# cd bin/
[root@localhost bin]# ./mysqld_safe --defaults-file=../my.cnf --user=mysql &

  • 如果以后想开机启动,就把它加入/etc/rc.d/rc.local文件中:

echo "./mysqld_safe --defaults-file=../my.cnf --user=mysql &" >>/etc/rc.d/rc.local

可通过以下两种方法登陆另一个数据库:

mysql -uroot -h127.0.0.1 -P3307  #远程登陆的方法登陆另一个数据库

mysql -uroot -S /tmp/mysql2.sock  #使用sock文件登陆另一个数据库


二、配置repication

把3307端口的mysql作为主(master),而把3306的mysql作为从(slave). 为了让实验更加像生产环境,所以先在master上创建一个库db1,并且把mysql的库数据复制给它:

[root@localhost bin]# mysql -uroot -S /tmp/mysql2.sock

mysql> create database db1;
Query OK, 1 row affected (0.01 sec)

mysql> quit
Bye

-S 后面指定mysql的socket文件路径,这也是登陆mysql的一种方法,因为在一台服务器上跑了两个mysql端口,所以,只能用 -S 这样的方法来区分。首先创建了db1库,然后把mysql库的数据复制给它:

mysqldump -uroot -S /tmp/mysql2.sock mysql > 123.sql
mysql -uroot -S /tmp/mysql2.sock db1 < 123.sql

1. 设置master

修改配置文件:

vim /usr/local/mysql_2/my.cnf

在[mysqld]部分查看是否有以下内容,如果没有则添加:

server-id=1

log-bin=mysql-bin

除了这两行是必须的外,还有两个参数,你可以选择性的使用:

binlog-do-db=databasename1,databasename2  #设置需要同步的库名

binlog-ignore-db=databasename1,databasename2  #设置忽略不同步的库名

binlog-do-db=需要复制的数据库名,多个数据库名,使用逗号分隔。binlog-ignore-db=不需要复制的数据库库名,多个数据库名,使用逗号分隔。这两个参数其实用一个就可以啦。

如果修改过配置文件需要重启mysqld服务,否则不需要重启:

[root@localhost ~]# pid=`ps uax |grep mysql2.sock |grep -v grep |awk '{print $2}'`
[root@localhost ~]# kill -0 $pid; sleep 3; kill $pid
[root@localhost ~]# cd /usr/local/mysql_2/bin/
[root@localhost bin]# ./mysqld_safe --defaults-file=../my.cnf --user=mysql &

由于没有编写启动脚本,所以3307端口的mysql重启有点麻烦。

设置mysql数据库的root访问密码:

mysqladmin -u root -S /tmp/mysql2.sock password '123456'
mysql -u root -S /tmp/mysql2.sock -p'123456'

mysql> grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123123';
//这里的repl是为slave端设置的访问master端mysql数据的用户,密码为123123,这里的127.0.0.1为slave的ip(因为阿铭配置的master和slave都在本机)。
mysql> flush tables with read lock;  //锁定数据库,此时不允许更改任何数据
mysql> show master status;  //查看状态,这些数据是要记录的,一会要在slave端用到
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |   474952 |              |                  |
+------------------+----------+--------------+------------------+

2. 设置slave

先修改slave的配置文件my.cnf:

vim /etc/my.cnf

找到 “server-id = 1” 这一行,删除掉或者改为 “server-id = 2” 总之不能让这个id和master一样,否则会报错,此项必须加在[mysqld]选项下方可生效,另外在从上,你也可以选择性的增加如下两行,对应于主上增加的两行:

replicate-do-db=databasename1,databasename2

replicate-ignore-db=databasename1,databasename2

改完后,重启slave:

service mysqld restart

拷贝master上的db1库的数据到slave上,因为master和slave都在一台服务器上,所以操作起来简单了很多,如果是不同的机器,可能就需要远程拷贝了:

[root@localhost ~]# mysqldump -uroot -S /tmp/mysql2.sock -p123456 db1 > db1.sql
[root@localhost ~]# mysql -uroot -S /tmp/mysql.sock -pyourpassword -e "create database db1"
[root@localhost ~]# mysql -uroot -S /tmp/mysql.sock -pyourpassword db1 < db1.sql

第二行中,使用了一个-e选项,它用来把mysql的命令写到shell中,这样可以方便把mysql操作写进脚本中,它的格式就是 -e "commond" 它很实用,用的也是蛮多的,所以请熟记它。把数据拷贝过来后,就需要在slave上配置主从了:

[root@localhost ~]# mysql -uroot -S /tmp/mysql.sock -pyourpassword
mysql> slave stop;
mysql> change master to master_host='127.0.0.1', master_port=3307,
master_user='repl', master_password='123123',
master_log_file='mysql-bin.000006', master_log_pos=474952;
mysql> slave start;

相信聪明的你一定可以看懂上面的各个参数分别表示什么含义,其中master_log_file和master_log_pos是在上面使用 show master status 查到的数据。执行完这一步后,需要在master上执行一步:

mysql -uroot -S /tmp/mysql2.sock -p123456 -e "unlock tables"

然后查看slave的状态:

mysql> show slave status\G;

确认以下两项参数都为yes:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

最后在master数据库上解锁表unlock tables;


为Centos6.5系统的笔记本设置无线网卡上网


  • 安装无线网卡驱动

  • ifup wlan0  #开启无线网卡

  • iwlist wlan0 scan  #扫描可连接的SSID

  • 安装wpa_supplicant工具  #用wpa_supplicant的源码包安装

  • wpa_passphrase SSID名 >>/etc/wpa_supplicant/wpa_supplicant.conf  

      输入SSID对应的密码  #将SSID与密码写入wpa配置文件

  • wpa_supplicant -i wlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -D wext –B  #进行无线网络的连接

  • 自行到/etc/sysconfig/network-script/ifcfg-wlan0文件调整IP设置


Tomcat7通过memcache实现session共享(ipvsadm实现请求分发)

一、搭建LVS环境

一台director安装ipvsadm,两台tomcat7,一台memcache+mysql(具体查看LVS部分搭建的说明)


二、安装memcache并测试

  • yum install -y gcc

  • yum install -y gcc-c++

  • 下载libevent到/usr/local/usr

  • tar -zxvf libevent-x.x.x.tar.gz  ---解压libevent源码包

  • cd libevent-x.x.x  ---进入libevent源码包目录

  • ./configure --prefix=/usr  ---编译libevent指定安装目录

  • make

  • make install

  • 安装完后可以查看下/usr/lib是否有libevent等文件(ls -al /usr/lib | grep libevent)

  • 下载memcache到/usr/local/src目录

  • tar -zxvf memcached-1.4.15.tar.gz  ---解压memcache源码包

  • cd memcached-1.4.15  ---进入memcache源码包

  • ./configure --with-libevent=/usr  ---编译memcache指定安装目录

  • make

  • make install

  • /usr/local/bin/memcached -d -m 1024 -u root -p 11211 -P /tmp/memcached.pid  ---启动memcache服务指定最大内存为1024m,端口为11211

  • memcached命令参数解释: 
    -p             监听的端口 
    -l          连接的IP地址, 默认是本机 
    -d start                  启动memcached 服务 
    -d restart               重起memcached 服务 
    -d stop|shutdown  关闭正在运行的memcached 服务 
    -d install                安装memcached 服务 
    -d uninstall            卸载memcached 服务 
    -u      以的身份运行 (仅在以root运行的时候有效) 
    -m            最大内存使用,单位MB。默认64MB 
    -M                         内存耗尽时返回错误,而不是删除项 
    -c              最大同时连接数,默认是1024 
    -f            块大小增长因子,默认是1.25 
    -n            最小分配空间,key+value+flags默认是48 
    -h                          显示帮助 

  • yum install -y telnet-server  ---安装telnet服务

  • yum install -y telnet  ---安装telnet客户端

  • 编辑vim /etc/xinetd.d/telnet文件,修改disable=no即可

  • service xinetd restart  ---重启telnet服务

  • 测试memcache,telnet 127.0.0.1 11211,输入stats会输出memcache的一些连接信息,需要退出memcache服务只需结束对应的pid即可


Tomcat连接memcache相关配置

  • 首先需要在两台tomcat服务器安装路径所在的lib里面加上memcached相关的jar包

个人LINUX学习笔记_第3张图片

以上是tomcat7搭配memcache所需的jar包文件下载地址

  • 配置tomcat目录下的conf/context.xml文件在配置文件中两个中间加入以下内容:

 ...

 

              memcachedNodes="n1:192.168.200.130:11211"

              sessionBackupTimeout="1800"

              requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"                            transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"             

  />

这里的memcachedNodes节点中的n1为memcache服务器地址,有多个memcache服务器可用空格隔开添加多个节点

  • 建立测试页面添加以下代码,并打开浏览器访问页面,观察SessionID在同一浏览器刷新后切换不同tomcat服务器会不会发现变化,如果一直保持一致即成功,如果跟随tomcat服务器变化则失败。

tomcat服务器1建立以下测试页面:

SessionID:<%=session.getId()%>


SessionIP:<%=request.getServerName()%>


SessionPort:<%=request.getServerPort()%>

<%

out.println("This is Tomcat Server 111111!");

%>

tomcat服务器1建立以下测试页面:

SessionID:<%=session.getId()%>


SessionIP:<%=request.getServerName()%>


SessionPort:<%=request.getServerPort()%>

<%

out.println("This is Tomcat Server 222222!");

%>


Nagios/Zabbix监控

一、Nagios安装--服务端

  • 安装扩展源:epel-release-6-7.noarch.rpm 下载地址

  • 下载源包放置于/usr/local/src目录下

  • rpm -ivh epel-release-6-7.noarch.rpm  ---安装扩展源

  • yum install -y httpd nagios nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe  ---安装Nagios及其所依赖的组件包

  • htpasswd -c /etc/nagios/passwd nagiosadmin  ---设置nagios后台登陆的用户和密码

  • /etc/nagios/nagios.cfg  ---nagios配置文件位置

  • nagios -v /etc/nagios/nagios.cfg  ---检测nagios配置文件

  • service httpd start; service nagios start  ---启动php及nagios服务

  • 浏览器访问http://IP/nagios


二、Nagios安装--客户端

  • 安装扩展源:epel-release-6-7.noarch.rpm 下载地址

  • 下载源包放置于/usr/local/src目录下

  • rpm -ivh epel-release-6-7.noarch.rpm  ---安装扩展源

  • yum install -y nagios-plugins nagios-plugins-all nrpe nagios-plugins-nrpe  ---安装Nagios客户端及其所依赖的组件包

  • vim /etc/nagios/nrpe.cfg  ---编辑配置文件找到allowed_hosts=127.0.0.1改为allowed_hosts=127.0.0.1,x.x.x.x 后面的IP是服务端IP;找到dont_blame_nrpe=0改为dont_blame_nrpe=1

  • /etc/init.d/nrpe start  ---启动客户端nagios服务


三、服务端添加被监控主机

  • 添加nrpe服务需先进行以下步骤

    服务端编辑/etc/nagios/objects/commands.cfg

    增加:

    define command{

           command_name  check_nrpe

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

           }

  • cd /etc/nagios/conf.d  ---切换至此目录下

  • vim 188.188.7.119.cfg  ---新建一个配置文件加入以下内容:

define host{

       use       linux-server

       host_name 188.188.7.119  #主机名可自定义

       alias     client-119     #别名可自定义

       address   188.188.7.119  #客户端IP

}


define service{  #监控服务器PING服务

       use                      generic-service

       host_name                188.188.7.119  #主机名可自定义

       service_description      check_ping     #服务检测名称可自定义

       check_command            check_ping!100.0,20%!200.0,50%

       max_check_attempts 5

       normal_check_interval 1

}


define service{  #监控服务器SSH服务

       use                      generic-service

       host_name                188.188.7.119  #主机名可自定义

       service_description      check_ssh      #服务检测名称可自定义

       check_command            check_ssh

       max_check_attempts 5  #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警

       normal_check_interval 1  #重新检测的时间间隔,单位是分钟,默认是3分钟

}


define service{  #监控服务器HTTP服务

       use                      generic-service

       host_name                188.188.7.119  #主机名可自定义

       service_description      check_http     #服务检测名称可自定义

       check_command            check_http

       max_check_attempts 5  #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警

       normal_check_interval 1  #重新检测的时间间隔,单位是分钟,默认是3分钟

}



define service{  #监控服务器负载

       use                      generic-service

       host_name                188.188.7.119  #主机名可自定义

       service_description      check_load     #服务检测名称可自定义

       check_command            check_nrpe!check_load

       max_check_attempts 5  #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警

       normal_check_interval 1  #重新检测的时间间隔,单位是分钟,默认是3分钟

}


define service{  #监控服务器硬盘分区1

       use                      generic-service

       host_name                188.188.7.119    #主机名可自定义

       service_description      check_disk_sda1  #服务检测名称可自定义

       check_command            check_nrpe!check_sda1  #check_sda1这里具体的命令选项可查看客户端/etc/nagios/nrpe.cfg文件根据文件内命令填写

       max_check_attempts 5  #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警

       normal_check_interval 1  #重新检测的时间间隔,单位是分钟,默认是3分钟

}



define service{  #监控服务器硬盘分区2

       use                      generic-service

       host_name                188.188.7.119    #主机名可自定义

       service_description      check_disk_sda2  #服务检测名称可自定义

       check_command            check_nrpe!check_sda2  #check_sda1这里具体的命令选项可查看客户端/etc/nagios/nrpe.cfg文件根据文件内命令填写

       max_check_attempts 5  #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警

       normal_check_interval 1  #重新检测的时间间隔,单位是分钟,默认是3分钟

}


编辑完成后保存退出

  • nagios -v /etc/nagios/nagios.cfg  #检测nagios主配置文件

  • /etc/init.d/nagios restart  #重启nagios服务


四、配件文件的简单说明

  • 我们定义的配置文件中一共监控了三个service:ssh,ping,http这三个项目是使用本地的nagios工具去连接远程机器,也就是说即使客户端没有安装nagios-plugins以及nrpe也是可以监控到的。其他的一些service诸如负载、磁盘使用等是需要服务端通过nrpe去连接到远程主机获得信息,所以远程主机安装nrpe服务以及相应的执行脚本(nagios-plugins)

  • max_check_attempts_5  #当nagios检测到问题时,一共尝试检测5次都有问题才会告警,如果该数值为1,那么检测到问题立即告警

  • normal_check_interval 1  #重新检测的时间间隔,单位是分钟,默认是3分钟

  • notification_interval 60  #在服务出现异常后,故障一直没有解决,nagios再次对使用发出通知的时间。单位是分钟,如果你认为所有的事件只需要一次通知就够了,可以把这里的选项设为0


五、配置邮件告警

  • 首先需要安装邮件服务yum install -y sendmail

  • 编辑/etc/nagios/objects/contacts.cfg增加以下内容:

  • define contact{

       contact_name  123  #名称可自定义

       use           generic-contact

       alias         ben  #别名可自定义

       email         [email protected]

      }

  • 最关键是email参数,这里之所以用139邮箱,是因为139邮箱有短信提醒功能

  • /etc/nagios/objects/templates.cfg此文件中定义了诸多监控告警策略,搜索generic-contact即可针对以上定义的service去定义告警策略

  • 几个重要参数说明:

    notifications_enabled  #是否开启提醒功能,1为开启,0为禁用,一般这个选项会在主配置文件    (nagios.cfg)中定义,效果相同

    notification_interval  #表示重复发送提醒信息的最短间隔时间,默认间隔时间是60分钟,如果     这个值设置为0,将不会发送重复提醒

    notification_period  #发送提醒的时间段,重要的主机一般定义为24*7,一般的主机只定义上班     时间,如果不在定义的时间段内,无论什么问题发生都不会发送提醒

    notification_options  #这个参数定义了发送提醒包扩的情况,d=状态为DOWN u=状态为             UNREACHABLE r=状态恢复为OK f=flapping n=不发送提醒


六、安装Zabbix监控

  • 安装扩展源:epel-release-6-7.noarch.rpm 下载地址

  • 下载源包放置于/usr/local/src目录下

  • rpm -ivh epel-release-6-7.noarch.rpm  #安装扩展源包

  • yum install -y zabbix22 zabbix22-agent zabbix22-server zabbix22-server-mysql zabbix22-web zabbix22-web-mysql net-snmp-devel  #安装zabbix服务端

  • /etc/init.d/zabbix-server start;/etc/init.d/zabbix-agent start  #启动zabbix服务端和代理

  • /etc/init.d/httpd start;/etc/init.d/mysqld start  #启动PHP及Mysql

  • mysql -uroot -p -e "create database zabbix"  #创建数据库zabbix

  • mysql -uroot -p zabbix < /usr/share/zabbix-mysql/schema.sql  #导入相关数据

  • mysql -uroot -p zabbix < /usr/share/zabbix-mysql/p_w_picpaths.sql  #导入相关数据

  • mysql -uroot -p zabbix < /usr/share/zabbix-mysql/data.sql  #导入相关数据

  • vim /etc/php.ini 将;date.timezone = 修改为date.timezone = "Asia/Chongqing"

  • 用浏览器打开http://IP/zabbix对zabbix进行安装

  • 安装过程中检测到的错误信息可在/etc/php.ini文件中修改对应选项如下图

个人LINUX学习笔记_第4张图片

修改完相关报错选项后重启php即可继续安装,/etc/init.d/httpd restart

  • 进入zabbix后提示如下报错

个人LINUX学习笔记_第5张图片

  • vim /etc/zabbix/zabbix_server.conf修改DBUser=zabbix改为DBUser=root,在# DBPassword=下添加一行DBPassword=zabbix数据库密码最后重启zabbix-server即可/etc/init.d/zabbix-server restart

  • 点击administratortion-Users-再选择zabbix administrators右边的Users-单击admin-Language那项选择为chinese即可  #将zabbix系统语言修改为中文

个人LINUX学习笔记_第6张图片


七、加入要监控的主机

  • 在客户端上yum install -y zabbix22-agent  #在客户机上安装被监控端

  • vim /etc/zabbix_agentd.conf修改server=服务端IP;Hostname=自定义名称

  • /etc/init.d/zabbix-agent start  #启动被监控端

  • zabbix_get -s 客户端IP -p10050 -k "system.hostname"  #在服务端上检测客户端主机名

  • 在WEB界面下,点configuration--host--create host,其中host name,visible name自定义,可以选择groups,这里默认即可,IP address写入客户端IP

  • templates--在搜索框内搜索linux选择Template OS Linux--add--save  #配置监控项目模版



八、自定义templates

  • Zabbix自带了很多模版,模版中有很多监控项目,比如CPU、网卡、内存、进程等等。使用系统自带模块功能有点过多,模块可以自定义,configuration--templates--create template  #创建自定义的模块

  • Template name和Visible name可自定义,Groups选择templates,点save

  • 然后我们去挑选一些项目拷贝到该模版下:比如找到Template OS Linux点一下items,选择我们想要的项目,然后在下面选择copy selected to...然后点go

  • Group选择templates,找到刚才我们自定义的templates,点copy

  • 点configuration选择templates可以看到新建的templates中已经刚刚我们copy的items

  • 我们可以使用和上面相同的方法自定义拷贝Triggers(触发器),它用来设置告警阀值,我们也可以自定义编辑它



借住国外服务器搭建×××服务

  • yum install -y ppp iptables  #安装PPP服务与iptables服务

  • http://pan.baidu.com/s/1hq7zvgS  #下载pptpd安装包

  • rpm -ivh pptpd-1.4.0-3.el6.x86_64.rpm  #rpm安装pptpd安装包

  • vim /etc/pptpd.conf  #编辑pptpd配置文件

    把下面字段前的#去掉:localip 192.168.0.1 ; remoteip 192.168.0.234-238,192.168.0.245

  • vim /etc/ppp/options.pptpd  #编辑options.pptpd文件

    去掉ms-dns前面的#,并使用google的dns服务器,修改成如下字段:

    ms-dns 8.8.8.8

    ms-dns 8.8.4.4

  • vim /etc/ppp/chap-secrets  #编辑chap-secrets文件设置×××帐号密码,格式如下:

    ×××用户名  pptpd  ×××密码  指定登陆IP*代表全部

  • vim /etc/sysctl.conf  #编辑sysctl.conf文件使其支持转发

    将net.ipv4.ip_forward的值改为1,同时在net.ipv4.tcp_syncookies = 1前面加#

  • 使sysctl.conf配置文件生效并添加iptables转发规则:

    sysctl -p

    iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source ***.***.***.***(这     里为你服务器的公网IP地址)

    iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT

  • service iptables save  #保存防火墙设置

  • service iptables restart  #重启防火墙

  • /etc/init.d/pptpd restart  #重启pptpd服务

  • chkconfig pptpd on  #设置pptpd服务开机启动

  • chkconfig iptables on  #设置iptables防火墙开机启动

  • 用windows建立×××连接并调整以下设置:

个人LINUX学习笔记_第7张图片