帝国替换掉内容存放位置

作者:阿川 发布时间:September 5, 2014 分类:网站应用 点击:4395

我要将内容存放在/item下面以为这种形式
item/id.html
使用如下语句

update phome_ecms_news set newspath='';
update phome_ecms_news set titleurl=CONCAT('/item/',id,'.html') where id>0

关于客户的cgi+mysql程序

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

1:安装
下载:d.kiiyi.com/ActivePerl-5.14.2.1402-MSWin32-x86-295342.rar
一路下一步.路径改成C:/usr安装
2:配置扩展
IIS中添加:

.cgi C:\usr\bin\perl.exe "%s" %s
.pl  C:\usr\bin\perl.exe "%s" %s

不怕死的可以直接在web服务扩展中设置
允许所有未知CGI扩展
允许所有未知ISAPI扩展

怕死的添加一个新的扩展
名字叫cgi,指向C:\usr\bin\perl.exe "%s" %s
之后,关于cgi+mysql的
首先
cd c:/usr/bin

之后执行:
ppm install DBI

接着执行
ppm install DBD::mysql

如果你发现你的DBI没有安装好.可以尝试用
ppm update DBI

将DBI升级到最新版.至此问题解决!
记录下.以后备用

关于小强sfewfesfs这货

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

首先
ps -ef
执行下.发现

root      1673     1  0 05:04 ?        00:00:00 /etc/.SSHH2
root      5677     1  0 05:06 ?        00:00:00 /tmp/.sshhdd1408655214
root      5680  5677  0 05:06 ?        00:00:00 /tmp/.sshhdd1408655214
root      5681  5680  0 05:06 ?        00:00:00 /tmp/.sshhdd1408655214
root      5682  5680  0 05:06 ?        00:00:00 /tmp/.sshhdd1408655214
root      5683  5680  0 05:06 ?        00:00:00 /tmp/.sshhdd1408655214
root      5684  5680  0 05:06 ?        00:00:00 /tmp/.sshhdd1408655214

然后到etc下面.发现有sfewfesfs还有gfhddsfew等等奇怪进程
于是挨个删除之
killall -9 getty
rm -f /etc/init.d/selinux
rm -f /etc/init.d/DbSecuritySpt
rm -f /etc/rc1.d/S97DbSecuritySpt
rm -f /etc/rc1.d/S99selinux
rm -f /etc/rc2.d/S97DbSecuritySpt
rm -f /etc/rc2.d/S99selinux
rm -f /etc/rc3.d/S97DbSecuritySpt
rm -f /etc/rc3.d/S99selinux
rm -f /etc/rc4.d/S97DbSecuritySpt
rm -f /etc/rc4.d/S99selinux
rm -f /etc/rc5.d/S97DbSecuritySpt
chattr -i /etc/sfewfesfs
rm -rf etc/sfewfesfs 
rm -rf /tmp/*.lock
rm -rf /tmp/.s*
rm -rf /etc/.SS*
rm -rf /etc/.SSHH2
rm -rf /tmp/.sshhdd140*
rm -rf /etc/gfhddsfew /etc/whitptabil /etc/gdmorpen /etc/whitptabil /etc/smarvtd /etc/fdsfsfvff /etc/sfewfesfs /etc/gfhjrtfyhuf /etc/byv832
rm -rf /var/spool/cron/root

然后reboot,用kloxo的MJJ记得最后执行最后一步
chattr -i /home/admin/*/cgi-bin   //修改权限
chattr -i /home/kloxo/httpd/default/
rm -rf /home/kloxo/httpd/default/*.php  //删除目录下文件
rm -rf /home/admin/*/cgi-bin/*.php  //删除admin目录下所有网站cgi-bin目录下的php文件
chattr -V +i /home/kloxo/httpd/default
chattr -V +i /home/admin/*/cgi-bin
 
/script/upcp  //更新kloxo,注意可能要执行很多次才能升级到最新版
/script/upcp

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

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

这时候你不妨检查下网站根目录下面的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 分类:编程开发 点击:4421

最近在给客户调试他的程序.发现每次都可以注册成功用户.但是每次都没办法登陆进去.客户代码提示的是注册成功.先去查看数据库,发现数据库里面确实木有用户.于是改配置文件,让这货显示错误信息
在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 分类:服务器 点击:3857

打开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 分类:服务器 点击:5230

今天一个客户的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 分类:服务器 点击:10247

客户在我这边有一台基于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:文章属于原创,转载请注明出处.