since.2006  

Linode服务器安装指引中的EPEL(Extra Packages for Enterprise Linux)源现在访问有问题了,执行:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
会报错:
error: skipping http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm - transfer failed - Unknown or unexpected error

下面是一些可替换的:

CentOS 6.x 32-bit (x86/i386):
rpm -Uvh http://mirror.overthewire.com.au/pub/epel/6/i386/epel-release-6-7.noarch.rpm
CentOS 6.x 64-bit (x64):   
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
CentOS 5.x 32-bit (x86/i386):   
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
CentOS 5.x 64-bit (x64):
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
Disable EPEL Repo:

If you want to disable the EPEL repo on your server, set “enabled=0″ in “/etc/yum.repos.d/epel.repo”:   
vim /etc/yum.repos.d/epel.repo

Posted by hee at 14:02 PM | Permalink | 评论(0)

CentOS的用户登录记录存放在/var/log下,分别是:

1.登录成功的记录(Last Logged In Users),位置:/var/log/wtmp
通过命令last可以查看记录列表
[root@vps ~]# last

2.登录失败的记录(Bad Login Attemps Log),位置:/var/log/btmp
通过命令lastb可以查看记录列表
[root@vps ~]# lastb

清空登录历史记录:
[root@vps ~]# > /var/log/wtmp

 

Posted by hee at 22:09 PM | Permalink | 评论(0)
这几天打开另一个网站频繁出现500错误,上VPS看nginx日志,错误主要有“No space left on device”和“24: Too many open files”。

现学现卖一个一个问题的解决:
No space left on device
看起来像是没有剩余空间了
  1. 执行“df -m”后,发现可用空间为0%
  2. 使用“du -sh /*”可以查看指定目录下哪个文件占用空间最大
  3. 一路追踪下去“du -sh /srv/www/*”发现nginx log文件占用了20多G。
  4. “tail -n 30 error.log”看下log最近到底报的是什么错,结果全是“24: Too many open files”

再来解决:
24: Too many open files
Linux系统对一个进程打开的文件句柄数量的限制,默认只有1024,并发高一点就达到这个限制了。

  1. “ulimit -a”可以看到当前的设置open files (-n) 1024
  2. 编辑“/etc/security/limits.conf”,在末尾加入“* soft nofile 65535”和“* hard nofile 65535”
  3. 编辑“/etc/nginx/nginx.conf”文件,加入“worker_rlimit_nofile 65535;”

搞定,重启nginx,观察几天看看。

 

Posted by hee at 10:12 AM | Permalink | 评论(0)

有时出于安全考虑,可以添加一个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

 

Posted by hee at 11:12 AM | Permalink | 评论(0)

现在大部分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分执行备份操作。


Posted by hee at 09:11 AM | Permalink | 评论(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吧 :-)

 

Posted by hee at 20:11 PM | Permalink | 评论(0)