当你发现zencart后台极度缓慢的时候

作者:阿川 发布时间:August 19, 2014 分类:服务器 点击:3818

这时候你不妨检查下网站根目录下面的cache文件夹,尝试给这货改个名字.然后再创建一个文件夹

mv cache c
mkdir cache

你就会神奇的发现,其实zencart的后台打开速度没那么的慢了
当然如果你想清空cache里面的内容的话.可以按照这样操作,在centos下面
yum install rsync

在网站根目录下面
mkdir 123

之后执行
rsync --delete-before -d -a -H -v --progress --stats 123/ cache/

相关选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
–stats 给出某些文件的传输状态
-d 转移目录不需要递归

当sql server提示你注册了用户又无法登陆的解决办法

作者:阿川 发布时间:August 10, 2014 分类:编程开发 点击:3505

最近在给客户调试他的程序.发现每次都可以注册成功用户.但是每次都没办法登陆进去.客户代码提示的是注册成功.先去查看数据库,发现数据库里面确实木有用户.于是改配置文件,让这货显示错误信息
在conn.asp中注释掉

On Error Resume Next

添加这货让他显示错误
On Error Goto 0

接着继续注册.提示
Provider 错误 '80020005' 类型不匹配.
显示第regs/regsave.asp中122行有问题.
Rs("daili")    ="0""4"

改成
Rs("daili")    ="4"

继续注册,这会儿提示
请执行 sp_addlinkedserver 将该服务器添加到 sysservers.
原来是计算机名不对..改过来
1:查找老服务器
SELECT @@SERVERNAME

2:修改服务名(现有服务器名一般为计算机名)
EXEC sp_dropserver 原服务器名
EXEC sp_addserver
@server=''现在的服务器名,
@LOCAL = LOCAL

之后重启服务.
接着又提示
SQL Server未将服务器 DBSERVER 配置为用于 DATA ACCESS.
DBSERVER一般也是计算机名.继续sql
USE MASTER;
EXEC sp_serveroption 'DBSERVER', 'data access', 'on';

之后,再注册
又特么提示错误
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e23'

[Microsoft][ODBC SQL Server Driver][SQL Server]此游标不包括正在修改的表,或该表不能通过此游标更新。

这种错误通常是更改了计算机机器名引起的.接着重启机器.记得是重启机器啊啊啊啊重启机器...我特么在这里被玩疯了.一直重启服务,一直提示这玩意错误..最后重启机器后解决..然后再注册.发现注册成功,
接着把reg/regsave.asp中的

Rs("daili")    ="4"

改成
Rs("daili")    ="0""4"

打完收工...一切看起来都是那么正常..

当2008R2与sql 2008结合跑asp的时候速度缓慢的解决办法

作者:阿川 发布时间:July 27, 2014 分类:服务器 点击:2997

打开SQL Server2008的SQL Server 配置管理器SQL Server 2005 网络配置->MSSQLSERVER的协议->TCP/IP ,发现TCP/IP竟然是禁用的,协议里只开启了Shared Memory 。属性里面设置的监听端口倒是默认的1433.于是将TCP/IP启用。重启了SQL Server服务后打开网站速度就很快了。

问题算是解决了。原因就是由于没有开启SQL Server 里的TCP/IP协议,使用了Shared Memory的方式连接数据库,所以造成网站访问很慢。

centos下快速的复制文件(tar+sync组合)

作者:阿川 发布时间:June 12, 2014 分类:服务器 点击:4334

今天一个客户的VPS自检之后,使用fsck修复.丢了一些很重要的文件,幸好在修复之前做过一系列的备份.幸运的是文件依然存在.但是文件是以快照的方式存在于母服务器里面.所以需要将客户的数据复制到丢掉数据的VPS里面,但是由于客户是小说站.里面有大约60万个文件需要复制,普通情况下使用cp命令可能需要太长太长的时间,因此..俺们想到了使用tar与rsync来同时折腾.
第一步,肯定是先将文件复制过去.SSH到终端.直接执行

