监控利器Zabbix之主动模式和被动模式

一:zabbix的主动模式和被动模式

zabbix客户端分数据给服务端分为主被动两种模式,主动模式是zabbix客户端主动向服务端发送数据,被动模式是被动等待客户端来取数据。

主动模式的流程:

客户端每隔一段时间主动向服务端发起连接请求–>服务端收到请求,查询客户端需要取的item信息,发送给客户端–>客户端收集数据发送服务端–>结束。
被动模式的流程:
客户端开一个端口默认10050,等待服务端来取数据,然后客户端收集数据发送到服务端,然后结束。

二:主动模式使用的一个场景

当服务端监控的主机达到一定数量之后,由Server端去收集数据,Zabbix会出现严重的性能问题,主要表现如下:

1、当被监控端到达一个量级的时候,Web操作很卡,容易出现502
2、图层断裂
3、开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题

所以下面主要往两个优化方向考虑:

1、添加Proxy节点或者Node模式做分布式监控
2、调整Agentd为主动模式

由于第一个方案需要增加物理机器,所以首先尝试第二方案。

三:被动模式配置

1、agent配置如下:

[root@zabbix_client ]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=3
Server=10.0.0.64
ServerActive=10.0.0.64
Hostname=zabbix_client
HostMetadataItem=system.uname

重启zabbix:

systemctl restart zabbix-agent

2、zabbix-server端:

因为zabbix监控模板默认使用的就是被动模式,所以zabbix-server端直接添加hosts默认使用的就是被动模式。

未分类

四:主动模式

1、agent配置如下:

