30选5玩法|福彩30选5开奖结果321|
 

标签:linux

linux删除用户密码

 

 

passwd –d 用户

 

 

sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting
sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting
passwd: password expiry information changed.

 

云上的服务器容易出这个问题,无法使用空密码。删除不生效。

linux删除用户密码

 

 

passwd –d 用户

 

 

sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting
sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting
passwd: password expiry information changed.

CentOS7利用systemctl添加自定义系统服务

No Comments Linux

 

——————————–
CentOS7自定义系统服务

CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下.
CentOS7的每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]

[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别

[Service]部分是服务的关键,是服务的一些具体运行?#38382;?#30340;设置.
Type=forking是后台运行的?#38382;劍?
User=users是设置服务运行的用户,
Group=users是设置服务运行的用户组,
PIDFile为存放PID的文件路径,
ExecStart为服务的具体运行命令,
ExecReload为重启命令,
ExecStop为停止命令,
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]部分的启动、重启、停止命令全部要求使用绝?#26376;?#24452;,使用相?#26376;肪对?#20250;报错!

[Install]部分是服务安装的相关设置,可设置为多用户的
首先,使用systemctl start  [ 服务名(也是文件名) ] 可测试服务是否可以成功运行,如果不能运行则可以使用systemctl status [ 服务名(也是文件名) ]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。

接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。

 

——————————————–

实例:服务用于开机运行tomcat项目:

#vim /usr/lib/systemd/system/tomcat.service
 
[Unit]
Description=java tomcat project
After=tomcat.service
 
[Service]
Type=forking
User=users
Group=users
PIDFile=/usr/local/tomcat/tomcat.pid
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
添加可执行权限:

1
chmod 754 /usr/lib/systemd/system/tomcat.service
设置为开机?#20113;?#21160;:

1
#systemctl enable tomcat.service
常用指令(以tomcat服务为例):

启动某服务
 
systemctl start   tomcat.service
 
停止某服务
 
systemctl stop   tomcat.service
 
重启某服务
 
service tomcat   restart
 
systemctl restart   tomcat.service
 
使某服务自动启动(如tomcat服务)
 
systemctl enable   tomcat.service
 
使某服务不自动启动
 
systemctl disable   tomcat.service
 
检查服务状态
 
systemctl   status tomcat.service (服务详细信息)
 
systemctl   is-active tomcat.service(仅显示是否Active)
 
显示所有已启动的服务
 
systemctl   list-units –type=service

Nginx详解-服务器集群

No Comments Linux

Nginx是什么

代理服务器:一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。应用比如:GoAgent,FQ神器.

 

一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定?#35797;礎?Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的?#24039;TTP的代理服务器即是Web服务器又是Web客户端。

代理服务器是介于客户端和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

正向代理 :是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理服务器:在服务器端接受客户?#35828;那?#27714;,然后把请求分发给具体的服务器进行处理,然后再将服务器的响应结果反馈给客户端。Nginx就是其中的一种反向代理服务器软件。

Nginx:Nginx ("engine x") ,Nginx (“engine x”) 是俄罗斯人Igor Sysoev(塞索耶夫)编写的一款高性能的 HTTP 和反向代理服务器。也是一个IMAP/POP3/SMTP代理服务器;也就是说,Nginx本身就可以托管网站,进行HTTP服务处理,?#37096;?#20197;作为反向代理服务器使用。

说明:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

 

用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始?#35797;?#26381;务器B中取得用户A的需求?#35797;矗?#28982;后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始?#35797;?#26381;务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始?#35797;?#26381;务器B,但用户A并不知情。

Nginx的应用现状

    Nginx 已经在俄罗斯最大的门户网站── Rambler Media(www.rambler.ru)上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。在国内,已经有 淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅?#33258;?#32447; 等多家网站使用 Nginx 作为Web服务器或反向代理服务器。

Nginx的特点

  • 跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
  • 配置异常简单:非常容易上手。配置风格跟程序开发一样,神一般的配置
  • 非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶?#38382;?#38750;阻塞的。官方测试能够支撑5万并发连接,在实际生产环境?#20449;?#21040;2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)
  • 事件驱动?#21644;?#20449;机制采用epoll模?#20572;?#25903;?#25351;?#22823;的并发连接。

Nginx的事件处理机制

对于一个基本的web服务器来说,事件通常有三种类?#20572;?#32593;络事件、信号、定时器。

首先看一个请求的基本过程:建立连接—接收数据—发送数据 。

再次看系统底层的操作 :上述过程(建立连接—接收数据—发送数据)在系统底层就是读写事件。

1)如果采用阻塞调用的方式,当读写事件没有准备好时,必然不能够进行读写事件,那么久只好等待,等事件准备好了,才能进行读写事件。那么请求就会被耽搁 。阻塞调用会进入内?#35828;?#24453;,cpu就会让出去给别人用了,对单线程的worker来说,显然不合适,当网络事件越多时,大家都在等待呢,cpu?#38556;?#19979;来没人用,cpu利用率自然上不去了,更别谈高并发了 。

2)既然没有准备好阻塞调用不行,那么采用非阻塞方式。非阻塞就是,事件,马上返回EAGAIN,告诉你,事件还没准备好呢,你慌什么,过会再来吧。好吧,你过一会,再来检查一下事件,直到事件准备好了为止,在这期间,你就可以先去做其它事情,然后再来看看事件好了没。虽然不阻塞了,但你得不时地过来检查一下事件的状态,你可以做更多的事情了,但带来的开销也是不小的

小结:非阻塞通过不断检查事件的状态来判断是否进行读写操作,这样带来的开销很大。