(cd /data; tar cf - .) | (cd /home/wwwroot; tar xpf -)

通常情况下.这样复制很有可能会因为某些错误丢失掉一些文件,但是我们又不知道是哪个文件丢失了,这时候rsync就排上用场了
木有安装rsync的童鞋可以执行
yum install rsync

来安装rsync.之后执行
cd /dst; rsync -avPHSx --delete /src/ .

rsync的参数解释:
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-v, --verbose 详细模式输出
-P 等同于 --partial
--保留那些因故没有完全传输的文件,以是加快随后的再次传输
-H, --hard-links 保留硬链结
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-x, --one-file-system 不要跨越文件系统边界

centos5下面恢复数据手记

作者:阿川 发布时间:May 28, 2014 分类:服务器 点击:8745

客户在我这边有一台基于xen-hvm的VPS,硬盘40G,分为10G系统.30G为数据盘(挂载在/home下面).网站在/home下面.数据库安装在usr/local/.
早上客户打电话给我说.网站打不开了..本以为是很简单的问题.结果看了客户发来的网站,发现打不开,但是SSH可以登陆上去,于是常规排除:
1:关闭防火墙

service iptables stop //关闭防火墙

2:重启Apache
service httpd restart

报错
Syntax error on line 94 of /usr/local/apache/conf/httpd.conf:
DocumentRoot must be a directory
httpd not running, trying to start

3:重启MySQL
service mysqld restart

提示
mysqld: unrecognized service
一看这个错误..立马吓一跳,mysql服务居然没有了.查系统日志,发现几行命令:
990  ls
  991  tar -zxvf xxx_cn.tar.gz
  992  ls
  993  wget http://amysql.com/file/AMH/4.2/amh.sh
  994  chmod 775 amh.sh
  995  ./amh.sh 2>&1 | tee amh.log
  996  amh info
  997   amh ftp
  998  wget http://amysql.com/file/AMH/4.2/amh.sh
  999  chmod 775 amh.sh
 1000  ./amh.sh 2>&1 | tee amh.log

一看这里不对劲.因为客户基本上不可能会配置这个AMH,于是到usr/local/目录,发现mysql目录不见了.接着到home目录,
发现wwwroot不见了..个狗日的,好狠.两个文件夹直接删光了.查询半天无果,只好着手开始恢复.
恢复数据.首先想到两款软件extundelete和ext3grep
最开始我尝试ext3grep,发现找回来全是一堆乱码文件..折腾半天未果.不过这也更加确信了数据是被人为删除的结论
截下来尝试extundelete.
1:安装前准备,先安装依赖环境
yum install gcc gcc-c++ gcc-g77

2:安装e2fsprogs
yum install e2fsprogs* -y

3:下载文件安装包
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

4:解压文件
bunzip2 extundelete-0.2.4.tar.bz2
ls
tar xvf extundelete-0.2.4.tar 
cd extundelete-0.2.4

5:编译和安装
cd extundelete-0.2.4
./configure 
make
make install

成功之后查看extundelete版本
[root@MyCloudServer ~]# extundelete -v
extundelete version 0.2.4
libext2fs version 1.41.12
Processor is little endian.

之后着手数据恢复,查看挂载详情:
[root@MyVPS3251 ~]# df -hal
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      9.3G  5.6G  3.3G  63% /
proc                     0     0     0   -  /proc
sysfs                    0     0     0   -  /sys
devpts                   0     0     0   -  /dev/pts
/dev/xvda1             99M   29M   66M  31% /boot
tmpfs                 513M   32K  513M   1% /dev/shm
/dev/xvdb1             30G  422M   28G   2% /home
none                     0     0     0   -  /proc/sys/fs/binfmt_misc
sunrpc                   0     0     0   -  /var/lib/nfs/rpc_pipefs

将/home卸载
fuser -k /home
umount /home

