LNAMP和LNMP服务器环境中如何关闭日志

使用独立主机或者云主机或者VPS经常遇到的一个问题就是由于硬盘空间占满而导致的各种故障,而导致硬盘占满绝大多数时候是由于日志,本文详细总结了LNMP和LNAMP中所有服务的日志相关的配置。

Apache
错误日志
在httpd.conf添加
ErrorLog off
无此指令默认生成日志。

访问日志
删除或者注释CustomLog指令,无此指令默认不生成日志。

apache用#注释

Nginx
错误日志
http段添加
error_log off
仍会生成error.log,但是空的

访问日志
http段添加
access_log off
之后虚拟主机默认不生成日志,但仍可通过在server段添加access_log指令来启用部分网站的访问日志。

nginx用#注释

MySQL
慢查询日志
注释或者删除my.cnf中的log-slow-queries指令,无此指令默认不生成日志。

二进制bin-log日志
注释或者删除my.cnf中的log-bin指令,无此指令默认不生成日志。

错误日志
log-error=/dev/null,无此指令默认生成日志。
(所有的日志都可以指向到/dev/null来给变相禁止掉,但是这是一种很挫的方式,其他的日志指令都提供了禁止的参数,但是这条配置我找了半天没有找到,很可能是没有)

MySQL用;或#注释配置

php-fpm
如果php-fpm没有配置日志相关的指令,所有的日志默认都不生成。配置文件一般为php-fpm.conf。
慢执行日志
slowlog

访问日志
access.log

错误日志
error_log

php-fpm用;注释配置

日志在有些时候是很有用的,比如访问日志可以用来分析WEBSHELL和黑客入侵和蜘蛛抓取情况,错误日志可以用来分析服务启动失败的原因,慢查询和慢执行日志可以用来优化程序,ETC。
但是有些情况是不得不考虑的,一是受硬盘空间的限制,二是对于很多用户还没有能力来分析日志(开了日志也用不到)。
除非可以确定日志是能用得到的,并且硬盘空间允许,否则建议关闭日志,以避免各种意想不到的突如其来的麻烦。
很多日志都可以在需要查看的时候再开启,比如MySQL启动不了的时候可以把它的error_log打开。

PS,可以利用cron制定自动清除日志,具体形式有很多种,也很复杂,本文不做叙述。

Linux下配置VPN

1、检查服务器是否有必要的支持.如果检查结果没有这些支持的话,是不能安装pptp的,执行指令:
#modprobe ppp-compress-18 && echo ok
这条执行执行后,显示”ok”则表明通过.不过接下来还需要做另一个检查,输入指令:
#cat /dev/net/tun
如果这条指令显示结果为下面的文本,则表明通过:
cat: /dev/net/tun: File descriptor in bad state
上述两条均通过,才能安装pptp.否则就只能考虑openvpn,或者请你的服务商来解决这个问题.
2、安装ppp和iptables(iptables可选).默认情况下,完整的CentOS是带有这两个组件的,但是精简版的系统可能没有.我们输入下面的命令来确认,如果没有则进行安装,有的话系统不会做任何动作:
#yum install -y ppp iptables
3、安装pptp.这个软件在yum源里是没有的,我们需要手动下载,我们先切换到tmp目录:
#cd /tmp
然后执行下面的命令来下载pptp安装包:
#wget http://***********************
#rpm -ivh pptpd************.rpm
4、配置pptp.首先我们要编辑/etc/pptpd.conf文件:
#vim /etc/pptpd.conf
找到”locapip”和”remoteip”这两个配置项,将前面的”;”注释符去掉,更改为你期望的IP段值.localip表示服务器的IP,remoteip表示分配给客户端的IP地址,可以设置为区间.这里我们使用pptp默认的配置:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
注意,这里的IP段设置,将直接影响后面的iptables规则添加命令.请注意匹配的正确性,如果你嫌麻烦,建议就用本文的配置,就可以一直复制命令和文本使用了.
接下来我们再编辑/etc/ppp/options.pptpd文件,为VPN添加Google DNS:
#vim /etc/ppp/options.pptpd
在末尾添加下面两行:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
5、设置pptp VPN账号密码.我们需要编辑/etc/ppp/chap-secrets这个文件:
#vim /etc/ppp/chap-secrets
在这个文件里面,按照”用户名 pptpd 密码 *”的形式编写,一行一个账号和密码.比如添加用户名为test,密码为1234的用户,则编辑如下内容:
test pptpd 1234 *
6、修改内核设置,使其支持转发.编辑/etc/sysctl.conf文件:
#vim /etc/sysctl.conf
将”net.ipv4.ip_forward”改为1,变成下面的形式.
net.ipv4.ip_forward=1
保存退出,并执行下面的命令来生效它:
#sysctl -p
7、添加iptables转发规则.经过前面的6个步骤,我们的VPN已经可以拨号了,但是还不能访问任何网页.最后一步就是添加iptables转发规则了,输入下面的指令:
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