3)因此才有了异步非阻塞的事件处理机制。具体到系统调用就是像select/poll/epoll/kqueue这样的系统调用。他们提供了一种机制,让你可以同时监控多个事件,调用他们是阻塞的,但可以设置超时时间,在超时时间之内,如果有事件准备好了,就返回。这种机制解决了我?#24039;?#38754;两个问题。

以epoll为例:当事件没有准备好时,就放入epoll(队列)里面。如果有事件准备好了,那么就去处理;如果事件返回的是EAGAIN,那么继续将其放入epoll里面。从而,只要有事件准备好了,我们就去处理她,只有当所有时间都没有准备好时,才在epoll里面等着。这样,我们就可以并发处理大量的并发了,当然,这里的并发请求,是指?#21019;?#29702;完?#37027;?#27714;,线程只有一个,所以同时能处理?#37027;?#27714;当然只有一个了,只是在请求间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的。这里?#37027;?#25442;是没有任何代价,你可以理解为循?#21453;?#29702;多个准备好的事件,事实上就是这样的。

4)与多线程的比较:

与多线程相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下?#37027;?#25442;,事件处理非常?#37027;?#37327;级。并发数再多也不会导致无谓的?#35797;?#28010;费(上下?#37027;?#25442;)。

小结:通过异步非阻塞的事件处理机制,Nginx实现由进程循?#21453;?#29702;多个准备好的事件,从而实现高并发和轻量级。

master/worker结构:一个master进程,生成一个或多个worker进程

内存消耗小:处理大并发?#37027;?#27714;内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M) 成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等?#24067;?#36127;载均衡交换机则需要十多万至几十万人民币

内置的健康检查功能:如果 Nginx Proxy 后端的?#31243;?Web 服务器宕机了,不会影响前端访问。

节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。

稳定性高:用于反向代理,宕机的概率微乎其微

Nginx的不为人知的特点

1、nginx代理和后端web服务器间无需长连接;

2、接收用户请求是异步的,即先将用户请求全部接?#38556;?#26469;,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力

3、发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的

4、网络?#35272;?#22411;低。NGINX对网络的?#35272;?#31243;度非常?#20572;?#29702;论上讲,只要能够ping通就可以实施负载均衡,而且可以有效区分内网和外网流量

5、支持服务器检测。NGINX能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误?#37027;?#27714;重新提交到其它节点上

Nginx的内部(进程)模型

nginx是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式?#25925;?#22810;进程的方式,也是nginx的默认方式。nginx采用多进程的方式有诸多?#20040;?.

(1) nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控 worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。而基本的网络事件,则是放在worker进程中?#21019;?#29702;了 。多个worker进程之间是对等的,他们同等竞争来自客户?#35828;那?#27714;,各进程互相之间是独立的 。一个请求,只可能在一个worker进程?#20889;?#29702;,一个worker进程,不可能处理其它进程?#37027;?#27714;。 worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的 。

(2)Master接收到信号以后怎样进行处理(./nginx -s reload )?首先master进程在接到信号后,会先重新加载配置文件,然后再启动新的进程,并向所有老的进程发送信号,告诉他们可以光荣退休了。新的进程在启动后,就开始接收新?#37027;?#27714;,而老的进程在收到来自master的信号后,就不再接收新?#37027;?#27714;,并且在当前进程中的所有?#21019;?#29702;完?#37027;?#27714;处理完成后,再退出 .

(3) worker进程又是如何处理请求的呢?我们前面有提到,worker进程之间是平等的,每个进程,处理请求的机会也是一样的。当我们提供80端口的http服务时,一个连接请求过来,每个进程?#21152;?#21487;能处理这个连接,怎么做到的呢?首先,每个worker进程都是从master进程fork过来,在master进程里面,先建立好需要listen的socket之后,然后再fork出多个worker进程,这样每个worker进程都可以去accept这个socket(当然不是同一个socket,只是每个进程的这个socket会监控在同一个ip地址与端口,这个在网络协议里面是允许的)。一般来说,当一个连接进来后,所有在accept在这个socket上面的进程,都会收到通知,而只有一个进程可以accept这个连接,其它的则accept失败,这是所谓的惊群现象。当然,nginx也不会视而不见,所以nginx提供了一个accept_mutex这个东西,?#29992;?#23383;上,我们可以看这是一个加在accept上的一把共享锁。有了这把锁之后,同一时刻,就只会有一个进程在accpet连接,这样就不会有惊群问题了。accept_mutex是一个可控选项,我们可以显示地关掉,默认是打开的。当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完整?#37027;?#27714;就是这样的了。我们可以看到,一个请求,完全由worker进程?#21019;?#29702;,而且只在一个worker进程?#20889;?#29702;。

(4):,nginx采用这种进程模型有什么?#20040;?#21602;?采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快重新启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以?#26723;?#20102;风险。当然,?#20040;?#36824;有很多,大家可?#26376;?#24930;体会。

(5).有人可能要问了,nginx采用多worker的方式?#21019;?#29702;请求,每个worker里面只有一个主线程,那能够处理的并发数很有限啊,多少个worker就能处理多少个并发,何来高并发呢?非也,这就是nginx的高明之处,nginx采用了异步非阻塞的方式?#21019;?#29702;请求,也就是说,nginx是可以同时处理成千上万个请求的 .对于IIS服务器每个请求会独占一个工作线程,当并发数上到几千时,就同时有几千的线程在处理请求了。这对操作系统来说,是个不小的挑战,线程带来的内存占用非常大,线程的上下?#37027;?#25442;带来的cpu开销很大,自然性能就上不去了,而这些开销完全是没有意义的。我们之前说过,推荐设置worker的个数为cpu的核数,在这里就很容易理解了,更多的worker数,只会导致进程来竞争cpu?#35797;?#20102;,从而带来不必要的上下?#37027;?#25442;。而且,nginx为了更好的利用多核特性,提供了cpu?#33258;?#24615;的绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程?#37027;?#25442;带来cache的失效