之后执行恢复.我是直接挂载了一块新的虚拟硬盘进行数据恢复
所以直接cd到新的硬盘挂载目录执行:
extundelete /dev/VolGroup00/LogVol00 --restore-all
[root@MyCloudServer cc]# extundelete /dev/VolGroup00/LogVol00 --restore-all
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 77 groups loaded.
Loading journal descriptors ... 31226 descriptors loaded.
Searching for recoverable inodes in directory / ... 
68 recoverable inodes found.
Looking through the directory structure for deleted files ... 
Unable to restore inode 1967279 (etc/.ins.conf): Space has been reallocated.
Unable to restore inode 1967278 (etc/mtab~9471): Space has been reallocated.

完成之后在目录下面会生成一个RECOVERED_FILES文件夹.进去之后发现wwwroot的文件已经恢复.
这是最简单的方法.之前使用ext3grep恢复浪费了大量的时间去查找Inode,结果毛都没恢复出来一根
接着需要恢复/usr/local/下面的文件.这里比较麻烦.老机器是LVM逻辑卷,不能直接挂载.所以比较麻烦
首先将老机器的硬盘卸载掉.重新开通一台新的VPS,系统不要与老的一样(老的是centos5 32bit,新的我开通为centos 6 64bit)
之后将硬盘挂载到新的VPS中.
之后登陆上新的VPS,扫描卷:
[root@MyCloudServer ~]# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
  Found volume group "vg_have" using metadata type lvm2
[root@MyCloudServer ~]#

激活卷
[root@MyCloudServer home]# vgchange --available y VolGroup00
  2 logical volume(s) in volume group "VolGroup00" now active
[root@MyCloudServer home]#

开始扫描文件:
extundelete /dev/VolGroup00/LogVol00 --restore-all

不过遗憾的是,数据库没办法恢复回来.可能是因为AMH编译的缘故.已经覆盖掉的文件,所以无法找回了..
在此提醒各位.注意备份好自己的数据库.详情参见:每日备份mysql到网站目录
xtundelete /dev/partition --restore-all  //恢复磁盘所有文件
extundelete /dev/partition --restore-directory /backup/gnutool-delete  //恢复单个目录
extundelete /dev/partition --restore-files /etc/passwd   //恢复单个文件

PS:文章属于原创,转载请注明出处.

用iptables自动封IP

作者:阿川 发布时间:March 30, 2014 分类:服务器 点击:14113

防SSH被暴力破解

#!/bin/bash
#Created by haiyun
num=10 #上限
for i in `awk '/Failed/{print $(NF-3)}' 
/var/log/secure|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
 
do
 
       iptables -I INPUT -p tcp -s $i --dport 22 -j DROP
done

加入crontab计划任务
crontab -e
* */5 * * * sh /path/file.sh #5小时执行一次

转载于:Hostloc

CentOS 6专用PPTPD一键安装包

作者:阿川 发布时间:March 29, 2014 分类:服务器 点击:7334

CentOS 5 get这个

wget https://dl.dropboxusercontent.com/sh/5dirwtwfbklcq1o/_xkDJJSneg/centos5_pptpd.sh
chmod +x centos5_pptpd.sh
./centos5_pptpd.sh

CentOS 6 get这个

wget https://dl.dropboxusercontent.com/sh/5dirwtwfbklcq1o/v8kUINF996/centos6_pptpd.sh
chmod +x centos6_pptpd.sh
./centos6_pptpd.sh

转载来源:Hostloc

linux快速的删除文件

作者:阿川 发布时间:March 25, 2014 分类:服务器 点击:4660

使用rsync –delete将目标文件夹以一个空文件夹来替换
两行命令:

mkdir dir
rsync -a –delete dir/ yourdir/

用于N多小碎片清理比较好.
删除100W个文件仅需5分钟
比rm -rf快了16倍
比xargs快15倍
CPU使用率是rm的两倍
是xargs的1.5倍.如果你有个好U.推荐使用上述办法