[root@zabbix_master zabbix-server-mysql-3.2.7]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
StartAgents=0
ServerActive=10.0.0.64
Hostname=zabbix_master
Include=/etc/zabbix/zabbix_agentd.d/*.conf

重启zabbix:

systemctl restart zabbix-agent

agent的端口已经没有了:

[root@zabbix_master zabbix-server-mysql-3.2.7]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      10215/mysqld        
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1160/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3042/master         
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      10366/zabbix_server 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::80                   :::*                    LISTEN      10357/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1160/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      3042/master         
tcp6       0      0 :::10051                :::*                    LISTEN      10366/zabbix_server 
udp        0      0 0.0.0.0:29925           0.0.0.0:*                           975/dhclient        

2、zabbix-server端:

创建一个主动模式的模板:

克隆一个模板,把所有的类型改为Zabbix agent(Active)主动模式:
克隆模板:Configuration–》Template–》Template OS Linux(选择需要克隆的模板)–》Full clone(最下面)–》Template name:Template OS Linux Active–》Add
把这个模板软连接的模板remove掉,,添加一个新的克隆的类型为主动的。另外,克隆模板成功后,记得修改类型,改为主动模式。

未分类

去掉链接模板

未分类

修改模板的items:

未分类

未分类

把改好的模板连接到主机:

未分类

通过查看出图情况,确定了主动模式成功了。

未分类

centos7.4 搭建zabbix-server 3.4.5

监控对服务器的重要性来说已经不需要我来一一赘述了,在众多的监控工具之中选择使用zabbix的原因是觉得它功能强大,可以引用的模板有很多,而且图形化做的草鸡棒。

废话就不多了,直接吃鸡。

本次搭建全部采用虚拟机实现。具体环境如下:

  • system:centos7.4

  • zabbix version:3.4.5

  • database version:mariadb 5.5.56

  • Apache:2.4.6

=================================================================================================

一:存放数据的数据库,本次使用 yum自带版本mariadb 5.5.56

1、直接yum安装

#yum -y install mariadb mariadb-server

2、启动mariadb服务并设置开机启动。安全初始化数据库的相关信息

#systemctl start mariadb

#mysql_secure_installation

# systemctl enable mariadb

3、进入数据库,创建为zabbix存放数据的数据库zabbix,创建登录该数据库的用户,可以登录该数据库的IP以及给该用户授予对应数据库的权限

#mysql -uroot -p

MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin;

MariaDB [(none)]>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';   (密码可以随意设置)

MariaDB [(none)]>exit

4、尝试用zabbix用户登录是否创建成功

#mysql -uzabbix -pzabbix

二:安装Apache

yum源自带的Apache为2.4.6,足够支持了。所以依然yum安装走起

1、安装

#yum -y install httpd

2、启动Apache,设置开机启动

#systemctl start httpd

#systemctl enable httpd

3、检测Apache是否安装成功

#netstat -antulp |grep :80

#curl http://localhost 或者直接在浏览器输入IP地址

三:zabbix-server搭建

1、官方网站安装对应版本的zabbix的yum源

#rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm

2、利用yum源安装zabbix的服务端和支持zabbix的web界面包

#yum -y install zabbix-server-mysql zabbix-web-mysql

3、进入到开始安装服务端时安装的共享文档目录下,找到用于往zabbix数据库导入数据的sql压缩文件件create.sql.gz.

#cd /usr/share/doc/zabbix-server-mysql-3.4.5/

使用zcat命令,加管道重定向,向开始创建的zabbix数据库导入数据

#zcat create.sql.gz |mysql -uroot -pzabbix zabbix

4、修改zabbix的主配置文件.让zabbix-server启动时能读取到数据库中的数据

#vim /etc/zabbix/zabbix_server.conf

未分类

5、启动zabbix-server服务,并将该服务设置为开机启动

#systemctl start zabbix-server

#systemctl enable zabbix-server

6、修改时区,使前端显示的页面时间正确,为亚洲上海

#vim /etc/httpd/conf.d/zabbix.conf 

未分类

7、查看是否创建zabbix用户和zabbix用户组。

#cat /etc/passwd |grep zabbix

#cat /etc/group |grep zabbix

8、浏览器输入IP地址加上zabbix目录,进入zabbix的安装界面

未分类

未分类

9、注意安装完之后登录的账号默认为Admin 密码默认为zabbix

未分类

10、登录成功之后显示出如下的仪表盘信息,则表示zabbix服务端安装成功

未分类

11、安装成功之后,是全英文显示的,可以通过修改个性化设置,修改语言和主题颜色,如下图即可

未分类

未分类

12、zabbix默认是自带简体中文的,但汉化不完整,默认是没有开放的状态,可以手动释放出来

未分类

未分类

13、修改之后重新启动服务, 查看图形的时候,本该显示中文的地方出现方块乱码。

**解决办法,修改字体配置文件

windows操作系统,Win+r 进入命令界面,输入fonts,弹出字体窗口,找到喜欢的字体(简体常规)复制出来,改名为xxxx.tty 注意后缀名一定要为tty. 然后将该文件上传到安装zabbix的服务器上的/usr/share/zabbix/fonts/目录下

未分类

未分类

未分类

未分类

修改完之后,刷新下界面,发现现实中文成功啦!

未分类

zabbix服务端搭建到此就结束了,是不是挺简单的。

Xtrabackup恢复时报错’Error: datadir must be specified’

通过xtrabackup进行恢复的时候报错

/opt/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex –defaults-file=/data/opt/mysql02/db_bak/bak/2018-01-03_03-00-05/my.conf /data/opt/mysql02/db_bak/bak/2018-01-03_03-00-05/ –copy-back

xtrabackup Error: datadir must be specified

报错原因:

指定的参数文件和备份文件在相同的目录下面

解决方法:

将参数文件存放在备份文件之外的目录下面

/opt/percona-xtrabackup-2.4.4-Linux-x86_64/bin/innobackupex –defaults-file=/etc/my_01.cnf –apply-log /data/opt/mysql02/db_bak/bak/2018-01-03_03-00-05/

Xtrabackup 恢复Mariadb单个表

1、安装 mysql 备份工具 Percona XtraBackup

http://www.cndba.cn/leo1990/article/2488

2、恢复单个表说明

1). 针对InnoDB表恢复

2). 开启了参数innodb_file_per_table 此参数修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间

3、为备份建立一个只有备份权限的用户

MariaDB [(none)]> create user 'dbbackup'@'%' identified by '123456';
MariaDB [(none)]> grant reload,lock tables,replication client,create tablespace,process,super on *.* to dbbackup@'%' ;
MariaDB [(none)]> grant create,insert,select on percona_schema.* to dbbackup@'%' ;
MariaDB [(none)]> flush privileges;

4、创建一个测试,往里面插入数据后进行备份:

MariaDB [cndba]> create table test(id int);
Query OK, 0 rows affected (0.02 sec)

MariaDB [cndba]> insert into test values(10),(20),(30);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

MariaDB [cndba]> select * from tb1;
ERROR 1146 (42S02): Table 'cndba.tb1' doesn't exist
MariaDB [cndba]> select * from test;
+------+
| id   |
+------+
|   10 |
|   20 |
|   30 |
MariaDB [cndba]> show create table test/G
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.03 sec)

如果忘记表结构可以安装工具:mysql-utilities,其中mysqlfrm可以读取表结构。

进行mysql-utilities安装:

yum install mysql-utilities -y

查看表结构

[[email protected] yum.repos.d]# mysqlfrm --diagnostic /backup/2018-01-12_00-10-40/cndba/test.frm

5、xtrabackup备份数据库

[[email protected] yum.repos.d]# innobackupex --host=localhost --user=dbbackup --password=123456 /backup/

6、准备apply-log

[[email protected] backup]# innobackupex --apply-log --export /backup/2018-01-12_00-10-40/

7 、删除表

MariaDB [cndba]> drop table test;
Query OK, 0 rows affected (0.04 sec)

MariaDB [cndba]> show create table test/G
ERROR 1146 (42S02): Table 'cndba.test' doesn't exist

8、创建表

MariaDB [cndba]> CREATE TABLE `test` ( `id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

9、丢弃表空间

MariaDB [cndba]> ALTER TABLE test DISCARD TABLESPACE;

10、拷贝备份目录中的ibd,cfg,exp 到mysql的datadir目录

[[email protected] cndba]# cp /backup/2018-01-12_00-10-40/cndba/test.{ibd,exp,cfg} /data//mysql/cndba/
赋值权限
[[email protected] cndba]# chown -R mysql.mysql /data/mysql/cndba/

11、导入表空间

MariaDB [cndba]> alter table test import tablespace;

12、表被还原

MariaDB [cndba]> select * from test;
+------+
| id   |
+------+
|   10 |
|   20 |
|   30 |
+------+

LNMP下修改 WordPress 上传文件大小限制

摘要

这个设置对于不限流和服务器硬盘够大的网站来说还是很有用处的,特别是对于一些高清视频,放在第三方网站上引用的话经常会被添加”广告”的,通过上述的办法上传到自己服务器上的视频文件就不存在这个问题了,配合 CDN 的话,用户端访问播放也是毫无压力的。

在使用 WordPress 的时候,不知道大家有没有用到上传大容量文件需求,最近明月再给公司的网站上上传一些高清MP4 视频文件的时候就碰到这样的问题了, WordPress 默认限制可上传单个媒体文件的大小为50MB 的,对于MP4 视频文件来说这个50 MB 真的是属于”毛毛雨”的级别了,稍微达到”高清”级的MP4 视频10分钟以内的占用量都在100MB 以上了。

未分类

对于我们个人博客来说基本上是很少有这方面的需求的,但是对于企业公司网站还别说真的不保证啥时候会碰到的这个需求的。于是,只有求助于谷姐和度娘了,结果找到的资料依然是”乱”,基本上很多都是各说各的,并且大部分是针对 Apache 的。总之,很多搜索到的资料照着做的话都没有能成功上传的,最后没有办法只能是拼凑各个资料后来验证了,还好,最终让我给”拼凑”出在LNMP环境下的解决办法了。

这个解决办法其实很简单,就是通过修改LNMP里PHP的php.ini文件里的上传文件限制参数和Nginx里对应站点的配置文件里添加上传文件参数来实现的,也就是说只需要修改两个VPS/云服务器上的文件即可,今天明月就分享给大家,希望可以帮到有此需求的站长们。

修改LNMP环境下PHP的php.ini文件中:

upload_max_filesize= 300M //这个是文件上传大小限制


post_max_size=300M //这个是post请求大小限制

这两个参数,记得这两个参数没有在一起的,所以修改的时候一定要分别找到修改,然后保存退出。

然后再Nginx对应的站点配置文件里(也就是www.mydomain.com.conf这样的文件)里添加如下参数到对应位置,如下图所示:

未分类

其实就是告诉Nginx客户端上传文件的容量限制和超时标准,添加:

client_max_body_size 300m;


client_body_timeout 120;

这两个配置进去即可。

至此,重启一下LNMP生产环境即可生效了,这时候再次进入 WordPress 后台的”媒体”的添加里就可以看到,对应的上传文件大小限制已经成为300MB了,如下图:

未分类

其实,这个设置对于不限流和服务器硬盘够大的网站来说还是很有用处的,特别是对于一些高清视频,放在第三方网站上引用的话经常会被添加”广告”的,通过上述的办法上传到自己服务器上的视频文件就不存在这个问题了,配合 CDN 的话,用户端访问播放也是毫无压力的。

WordPress全站添加SSL免费证书开启HTTPS

大家好,最近把achair教程网全站添加了SSL,网址从http://www.xiaored.net,变成了https://www.xiaored.net 前缀变成了https,并且在谷歌浏览器地址栏前面变成了绿色的“安全”,如图:

未分类

简单的说https是安全的http,是经过加密的,百度,淘宝,京东,苹果这些网站都是https的,特别是在线购物的网站建议使用https。下面说说为什么要安装https?

1. 百度搜索排名:
从相关性的角度,百度搜索引擎认为权值相同的站点,采用https协议的页面更加安全,排名上会优先对待。

2. 谷歌浏览器:
从2017年1月份起,Chrome浏览器将会把采用HTTP协议的网站标记为“不安全”网站。

3. 谷歌搜索排名:
谷歌早已宣布采用HTTPS加密协议的网站将会在搜索结果中优先显示。

4. 等等

下面分享下我的网站是如何操作的,先说下我的网站配置以及使用到的工具:

  1. 阿里云ECS的服务器,Nginx

  2. 七牛云的SSL和CDN

  3. WordPress网站,BeTheme主题,Super Cache缓存

  4. DNSPod域名解析,WinSCP服务器管理工具

具体操作经验分享,请到《WordPress公共课》查看:

https://www.xiaored.net/wordpress-commonality/

使用SMTP插件解决WordPress注册邮件无法发送的问题,解决过程总结分享!

最近在鼓捣一个wordpress博客(美文风网 ),但是遇到一个小问题,那就是wordpress本身不带邮件发送功能,需要使用SMTP插件和第三方邮箱系统实现发送邮件功能!

选择插件和第三方邮件SMTP服务

插件呢,我试用了几款,不是设置复杂,就是好久没更新了,最后终于找到一个设置简单的SMTP插件: https://wordpress.org/plugins/configure-smtp/

中国国内使用QQ邮箱的人很多,所以我也选择了QQ邮箱的SMTP服务低,当然你也可以选择其他的,根据自己情况定。

QQ邮箱的SMTP服务是默认关闭的,需要我们在邮箱的设置中开启,最新的QQ邮箱使用了授权码代替了原有的QQ密码,所以在密码一栏中需要填写SMTP的授权码。

好了,我安装好SMTP插件和开启好QQ邮箱的SMTP服务之后,就对插件Configure SMTP进行设置就行了,按照下面的图片说明进行设置就行!(图片来自大前端博客,在此感谢!)

未分类

当然我们设置好之后记得发送一个测试邮件,看下是否成功。在Configure SMTP插件最下边有test e-mail按钮,根据提示测试就行!

希望对大家有用!

通过Wireshark抓取直连设备的IP地址

1、ARP协议简介

说到网络中的IP地址就不得不说APR协议。何为ARP?全名叫做Address Resolution Protocol(地址解析协议)。网络中的设备发送消息时将包含目标IP地址信息存入本设备APR缓存中并保留一段时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址–>MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。静态项目一直保留在缓存中,直到重新启动计算机为止。(以上出自https://baike.baidu.com/item/ARP/609343?fr=aladdin)

2、抓取直连设备IP

未分类

环境:将被获取的设备服务器B和计算机A相连(可直接用网线直连)
在A设备上将网口的所有IP信息清除(即改为DHCP),此步骤不做也可以,建议不要省略

未分类

网线连接后,打开安装好的wirshark软件,在过滤规则中输入 arp(只显示arp的数据包)

未分类

如果是直连的话,服务器B在关机状态下此界面是没有任何数据包显示的,接下来,只需要打开服务器B设备,就会获取直连网络中的ARP数据包。在数据包中就有服务器B的IP等信息了

未分类

who has XX.XX.XX.XX ? Tell BB.BB.BB.BB

此处BB.BB.BB.BB就是需要获取的地址。也包括此设备的MAC地址。

Linux下Nginx+Tomcat整合与配置

安装JDK

下载的jdk文件为:jdk-6u45-linux-x64.bin,执行如下命令进行安装:

#./jdk-6u12-linux-i586.bin

安装tomcat

#tar zxvf apache-tomcat-6.0.18.tar.gz
#mv apache-tomcat-6.0.29 tomcat

这里我将解压后的apache-tomcat-6.0.29重命名为了tomcat方便操作。

配置环境变量

编辑/etc下的profile文件,加上如下内容:

JAVA_HOME="/opt/app/jdk1.6.0_45"
CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
PATH=".:$PATH:$JAVA_HOME/bin"
CATALINA_HOME="/opt/app/tomcat"
export JAVA_HOME CATALINA_HOME

执行下面命令使变更生效:

# source /etc/profile

启动tomcat并输入http://domain:8080,如果看到猫的页面即tomcat和jdk安装成功

新建文件目录/home/www为网站存放目录,设置server.xml文件,在Host name=”localhost”处将appBase=的指向路径改为/home/www/web

创建index.jsp至/home/www/web/ROOT,内容为:“hello!” 重新启动tomcat,重新访问,如果看到index.jsp文件内容hello!表示设置成功。

安装Nginx

执行如下命令解压nginx:

# tar zxvf nginx-1.4.4.tar.gz
# mv nginx-1.4.4 nginx

同样重命名了一下。

安装nginx:

# ./configure --prefix=/opt/app/nginx

结果出现了错误:error: C compiler cc is not found,按网上所说安装编译源码所需的工具和库:

#yum install gcc gcc-c++ ncurses-devel perl

再次安装,发现还有错误:the HTTP rewrite module requires the PCRE library.

执行

# yum -y install pcre-devel openssl openssl-devel

终于成功,

# ./configure --prefix=/opt/app/nginx
# make
# make install

nginx安装成功后的安装目录为/opt/app/nginx

在conf文件夹中新建proxy.conf,用于配置一些代理参数,内容如下:

#!nginx (-) 
# proxy.conf 
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
#proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

编辑安装目录下conf文件夹中的nginx.conf,输入如下内容

#运行nginx所在的用户名和用户组
#user  www www; 
#启动进程数
worker_processes 8;
#全局错误日志及PID文件
error_log  /opt/app/nginx/logs/nginx_error.log  crit;
pid        /opt/app/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
#工作模式及连接数上限
events
{
  use epoll;
  worker_connections 65535;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http
{
  #设定mime类型
  include       mime.types;
  default_type  application/octet-stream;
  include /opt/app/nginx/conf/proxy.conf;
  #charset  gb2312;
  #设定请求缓冲    
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
#  client_max_body_size 8m;
  sendfile on;
  tcp_nopush     on;
  keepalive_timeout 60;
  tcp_nodelay on;
#  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 on;
#  gzip_min_length  1k;
#  gzip_buffers     4 16k;
#  gzip_http_version 1.0;
#  gzip_comp_level 2;
#  gzip_types       text/plain application/x-javascript text/css application/xml;
#  gzip_vary on;
#limit_zone  crawler  $binary_remote_addr  10m;
###禁止通过ip访问站点
 # server{
#        server_name _;
 #       return 404;
 #       }
  server
  {
    listen       80;
    server_name  localhost;
    index index.html index.jsp;
    root  /opt/www/static;
    #limit_conn   crawler  20;    
    location ~ .*.(jsp|shtml)$ #所有shtml的页面均交由tomcat处理
    {
      index index.jsp;
      proxy_pass http://localhost:8080;#转向tomcat处理
      }
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ #设定访问静态文件直接读取不经过tomcat
    {
      expires      30d;
    }
    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  /opt/app/nginx/logs/localhost.log access;#设定访问日志的存放路径   
}

修改/usr/local/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:

#/opt/app/nginx/sbin/nginx -t

如果出现下面两行,说明正确:

the configuration file /opt/app/nginx/conf/nginx.conf syntax is ok
the configuration file /opt/app/nginx/conf/nginx.conf was tested successfully

如果提示unknown host,则可在服务器上执行:ping www.baidu.com如果也是同样提示unknown host则有两种可能:

a、服务器没有设置DNS服务器地址,查看/etc/resolv.conf下是否设置,若无则加上

b、防火墙拦截

启动nginx的命令

#/opt/app/nginx/sbin/nginx

这时,输入以下命令查看Nginx主进程号:

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

停止nginx的命令

#/opt/app/nginx/sbin/nginx -s stop

在不停止Nginx服务的情况下平滑变更Nginx配置

输入以下命令查看Nginx主进程号:

ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

屏幕显示的即为Nginx主进程号,例如:

6302

这时,执行以下命令即可使修改过的Nginx配置文件生效:

kill -HUP 6302

或者无需这么麻烦,找到Nginx的Pid文件:

kill -HUP `cat /usr/local/nginx/nginx.pid`

tomcat 配置日志切割

tomcat 配置日志切割如下

  • jdk 版本 1.7
  • tomcat8.5
  • centos6.8 mini

Linux 下使用 cronolog工具来切分catalina.out

1、下载安装cronolog。

yum install -y cronolog

2、修改$tomcat/bin/catalina.sh文件。

如下:

446行左右,

#touch “$CATALINA_OUT” //注释掉
if [ “$1” = “-security” ; then
if [ $have_tty -eq 1 ]; then
echo “Using Security Manager”
fi
shift
eval “”$_RUNJAVA”” “”$LOGGING_CONFIG”” $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
-Djava.endorsed.dirs=””$JAVA_ENDORSED_DIRS”” -classpath “”$CLASSPATH”” 
-Djava.security.manager 
-Djava.security.policy==””$CATALINA_BASE/conf/catalina.policy”” 
-Dcatalina.base=””$CATALINA_BASE”” 
-Dcatalina.home=””$CATALINA_HOME”” 
-Djava.io.tmpdir=””$CATALINA_TMPDIR”” 
org.apache.catalina.startup.Bootstrap “$@” start 
>> “$CATALINA_OUT” 2>&1 “&” //删除此行
2>&1 |/usr/sbin/cronolog “$CATALINA_BASE”/logs/catalina-%Y-%m-%d.out & /添加此行

else
eval “”$_RUNJAVA”” “”$LOGGING_CONFIG”” $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
-Djava.endorsed.dirs=””$JAVA_ENDORSED_DIRS”” -classpath “”$CLASSPATH”” 
-Dcatalina.base=””$CATALINA_BASE”” 
-Dcatalina.home=””$CATALINA_HOME”” 
-Djava.io.tmpdir=””$CATALINA_TMPDIR”” 
org.apache.catalina.startup.Bootstrap “$@” start 
>> “$CATALINA_OUT” 2>&1 “&” /删除此行
2>&1 |/usr/sbin/cronolog “$CATALINA_BASE”/logs/catalina-%Y-%m-%d.out & //添加此行

【注意:】tomcat7之前的版本位置一样、但是配置有所不同

touch “$CATALINA_BASE”/logs/catalina.out //注释
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 & //删除
2>&1 |/usr/sbin/cronolog “$CATALINA_BASE/logs/catalina-%Y-%m-%d.out” & //添加

3、保存 catalina.sh 文件,重启Tomcat即可。