再来解决:
24: Too many open files
Linux系统对一个进程打开的文件句柄数量的限制,默认只有1024,并发高一点就达到这个限制了。
搞定,重启nginx,观察几天看看。
有时出于安全考虑,可以添加一个SSH登录提醒功能,当用户登录SSH后收到提醒。
提醒功能可以通过邮件或其它功能发送,俺使用的是一个iOS使用“推送信使”提供了URL回调接口,设置好参数后用curl请求一下,一条报警信息就推送到手机。
user=$USER
ip=${SSH_CLIENT%% *}
date=$(date "+%Y-%m-%d_%H:%M")
title="用户$user登录了系统"
content="时间:${date}%0dIP地址:$ip"
app="SSH监控"
url="http://whois.pconline.com.cn/ip.jsp?ip=$ip"
pushMessage() {
params="uid=1&secret=6Y2FN7&app=$app&title=$title&content=$content&slient=1&url=$url"
url="http://ipush.me/api-push?$params"
curl --connect-timeout 3 -m 3 -s $url
}
pushMessage
现在大部分VPS都是Unmanaged的,虽然都宣称做了RAID10但在论坛上偶尔还是有看到数据丢失的事情,更多的情况是碰到不符合VPS商的服务条款而被关闭了帐号没及时备份造成的。
正好有一个15刀/年的VPS,由于拿来放网站线路经常抽风所以一直空在那里,现在可以派上用场了。
首先确保正式服务器上安装了lftp(ftp命令行客户端),备份服务器上安装了ftp服务端(任意)。
第一次折腾bash,现学现卖,功能是备份mysql中一个或多个数据库并打包传送到远程ftp服务器中去:
#!/bin/bash
# --------------- 配置项 -------------
# 数据库用户
DB_USER="root"
# 数据库密码
DB_PASSWD="123456"
# 要备份的数据库名,多个用空格分开
DB_BACKUP_DATABASE_LIST="db1 db2"
# 备份文件本地存放路径
DB_BACKUP_DIR="/home/hee/backup/db"
# 远程FTP配置信息,格式:用户名:密码@服务器地址
REMOTE_FTP_DSN="user:passwd@ip"
# ------------ 以下内容无需编辑 -------------
YYYYMMDD=$(date +%Y-%m-%d)
# -----------------------------------
DB_BACKUP_FILE="$DB_BACKUP_DIR/$YYYYMMDD.sql.gz"
# -----------------------------------
mkdir -p $DB_BACKUP_DIR
cd $DB_BACKUP_DIR
mysqldump --user=$DB_USER --password=$DB_PASSWD --lock-all-tables --databases $DB_BACKUP_DATABASE_LIST | gzip > $DB_BACKUP_FILE
lftp $REMOTE_FTP_DSN -e "put $DB_BACKUP_FILE;exit;"
然后设置一个定时任务,按想要的时间定时执行一下就OK了。
vi /etc/crontab
01 13 * * * elliott /home/username/bak.sh
每天中午1点1分执行备份操作。
eAccelerator是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍。
eAccelerator通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。
参照linode安装指南上的方法,默认是没有安装eAccelerator的,得自己把这功能加上。安装前先了解下另一个东东:phpize。
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。比如你想在原来编译好的php中加入eAccelerator或者memcached等扩展模块,可以使用phpize。
基础知识了解完了后,开始安装:
# 安装phpize yum install php-devel # 下载eaccelerator wget http://soft.vpser.net/web/eaccelerator/eaccelerator-0.9.6.1.zip unzip eaccelerator-0.9.6.1.zip cd eaccelerator-0.9.6.1 phpize ./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config make make install
如果在make时出现:error: "zend_property_info" has no member named "ce" 错误,做如下修改:
vi ea_store.c #用//注释掉683行return (child_info->ce != from) #然后重新make 和 make install
编辑php.ini:
vi /etc/php.ini # 在结尾加入 zend_extension="/usr/lib/php/modules/eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
创建eAccelerator缓存目录:
mkdir /tmp/eaccelerator chmod 0777 /tmp/eaccelerator
重启php-fastcgi:/etc/init.d/php-fastcgi restart
查看一下phpinfo吧 :-)
记忆力越来越差了。偶尔维护使用一下,过几天就忘了。
显示系统进程资源占用状况
[hee@TokyoHot ~]$ top # M键:按内存使用大小排序(从大到小) # 1键:显示每个具体CPU核心使用率情况
各VPS间通过SSH互相复制文件(无需FTP、WEB服务器)
# 获取远程服务器上的文件,-P为远程服务器ssh端口 scp -P 22 root@vps.since2006.com:/root/backup.tar.gz /home/backup.tar.gz # 获取远程服务器上的目录 scp -P 22 -r root@vps.since2006.com:/root/backups/ /home/backups/
vi 跳到文件起始和结尾处
# 跳到文件起始处 [[ # 跳到文件结尾处 ]]
vi 中查找字符串
# 向下查找pattern匹配字符串 /pattern # 向上查找pattern匹配字符串 ?pattern # 使用了查找命令之后,可以使用: # 按照同一方向继续查找 n # 按照反方向查找 N
vi中字符串替换功能
# 使用:s命令进行查找替换 # 例1:将内容中第一次出现的abc替换成123 :%s/abc/123 # 例1:将内容中所有abc替换成123 :%s/abc/123/g
批量更改目录下文件所属组及文件权限
# 更改目录及目录下所有文件所属用户组 chgrp -R groupName directoryName # 更改目录及目录下所有文件组用户权限可写 chmod -R g+w directoryName
折腾了N天,结果发现是测试网络环境下是禁用PPTP VPN的,在家试了下完全没问题。
没有使用网上的一键安装包,一键安装包中大多有重复安装过一些不必要的装的组件,如MPPE。
Kernel version 2.6.15 or above has MPPE built-in which is required for MSCHAPv2.
1、确定内核是否支持MPPE:
modprobe ppp-compress-18 && echo ok
如果显示“ok”表明内核已经具备了mppe支持。
2、然后检查PPP是否支持MPPE:
strings '/usr/sbin/pppd' |grep -i mppe | wc –l
如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持。
3、安装iptables
yum install iptables
4、安装pptp:
# 32位系统使用
rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
# 64位系统使用
rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.x86_64.rpm
5、配置pptp:
vi /etc/pptpd.conf
去掉下面代码前的#号:localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
6、编辑options.pptpd
vi /etc/ppp/options.pptpd
去掉ms-dns前面的#,并修改成如下字段:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
7、创建vpn帐号
vi /etc/ppp/chap-secrets
内容分别为:用户名 pptpd 密码 IP范围
kaede pptpd 123456 *
8、修改内核设置,使其支持转发vi /etc/sysctl.conf
将文本中的相似内容替换为:net.ipv4.ip_forward=1
#net.ipv4.tcp_syncookies=1
9、保存退出,并执行下面的命令来生效:sysctl -p
10、添加iptables转发规则:# xen 适用
# kvm 适用
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
11、保存重启:
# 保存iptables规则
/etc/init.d/iptables save
# 重启iptables
/etc/init.d/iptables restart
# 重启pptp服务
/etc/init.d/pptpd restart
# 设置开机自动运行服务
chkconfig pptpd on
chkconfig iptables on
12、测试 :-)