iptables -A FORWARD -p tcp --syn -s 192.168.2.0/24 -j TCPMSS --set-mss 1356   设置mtu,否则有些网站无法打开,例如百度;
需要注意的是,这个指令中的”192.168.0.0/24″是根据之前的配置文件中的”localip”网段来改变的,比如你设置的”10.0.0.1″网段,则应该改为”10.0.0.0/24″.此外还有一点需要注意的是eth0,如果你的外网网卡不是eth0,而是eth1(比如SoftLayer的服务器就是这样的情况),那么请记得将eth0也更改为对应的网卡编号,不然是上不了网的.
然后我们输入下面的指令让iptables保存我们刚才的转发规则,以便重启系统后不需要再次添加:
#/etc/init.d/iptables save
然后我们重启iptables:
#/etc/init.d/iptables restart
8、重启pptp服务.输入下面的指令重启pptp:
#/etc/init.d/pptpd restart
现在你已经可以连接自己的VPN并浏览网页了.不过我们还需要做最后的一步.
9、设置开机自动运行服务.我们最后一步是将pptp和iptables设置为开机自动运行,这样就不需要每次重启服务器后手动启动服务了,当然你不需要自动启动服务的话可以忽略这一步,输入指令:
#chkconfig pptpd on
#chkconfig iptables on
这样就大功告成了,赶快到Windows下建立一个VPN连接,IP填写自己的服务器IP,用户名和密码填写自己设置好的用户名和密码,点击”连接”,成功后就可以使用服务器去浏览网页啦.

Linux下安装mod_bw和mod_limitipconn限制apache并发连接和下载速度

mod_limitipconn,这个是Apache的一个非官方模块,根据同一个来源IP进行并发连接控制,Bw_mod,它可以根据来源IP进行带宽限制,它们都是apache的第三方模块。
1.下载: wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz
2.安装#tar -zxvf mod_limitipconn-0.22.tar.gz
#cd mod_limitipconn-0.22
#vi Makefile
修改:apxs = “/usr/local/apache2/bin/apxs” # 这里是自己apache的apxs路径,加载模块或者#/usr/local/apache2/bin/apxs -i -c -a mod_limitipconn.c 来加载模块
#make
#make install#tar -xvf mod_bw-0.7.tgz
#cd mod_bw
#/usr/local/apache2/bin/apxs -i -c -a /home/kenami/mod_bw/mod_bw.c下面用vi打开apache 的配置文件 httpd.conf发现了以下两行:LoadModule limitipconn_module modules/mod_limitipconn.so

LoadModule bw_module modules/mod_bw.so
3.配置
<IfModule mod_limitipconn.c>
<Location /home/bo@phpddt.com/attachments/month _*> #需要控制的路径
MaxConnPerIP 3 #限制的线程数
NoIPLimit index.htm #对此文件不做限制
</Location>
</IfModule>在虚拟主机配置文件下面加上: BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10000 #限速10K
MinBandwidth all -1
配置参数说明如下:
a. BandWidthModule On|Off//是否开启mod_bw的带宽限制功能。
b. BandWidth [From] [bytes/s] 设置指定客户机最大带宽,0表示不限制 BandWidth u:[User-Agent] [bytes/s]
c. MinBandWidth [From] [bytes/s] 设置指定客户机带宽的最小值,为0表示每个客户端带宽最大为256bytes/s,为-1表示最大为BandWith的值
d. LargeFileLimit [Type] [Minimum Size] [bytes/s] 设置访问超出特定大小的某种文件的最大带宽,文件类型大小单位为kbytes
e. MaxConnection [From] [Max] 设置指定客户机的最大并发连接数
f. ForceBandWidthModule [On|Off] 默认bw模块将应用所有请求,On可设置过滤类型关于From,即客户端来源可分以下几种情况:IP指定单一主机192.168.1.22指定网段192.168.1.0/24或192.168.1.0/255.255.255.0域名单一主机Client1.phpddt.com域名指定范围.phpddt.com所有客户端all以上配置既可以针对所有客户端,也可以对某个虚拟主机进行配置实例一:BandWidthModule OnBandWidth all 307200BandWidth 192.168.1.2 102400BandWidth “u:^Mozilla/5(.*)” 102400BandWidth “u:wget” 204800ForceBandWidthModule OnLargeFileLimit .avi 600 204800MaxConnection all 100MaxConnnection 192.168.1.2 5以上的配置含义:开启mod_bw, 限制所有文件类型也开启了所有客户端最大带宽为300k,最大并发连接为100192.168.1.2的最大带宽为100k,最大并发连接为5使用FireFox的客户端最大带宽为100k使用wget的客户端最大带宽为200k对超过600k的avi格式的文件最大带宽为200kbyte/s实例二:<Virtualhost *> BandwidthModule On ForceBandWidthModule On LargeFileLimit .avi 1 20000 LargeFileLimit .mpg 1 20000 Servername www.phpddt.com</Virtualhost>该实例对虚拟主机进行了限制,指定的文件类型avi和mpg最大带宽为20K,ForceBandWidthModule On必须有。实例三:<Virtualhost *> BandwidthModule On AddOutputFilterByType MOD_BW text/html text/plain Bandwidth all 5000 Servername www.phpddt.com </Virtualhost>

 