Nginx是如何处理一个请求

首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面,先初始化好这个监控的socket(创建socket,设置addrreuse等选项,绑定到指定的ip地址端口,再listen),然后再fork(一个现有进程可以调用fork函数创建一个?#38470;?#31243;。由fork创建的?#38470;?#31243;被称为子进程 )出多个子进程出来,然后子进程会竞争accept新的连接。此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后,此时,某一个子进程会accept成功,得到这个建立好的连接的socket,然后创建nginx对连接的封装,即ngx_connection_t结构体。接着,设置读写事件处理函数并添加读写事件来与客户端进行数据的交换。最后,nginx或客户端来主动关掉连接,到此,一个连接就寿终正寝了。

当然,nginx也是可以作为客户端来请求其它server的数据的(如upstream模块),此时,与其它server创建的连接,也封装在ngx_connection_t?#23567;?#20316;为客户端,nginx先获取一个ngx_connection_t结构体,然后创建socket,并设置socket的属性( 比如非阻塞)。然后再通过添加读写事件,调用connect/read/write来调用连接,最后关掉连接,并释放ngx_connection_t。

说明:nginx在实现时,是通过一个连接池来管理的,每个worker进程?#21152;?#19968;个独立的连接池,连接池的大小是worker_connections。这里的连接池里面保存的其实不是真?#26723;?#36830;接,它只是一个worker_connections大小的一个ngx_connection_t结构的数组。并且,nginx会通过一个链表free_connections来保存所有的?#38556;衝gx_connection_t,每次获取一个连接时,就从?#38556;?#36830;接链表中获取一个,用完后,再放回?#38556;?#36830;接链表里面。

在这里,很多人会误解worker_connections这个?#38382;?#30340;意思,认为这个值就是nginx所能建立连接的最大值。其实不然,这个值是表示每个worker进程所能建立连接的最大值,所以,一个nginx能建立的最大连接数,应该是worker_connections * worker_processes。当然,这里?#26723;?#26159;最大连接数,对于HTTP请求本地?#35797;?#26469;说,能够支持的最大并发数量是worker_connections * worker_processes,而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connections * worker_processes/2。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。

Nginx典型的应用场景

负载均衡技术在现有网络结构之上提供了一?#33267;?#20215;、有效、透明的方法,来扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。它有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高

Nginx的应用

1、到官网下载Windows版本,下载地址:Nginx常见配置说明

worker_processes 8;

#nginx进程数,建议设置为等于CPU总核心数

worker_connections 65535;

#单个进程最大连接数(最大连接数=连接数*进程数)

client_header_buffer_size 32k; #上传文件大小限制

large_client_header_buffers 4 64k; #设定请求缓

client_max_body_size 8m; #设定请求缓

autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。

tcp_nopush on; #防止网络阻塞

tcp_nodelay on; #防止网络阻塞

keepalive_timeout 120; #长连接超时时间,单位是秒

gzip on; #开启gzip压缩输出

gzip_min_length 1k; #最小压缩文件大小

gzip_buffers 4 16k; #压缩缓冲区

gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)

gzip_comp_level 2; #压缩等级

upstream blog.ha97.com {

#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth?#38382;?#34920;示权值,权值越高被分配到的几?#35797;?#22823;。

server 192.168.80.121:80 weight=3;

server 192.168.80.122:80 weight=2;

server 192.168.80.123:80 weight=3;

}

#虚拟主机的配置

server

{

#监听端口

listen 80;

#域名可以有多个,用空格隔开

server_name www.ha97.com ha97.com;

index index.html index.htm index.php;

root /data/www/ha97;

location ~ .*.(php|php5)?$

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

模块?#38382;?/h5>
    #定义Nginx运行的用户和用户组        
    user www www;              
    #nginx进程数,建议设置为等于CPU总核心数。        
    worker_processes 8;        
      
    #全局错误日志定义类?#20572;琜 debug | info | notice | warn | error | crit ]  
      
    error_log ar/loginx/error.log info;  
             
    #进程文件  
      
    pid ar/runinx.pid;        
       
    #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,  
    所以建议与ulimit -n的?#24403;?#25345;一致。  
      
    worker_rlimit_nofile 65535;               
      
    #工作模式与连接数上限        
    events        
    {        
    #参考事件模?#20572;瑄se [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模?#20572;? 
    如果跑在FreeBSD上面,就用kqueue模型。  
      
    use epoll;        
    #单个进程最大连接数(最大连接数=连接数*进程数)       
    worker_connections 65535;        
    }  
             
    #设定http服务器        
    http        
    {        
    include mime.types; #文件扩展名与文件类型?#25104;?#34920;       
    default_type application/octet-stream; #默认文件类型        
    #charset utf-8; #默认编码        
    server_names_hash_bucket_size 128; #服务器名字的hash表大小        
    client_header_buffer_size 32k; #上传文件大小限制        
    large_client_header_buffers 4 64k; #设定请求缓       
    client_max_body_size 8m; #设定请求缓        
    sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,  
    可设置为off,?#20113;?#34913;磁盘与网络I/O处理速度,?#26723;?#31995;统的负载。注意:如果图片显示不正常把这个改成off。        
    autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。        
    tcp_nopush on; #防止网络阻塞        
    tcp_nodelay on; #防止网络阻塞        
    keepalive_timeout 120; #长连接超时时间,单位是秒       
            
    #FastCGI相关?#38382;?#26159;为了改善网站的性能:减少?#35797;?#21344;用,提高访问速?#21462;?#19979;面?#38382;?#30475;?#32622;?#24847;思都能理解。        
    fastcgi_connect_timeout 300;        
    fastcgi_send_timeout 300;        
    fastcgi_read_timeout 300;        
    fastcgi_buffer_size 64k;        
    fastcgi_buffers 4 64k;        
    fastcgi_busy_buffers_size 128k;        
    fastcgi_temp_file_write_size 128k;         
      
    #gzip模块设置        
    gzip on; #开启gzip压缩输出        
    gzip_min_length 1k; #最小压缩文件大小        
    gzip_buffers 4 16k; #压缩缓冲区        
    gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)        
    gzip_comp_level 2; #压缩等级        
    gzip_types text/plain application/x-javascript text/css application/xml;  
      
    #压缩类?#20572;?#40664;认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。        
    gzip_vary on;        
    #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用        
       
      
    upstream blog.ha97.com {        
    #upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth?#38382;?#34920;示权值,权值越高被分配到的几?#35797;?#22823;。        
    server 192.168.80.121:80 weight=3;        
    server 192.168.80.122:80 weight=2;        
    server 192.168.80.123:80 weight=3;        
    }               
      
    #虚拟主机的配置        
    server       
    {        
    #监听端口        
    listen 80;        
    #域名可以有多个,用空格隔开        
    server_name www.ha97.com ha97.com;       
    index index.html index.htm index.php;        
    root /data/www/ha97;        
    location ~ .*.(php|php5)?$        
    {        
    fastcgi_pass 127.0.0.1:9000;        
    fastcgi_index index.php;        
    include fastcgi.conf;        
    }        
    #图片缓存时间设置        
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$        
    {        
    expires 10d;        
    }        
    #JS和CSS缓存时间设置        
    location ~ .*.(js|css)?$        
    {        
    expires 1h;        
    }        
    #日志格式设定        
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '        
    '$status $body_bytes_sent "$http_referer" '        
    '"$http_user_agent" $http_x_forwarded_for';  
      
    #定义本虚拟主机的访问日志       
    access_log ar/loginx/ha97access.log access;               
      
    #对 "/" 启用反向代理        
    location / {        
    proxy_pass http://127.0.0.1:88;        
    proxy_redirect off;        
    proxy_set_header X-Real-IP $remote_addr;  
      
    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP        
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
      
    #以下是一些反向代理的配置,可选。  
      
    proxy_set_header Host $host;        
    client_max_body_size 10m; #允许客户端请求的最大单文件字节数        
    client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,        
    proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)        
    proxy_send_timeout 90; #后端服务器数据回传时间(代理发?#32479;?#26102;)        
    proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)        
    proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小        
    proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置        
    proxy_busy_buffers_size 64k; #高负?#19978;?#32531;冲大小(proxy_buffers*2)        
    proxy_temp_file_write_size 64k;  
      
    #设定缓存文件?#20889;?#23567;,大于这个值,将从upstream服务器传        
    }  
                 
    #设定查看Nginx状态的地址        
    location /NginxStatus {        
    stub_status on;        
    access_log on;        
    auth_basic "NginxStatus";        
    auth_basic_user_file confpasswd;        
    #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。        
    }  
                   
    #本地动静分离反向代理配置        
    #所有jsp的页面均交由tomcat或resin处理        
    location ~ .(jsp|jspx|do)?$ {        
    proxy_set_header Host $host;        
    proxy_set_header X-Real-IP $remote_addr;        
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        
    proxy_pass http://127.0.0.1:8080;        
    }  
      
    #所有静态文件由nginx直接读取不经过tomcat或resin        
    location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$        
    { expires 15d; }        
    location ~ .*.(js|css)?$        
    { expires 1h; }        
    }        
    }  

更详细的模块?#38382;?#35831;参考:http://wiki.nginx.org/Main

“Too many connections” max_connections | 214 mysql 解决方法.

No Comments Linux

项目中,由于连接数过多,提示“Too many connections?#20445;?#38656;要增加连接数。我在 /etc/my.cnf?#34892;?#25913;了

max_connections = 3000

但是, 一直都是显示的 214

mysql> show variables like "max_connections";
+—————–+——-+
| Variable_name   | Value |
+—————–+——-+
| max_connections | 214   |
+—————–+——-+
1 row in set+

修改 /usr/lib/systemd/system/mariadb.service
LimitNOFILE=65535
LimitNPROC=65535

systemctl status mariadb

Warning: mariadb.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
Hint: Some lines were ellipsized, use -l to show in full.

systemctl daemon-reload
systemctl restart mariadb

show variables like ‘%max_connections%’;

extra_max_connections    1
max_connections    3000    —?#25351;?#21644;配置一样

http://www.oschina.net/question/853151_241231

linux 测试命令合集及举例

No Comments Linux

1 .uptime  查系统负载

[[email protected] ~]# uptime
13:13:38 up 18:15,  1 user,  load average: 0.00, 0.02, 0.05
                                              1     5    15 平均负载
                                             
                                              单CPU负载为1 时为满负载 为1倍数时为超负载
                                              X个CPU负载为X 时为满负载
                                             
2  top  -b 批处理
        -n 输出时刷新的?#38382;?/p>

[[email protected] ~]# top -b -n 1
top – 13:20:22 up 18:22,  1 user,  load average: 0.01, 0.02, 0.05
Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
%Cpu(s): 
5.3 us,   用户时间
10.5 sy,  系统时间
0.0 ni,   NICE时间
78.9 id,  空闭时间
0.0 wa,   I/O等待
0.0 hi,   处理?#24067;?#20013;断占的时间百分比
5.3 si,   处理软件中断占的时间百分比
0.0 st    流逝的时间   如果有虚拟机,就表示VM中执行其他任务所占的CPU时间比
KiB Mem :   999696 total,   592712 free,   139164 used,   267820 buff/cache

可利用的mem为 free+buff/cache才对
可以按M 进行MEM 排序