ProFTPd服务器中配置虚拟用户

在Windows下FTPD以某一个帐号运行,所有的FTP用户权限管理全部由FTPD来完成与系统帐号无关。但是在xNix下则不同,FTPD只允许那些系统帐号登陆。但是我们往往希望FTPD用户和系统帐号分离方便管理。这样就需要使用ProFTPD的虚拟用户功能。

首先在proftpd.conf中添加:

AuthOrder mod_auth_file.c mod_auth_unix.c

AuthUserFile /usr/local/etc/ftpd.passwd

#AuthGroupFile /usr/local/etc/ftpd.group

然后重启portftpd服务

service proftpd restart

AuthOrder为FTP用户身份验证顺序。mod_auth_file.c是ProFTPD的虚拟用户验证,虚拟用户和组的信息存储在下面的AuthUserFile和AuthGroupFile指定的文件中,不过我想搞简单点所以就不要虚拟组了。mod_auth_unix.c是系统用户身份验证,即/etc/passwd。

然后使用添加如下命令添加一个新的虚拟用户:

ftpasswd --passwd --file=/usr/local/etc/ftpd.passwd --name=test --uid=1002 --home=/usr/local/ftp/test --shell=/usr/sbin/nologin

–passwd指定建立一个新的虚拟用户,–group则建立一个虚拟组;

–file指定存储虚拟用户的文件;

–name指定此虚拟用户的用户名,密码会在命令执行时要求输入;

–uid指定此虚拟用户对应的系统用户UID,此虚拟用户将以此系统UID的身份读写文件;

–home指定此虚拟用户的根目录,就是其登陆FTP后的根目录;

–shell指定此虚拟用户的shell,为了安全当然指定一个不可登陆的shell了。

如果是源码安装的proftpd ,服务项proftpd以及命令ftpasswd分别在如下两个目录

ftpasswd :源码包目录/contrib/ftpasswd

proftpd服务程序:源码包目录/contrib/dist/rpm/proftpd.init.d

加上可执行权限。然后将ftpasswd 拷贝到/usr/local/sbin目录下面

将proftpd.init.d拷贝到/etc/init.d/下面 重命名为proftpd

 

修改密码:ftpasswd --passwd --name=user_dgcn --change-password --file=/EassosData/ftp_user/ftpd.passwd

阿里云 ubuntu 下配置ftp服务器 proftpd

一、安装ProFTPD

$ sudo apt-get install proftpd

二、添加ftp组及用户

$ groupadd ftpgroup

// -d 参数表示默认目录

$ useradd ftpadmin -d /home/ftp_files/ -g ftpgroup

执行完这句的时候,cat /etc/group 发现ftpgroup组下面没有用户 ftpadmin

//最后一句显示:ftpgroup:x:1001:

这时候执行 gpasswd -a ftpadmin ftpgroup // 添加用户ftpadmin到组ftpgroup

给用户ftpadmin设置密码 passwd ftpadmin

//修改完以后在执行 cat /etc/group 最后一句显示:ftpgroup:x:1001: ftpadmin
三、修改用户 chroot

连接成功但并没有限定用户 ftpadmin 的根目录,也就是chroot,用户还可以访问上级目录

// 修改 proftpd配置文件

$ vi /etc/proftpd/proftpd.conf

// 去掉如下行前的注释 #

# DefaultRoot ~

// 重启 proftpd 即可

$ /etc/init.d/proftpd restart

四、禁止用户终端登录

// 编辑 /etc/passwd

$ vi /etc/passwd

ftpu:x:1006:1004::/home/ftp_files/:/bin/sh

修改成

ftpu:x:1006:1004::/home/ftp_files/:/sbin/nologin

重启proftpd后ftp客户端提示无法连接:

-------------------------------

530 Login incorrect.

-------------------------------

经检查发现当前系统的shells列表中没有 /sbin/nologin

// 添加 /sbin/nologin 支持

$ vi /etc/shells

// 在该文档中添加一行

/sbin/nologin

五、重启proftpd,完成.

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

如果ftp客户端上传失败的时候。请注意一下目录的权限