KiB Swap:  2097148 total,  2097148 free,        0 used.   678356 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1 root      20   0  128164   6828   4060 S  0.0  0.7   0:02.72 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.99 ksoftirqd/0
    
    
在top命令下 按K 输入PID 直接终止进程

3.iostat  I/O状态查看命令

[[email protected] ~]# yum install -y sysstat  —先安装

[[email protected] ~]# iostat
Linux 3.10.0-693.2.2.el7.x86_64 (centos64)     10/11/2017     _x86_64_    (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.37    0.00    0.30    0.08    0.00   99.24

Device:      tps每秒传输量    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.14         3.46         0.51     238914      35255
dm-0              0.14         3.31         0.48     228567      33187
dm-1              0.00         0.03         0.00       2228          0

4. iotop  混合查看命令

[[email protected] ~]# iotop |tee /tmp/1.log

Total DISK READ :       0.00 B/s | Total DISK WRITE :       2.36 M/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:      18.86 M/s
Total DISK READ :       0.00 B/s | Total DISK WRITE :       2.36 M/s                                                            
18.86 Mual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                             
11118 be/4 root        0.00 B/s    2.36 M/s  0.00 %  0.00 % sftp-server

5. 链接检测  yum install -y ethtool

[[email protected] ~]# ethtool ens33
Settings for ens33:
    Supported ports: [ TP ]
    Speed: 1000Mb/s——-
    Duplex: Full——-
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes————
   
6. nslookup

[[email protected] ~]# yum provides */nslookup   ———-查看哪个包包含nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
32:bind-utils-9.9.4-50.el7.x86_64 : Utilities for querying DNS name servers——-安装包
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup

[[email protected] ~]# yum install -y bind-utils——–安装
Installed:
  bind-utils.x86_64 32:9.9.4-51.el7                                                                                                 

Dependency Installed:
  bind-libs.x86_64 32:9.9.4-51.el7                                                                                                  

Complete!
   
 
7.  nmap 查接口状态 ,能查正常关闭?#25925;?#38450;火墙挡掉

[[email protected] ~]# yum install -y nmap

[[email protected] ~]# nmap -p 80 www.rygqfb.tw

Starting Nmap 6.40 ( http://nmap.org ) at 2017-10-11 15:05 HKT
Stats: 0:00:17 elapsed; 0 hosts completed (0 up), 1 undergoing Ping Scan
Ping Scan Timing: About 100.00% done; ETC: 15:05 (0:00:00 remaining)
Nmap scan report for www.rygqfb.tw (118.123.7.68)
Host is up (0.0061s latency).
PORT   STATE SERVICE
80/tcp open  http   ———状态

Nmap done: 1 IP address (1 host up) scanned in 17.49 seconds
[[email protected] ~]# nmap -p 443 www.rygqfb.tw

Starting Nmap 6.40 ( http://nmap.org ) at 2017-10-11 15:05 HKT
Nmap scan report for www.rygqfb.tw (118.123.7.68)
Host is up (0.00092s latency).
PORT    STATE    SERVICE
443/tcp filtered https    ———-防火墙过滤

Nmap done: 1 IP address (1 host up) scanned in 0.61 seconds
[[email protected] ~]#

8.  iftop 查接口流量

[[email protected] ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm   —加源

[[email protected] ~]# yum install -y iftop   ———-安装

[[email protected] ~]# yum provides */iftop
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
perl-SNMP_Session-1.13-5.el7.noarch : SNMP support for Perl 5
Repo        : base
Matched from:
Filename    : /usr/share/doc/perl-SNMP_Session-1.13/test/iftop

9.  tcpdump 抓包

tcpdump -i ens33 -nn tcp     -i接口 -nn 协议

[[email protected] ~]# tcpdump  -n host 192.168.142.129 -i ens33    -n 不解析 host  -i 接口
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
15:46:58.638357 ARP, Request who-has 192.168.142.1 tell 192.168.142.129, length 46
15:46:58.638920 ARP, Reply 192.168.142.1 is-at 00:50:56:c0:00:08, length 46
^C
2 packets captured

10.   dig &nslookup    dig – DNS lookup utility

[[email protected] ~]# dig www.rygqfb.tw

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7 <<>> www.rygqfb.tw
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38229
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.rygqfb.tw.            IN    A

;; ANSWER SECTION:
www.rygqfb.tw.        899    IN    A    118.123.7.68

;; Query time: 2162 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Oct 11 16:00:20 HKT 2017
;; MSG SIZE  rcvd: 59

nagios 3.X 简单部署及应用

No Comments Linux ,

################################
# ?#38431;?#19982;我交流                 #
# 作者:守住每一天             #
# BLOG: liuyu.blog.51cto.com   #
################################
本文主要参考官方文档。
1、准备工作
所需要的软件包:
gcc
gd
glibc
httpd
yum install cc
yum install glibc glibc-common
yum install gd gd-devel
httpd 可以参照其它文档
设置 nagios用户  用户组
/usr/sbin/useradd nagios
为了安全性设置为nologin
/usr/sbin/usermod -s /sbin/nologin nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd apache
2、下载软件:
wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.2.tar.gz
wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz
3、tar xzf nagios-3.0.2.tar.gz
cd nagios-3.0.2
./configure –with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf  ---可以自动配置httpd.conf
4、vi /usr/local/nagios/etc/objects/contacts.cfg
改变E-MAIL 地址
5、APACHE 设置:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
service httpd restart
就可以看到nagios界面了。
6、安?#23433;?#20214;:
tar xzf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure –with-nagios-user=nagios –with-nagios-group=nagios
make
make install
7、设置nagios启动
chkconfig –add nagios
chkconfig nagios on
检查配置文件是否正确 :/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios start
注意:如果你开启了selinux 需要配置如下二步:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
8、3.X与2.X的配置文件区别
安装方法没有太多不同的地方。主要是配置文件的变化,3.X部署比较方便,特别是多服务器时。
配置文件默认都在/usr/local/nagios/etc/objects/
主控制配置文件在/usr/local/nagios/etc/
这次不需要手动创建那么多的文件。
也没有hosts groups 等配置文件。
这些内容直?#26377;?#22312;被监控机的配置文件里面。写这多也不好理解。直接看例子吧。
9、监控其它机子
添加被监控机A(linux)
在/usr/local/nagios/etc/objects/ 目录下新建文件:a.cfg
官方说明:在Nagios里每个要监控的服务都必须给出一个绑定在刚才定义出的主机上的一个服务对象。可以把服务对象放在任?#25105;?#20010;由
cfg_file域指向的对象配置文件里或是放在cfg_dir域所指向的目录下。
也就是说只需要在nagios.cfg 的配置文件里指定cfg_dir 就可以实现监控机器的目的。
把A.cfg添加到nagios主机:
echo "cfg_file=/usr/local/nagios/etc/objects/A.cfg" >> /usr/local/nagios/etc/nagios.cfg
如果要再添加B机器方法炮制就可以了
修改文件:
########################################################################
#
# 2008.05.05 add by 守住每一天
# blog: liuyu.blog.51cto.com
# NRPE COMMAND
#
################################################################
define host{
use                   generic-server                                                               
        host_name             A
        alias                 A
        address               A 的IP
        }
define service{
use   generic-service  
host_name  A
service_description HTTP
check_command  check_http
}
?#26469;?#28155;加其它服务。
方法是不是比2.X 要简单多了?
直?#26377;?#22909;一个,再COPY HOHO 很舒服的。
10、监控linux主机信息
这里需要nrpe 插件的支持。
与2.X一样。
tar -zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure
make all
make install-daemon
make install-daemon-config
10.1 修改配置文件,设置允许连接的IP
vi /usr/local/nagios/etc/nrpe.conf
allowed_hosts=127.0.0.1,A的IP(最好使用内网IP)
10.2 测试NAGIOS主机与被监控机的连接
/usr/local/nagios/libexec/check_nrpe -H A的IP
10.3 启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
查看相应的端口:netstat -net |grep 5666
防火墙开启5666 允许局域网IP或固定IP连接
10.4 commands.cfg 添加nrpe的定义
########################################################################
#
# 2008.05.05 add by 守住每一天
# blog: liuyu.blog.51cto.com
# NRPE COMMAND
#
########################################################################
# ‘check_nrpe ‘ command definition
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
10.5 监控方法
########################################################################
#
# 2008.05.05 add by 守住每一天
# blog: liuyu.blog.51cto.com
# NRPE COMMAND
#
################################################################
define service{
use   generic-service  
host_name  A
service_description load
check_command  check_nrpe!check_load
}
就是多加一个check_nrpe
11、监控WIN
安装 NSClient++
http://sourceforge.net/projects/nscplus
双击安装再启动。
allowed_hosts允许连接的IP
防火墙开端口12489,你?#37096;?#20197;换成别的
监控:在nagios.cfg里cfg_dir去掉windods.cfg的注释。
更改IP 就可以进行监控了。
里面的内容跟其它的差不多,可以自行添加。
总结:nagios 总体安装比较简单。特别是3.X 更加人性化。部署起来也没有2.X麻?#24120;?#21482;要安装过2.X的再安装3.X更加速度~
默认的邮箱也是自带的,不需要再配置sendmail。
PNP的安装还没有完成呢。等完成了我再写。
大伙可能会遇到一个很麻烦的问题。错误如下:
CHECK_NRPE: Error – Could not complete SSL handshake
看官网FAQ 就知?#39304;?#26377;如下一段:
Title: Debugging "CHECK_NRPE: Error – Could not complete SSL handshake" errors
FAQ ID: F0191
Submitted By: Greg Haygood, Ethan Galstad and Others
Last Updated: 11/03/2004
Description: When attempting to use the check_nrpe plugin, the following error message is printed:
CHECK_NRPE: Error – Could not complete SSL handshake
Solution: This error message could be due to several problems:
    * Different versions. Make sure you are using the same version of the check_nrpe plugin and the NRPE daemon. Newer
versions of NRPE are usually not backward compatible with older versions.
    * SSL is disabled. Make sure both the NRPE daemon and the check_nrpe plugin were compiled with SSL support and that
neither are being run without SSL support (using command line switches).
    * Incorrect file permissions. Make sure the NRPE config file (nrpe.cfg) is readable by the user (i.e. nagios) that
executes the NRPE binary from inetd/xinetd.
    * Pseudo-random device files are not readable. Greg Haygood noted the following… "After wringing my hair out and
digging around with truss, I figured out the problem on my Solaris 8 boxen. The files /devices/pseudo/random* (linked through
/dev/*random, and provided by Sun patch 112438) were not readable by the nagios user I use to launch NRPE. Making the
character devices world-readable solved it."
    * Unallowed address. If you’re running the NRPE daemon under xinetd, make sure that you have a line in the xinetd config
file that say "only_from = xxx.xxx.xxx.xxx", where xxx.xxx.xxx.xxx is the IP address that you’re connected to the NRPE daemon
from.
Dave van Nierop added that "Fortunately, for HPUX 11.i (11.11) and later Nagios users, HP now supports /dev/random and
/dev/urandom via a kernel loadable module. Prior to running the NRPE 2.0 configure script, you will need to download this
program from http://www.software.hp.com/cgi-bin/swdepot_parser.cgi/cgi/displayProductInfo.pl?productNumber=KRNG11I.
Installation does require a server reboot. For detailed information, consult
也就是有5点需要注意的。
石?#21453;?#21733;(http://www.itnms.net/discuz/)的翻译如下:
简单说一下,大概的内容,不是?#32454;?#32763;译。
     1.  确认check_nrpe 和 nrpe daemon的版本一定要一致。
     2.  确认 check_nrpe和nrpe deamon?#36865;?#26102;启用或者禁用ssl支持。
     3.  确认nrep.cfg可以被nrpe(或者nagios,反正是执行nrep或者xinetd/inetd程序的)用户正常读取。
     4.  有关伪随机设备的问题。这个只会在solaris 8上出现,需要一个补丁Sun patch 112438。
     5.  确定nagios主机在xinetd的 only_from中,如果没有使用xinetd,则要确认nrpe.cfg中的配置。
另外,赠送l两个,
1. 检查一下你的Windows或者Linux自带的防火墙,是否把端口给filter掉了。
2. 把nrpe的的log打开,可以发现更多有用的信息。
nagios 3.X的中文文档:

用Linux的日志服务来记录Cisco路由器的日志log

No Comments 网络技术 ,

路由器的配置:
interface Ethernet0/0
ip address 192.168.1.2 255.255.255.0
!
logging 192.168.1.1
logging facility local0           //配置日志存储的facility ,默认是local7,可以修改为其他,但推荐保存为local开头的facility里
logging trap debugging      //配置要发送到日志服务器的日志优先级,默认发送到日志服务器的优先级为Info
Linux服务器配置:
1、在/var/log目录下新建Cisco.log文件
2、在/etc/syslog.conf
增加:
# Cisco syslog messages
local0.* /var/log/Cisco.log                   //配置local0优先?#37117;?#24405;的位置

3、在/etc/sysconfig/syslog文件
修改:
SYSLOGD_OPTIONS="-r -x -m 0"       //配置服务器接收来自外部的log日志消息

4、重启Syslog服务,使新的配置生效:
[[email protected] /]#service syslog restart
注意:
Ubantu7.1的syslog文件为/etc/default/syslogd
Syslog服务名为sysklogd,重启Syslog服务的命令为:service sysklogd restart
附(转):配置linux syslog日志服务器
目前,linux依旧使用syslogd作为日志监控进程,而在主流的linux发行版中依旧使用sysklog这个比较老的日志服务器套件。
一、配置文件
默认的日志服务器就是sysklogd套件:
主要的配置文件有两个:
/etc/sysconfig/syslog      定义syslog服务启动时可加入的?#38382;?
/etc/syslog.conf              这个是syslog服务的主要配置文件,根据定义的规则导向日志信息。
二、设置主配置文件
/etc/syslog.conf根据如下的格式定义规则:
facility.level action
设备.优先级 动作
facility.level 字?#25105;?#34987;称为seletor(选择条件),选择条件和动作之间用空格或tab分割开。
#号开头的是注?#20572;?#31354;白行会自动跳过。
1、facility
facility定义日志消息的?#27573;В?#20854;可使用的key有:
auth -由 pam_wdb 报告的?#29616;?#27963;动。
authriv -包括特权信息如用户名在内的?#29616;?#27963;动
cron -与 cron 和 at 有关的计划任务信息。
daemon -与 inetd 守护进程有关的后台进程信息。
kern -内核信息,首先通过 klogd 传递。
lr -与打印服务有关的信息。
mail -与电子邮件有关的信息
mark - syslog内部功能用于生成时间戳
news -来自新闻服务器的信息
syslog -由 syslog 生成的信息
user -由用户程序生成的信息
uuc -由 uuc 生成的信息
local0-local7 -与自定义程序使用
* 通配符代表除了 mark 以外的所有功能
除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。
2、level级别
level定义消息的紧急程?#21462;?#25353;?#29616;?#31243;度由高到低顺序排列为:
emerg -该系统不可用,等同anic                                                     (severity=0)
alert -需要立即被修改的条件                                                           (severity=1)
crit -阻止某些工具或子系统功能实现的错误条件                              (severity=2)
err -阻止工具或某些子系统部分功能实现的错误条件,等同error     (severity=3)
warning -预警信息,等同warn                                                         (severity=4)
notice -具有重要性的普通条件                                                         (severity=5)
info -提供信息的消息                                                                       (severity=6)
debug -不包含函数条件或问题的其他信息                                        (severity=7)
none -没有重要级,通常用于排错
* 所有级别,除了none
其中,anic、error、warn均为旧的标识符,不再建议使用。
在定义level级别的时候,需要注意两点:
优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级
低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg?#35748;?#24687;。(除非使用=号定义)
3、selector选择条件
通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。
可以使用分号“;”同时定义多个选择条件。
也支持三个修饰符:
* - 所有日志信息
= - 等于,即仅包含本优先级的日志信息
! - 不等于,本优先级日志信息除外
4、action动作
由前面选择条件定义的日志信息,可执行下面的动作:
file-指定日志文件的绝?#26376;?#24452;
terminal 或 rint -发送到串行或并行设备标志符,例如/dev/ttyS2
@host -远程的日志服务器
username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中
named ie -发送到预先使用 mkfifo 命令?#21019;?#24314;的 FIFO 文件的绝?#26376;?#24452;
注意:
不能通过“|/var/xxx.sh”方式导向日志到其他脚本?#20889;?#29702;
5、举例
*.info;mail.none;news.none;authriv.none;cron.none                        /var/log/messages
#把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件?#23567;?
mail,news.=info                        /var/adm/info
#把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入。
mail.*;mail.!=info                        /var/adm/mail
#把邮件的除通知性消息外都写入mail文件?#23567;?
mail.=info                        /dev/tty12
#仅把邮件的通知性消息发送到tty12终端设备
*.alert                        root,joey
#如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们
*.*                        @finlandia
#把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)
注意:每条消息均会经过所有规则的,并不是唯一匹配的。
也就是说,假设mail.=info信息通过上面?#29420;?#20013;定义的规则,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的?#20040;?#23601;是保证了信息的完整性,可供不同地方进行分析。
6、测试
部分情况下,上述规的实际执行结果和定义的预想结果可能会有出入。这时,可使用logger程序辅助测试:
# logger – user.notice ‘Hello World!’
日志显示:
Nov 12 13:40:04 dc5test root: Hello World!
其表示意思如下:
第一列:日志产生时间
第二列:产生此日志的主机名称
第三列:产生此日志的应用程序或用户名称
第四列:日志信息
7、自定义日志级别
正如前面所?#26723;模?#24212;用程序的日志级别是由应用程序所决定的。部分应用程序可通过配置,定义其日志级别。
例如,/etc/ssh/sshd_config文件中就有:
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO
把sshd的日志定义在authriv.info级别。配合syslog.conf中的:
authriv.* /var/log/secure
则日志文件被写入/var/log/secure文件?#23567;?
◎我们修改为:
SyslogFacility local0
配合在syslog.conf中增加:
local0.* /var/log/sshd.log
保存后,重新启动sshd或syslog服务,则以后sshd服务的所有日?#24452;?#20250;单独的放到sshd.log文件中了。
三、设置服务?#38382;?
默认情况下,syslog进程是不能接受其他日志服务器发过来的消息的。而通过修改其启动?#38382;?#21487;实现日志的大集中功能。
修改/etc/sysconfig/syslog文件:
-r : 打开接受外来日志消息的功能,其监控514 UDP端口;
-x : 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻?#24120;?
-m : 修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分?#26377;?#20837;一次“–MARK–”信息;
-h : 默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去。
通过man syslogd可获得更详细的帮助,而具体到实际配置文件为:
SYSLOGD_OPTIONS="-r-x-m 0"
保存后,重启服务即可:# service syslog restart
此时,客户机只要通过修改syslog.conf,定义动作为@主机或IP,即可发送日志信息到本服务器?#23567;?
(在构建集中的日志服务器时,请务必配合nt时间服务,以保证信息的有效性,避免不必要的麻?#24120;?
另外,/etc/sysconfig/syslog配置文件中,还定义有klogd服务的启动?#38382;?
KLOGD_OPTIONS="-x"
详细帮助,请参考man 8 klogd或man klogd。

从apache迁移到nginx的几个心得

No Comments Linux ,

我们的网站是lvs->apache->tomcat架构的 现在已经全面转换成lvs->nginx->tomcat架构
以下是我在迁移中遇到的几个问题  ?#38431;?#22823;家指正
1. 访问目录不能自动?#30001;?
当我们去访问服务器上的一个目录时候,他不会自动?#30001;?#19968;个/ ,浏览器会给出改页无法打开的错误,这个时候浏览器去取的地址实际上是upstream中所写的地址和端口或如果没有使用upstream时 他就会去访问servername中设置的内容 比如 我设置的是localhost  浏览器会去访问http://127.0.0.1/dir
解决办法
在每个虚拟主机的server定义中?#30001;?
if (-d $request_filename) {
      rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  }
注意 root字段的定义也一定要出现在server中 如果server中没有定义root 错误还将存在
例子:
server {
  listen  800;
  server_name www.d1xn.com;
  root   /opt/index;              //这边定义了 就会在目录访问的时候?#30001;?  如果这边没有定义这个 上面的url重写依然不会生效
  include  vhost/alias.conf;
  include  vhost/proxy.conf;
  if (-d $request_filename) {
      rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  }
  error_page   405 =200 @405;
  location @405 {
  proxy_pass      http://PROXY_STATIC;
  }
  location / {
   root   /opt/index;                       //只在这边定义是没有用的
   rewrite ^/(\d+)\.home$ /ZONE/index.html?userId=$1 last;
   index  index.html index.htm;
  }   
2.URL重写的注意事项:
原有的url支持正则  重写的url不支持正则
rewrite ^/(\d+)\.home$ /ZONE/index.html?userId=$1 last;
这个重写中 ^/(\d+)\.home$ 这部分支持正则
而/ZONE/index.html?userId=$1
不要用正则 也不匹配正则 /ZONE/index.html?*userId=$1 这样他就会去找.html?*userId=$1这个url 然后给你个404 not found
3.post方式去访问静态文件
Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。(但是之前程序在apache上跑 没问题)
如果有这个需求呢 就要做如下配置了
error_page   405 =200 @405;
  location @405 {
  proxy_pass      http://PROXY_STATIC;
# root /usr/local/nginx/html;
  }
把所有405错误重定向成200 然后吧所有405错误?#37027;?#27714;全部交给一个代理去执行
或者写上本地路径,因为我的路径比较多 所以重定向请求到一台web服务器上了
4. 关于防盗链
第一虚拟网的需求是 不是从本地来?#37027;?#27714;给除一个403
因为在虚拟主机里配置毫无作用 可能是我们用的是虚拟目录的缘故
所以我们直接对目录做的防盗链
在alias里
别名配置
  location /res/ {
                alias   /opt/src/;
                valid_referers none blocked server_names *.d1xn.com   *.woniu.com;
                if ($invalid_referer) {
     return 403;
                }
        }
5,关于动态请求转发
location  ~ ^/login/(.*\.do)$ {
                proxy_pass      http://login ;
    proxy_set_header  X-Real-IP  $remote_addr;
}
~ ^/login/(.*\.do)$ 这个表示 凡是匹配/login/ 下 .do的都转发到一个upstream池里处理 这里的$符号并不起多大作用 只要是有.do的他会全部转 并不是以.do结尾的才转
以上就是我遇到的问题及其解决办法

 

by dennis

30选5玩法