Posted by zuzhihui in Linux技术 on 2008/06/08 with No Comments
在win2003上安装SQL SERVER2000需要序列号的解决办法
已经不是一次两次遇到的这个问题了!很奇怪机房那边安装系统后我远程安装SQL2000就会出现序列号无法验证的问题,今天看到微软发布了解决此问题的KB,于是简单翻译一下转载到这里。
解决办法:
打开注册表编辑器并定为到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
找到名为“SafeDLLSearchMode”的DWORD值,切换修改他的值 0 或 1,如果没有则创建这个DWORD值。
转自http://www.haohtml.com/database/sqlserver/2007/01/19/4028.html
Posted by zuzhihui in Linux技术 on 2008/06/02 with No Comments
RHEL 5.2 在2008年5月21日已经正式发布了,由于这是小版本的升级,很多人都没有注意。我也是过了快一周了才发现这个消息。CentOS 5.2应该会很快跟上吧!
Red Hat Enterprise Linux 5.2 主要在下面这6个方面进行了更新:
在虚拟化方面,Xen升级到3.1.2了,这个我在5.2 beta中测试过,Xen还是有个HVM方面的bug没有修掉,而这个bug在Xen 3.2.1里面已经修掉了,要是这次升级到最新的Xen就好了。
在桌面方便,很多软件大幅度更新:
详情请参考官方报告:http://www.press.redhat.com/2008/05/21/red-hat-enterprise-linux-52/
Posted by zuzhihui in Linux技术 on 2008/06/01 with 2 Comments
(后注:CentOS VPS下最新的nginx解决方案,请参考 http://rashost.com/blog/centos5-vps-nginx-solution2 )
这篇文章已经介绍了怎样编译Nginx的RPM包 下载RPM包:
wget http://rashost.com/local/nginx-0.6.35-2.i386.rpm rpm -ivh nginx-0.6.35-2.i386.rpm chkconfig nginx on /etc/init.d/nginx start
然后访问本机的80端口,就可以看到页面了,这表示安装一切正常。 修改/etc/nginx/nginx.conf文件中的server_name部分,修改IP地址为本机IP地址:
server_name 192.168.0.104;
修改/etc/nginx/nginx.conf文件的index部分,加入index.php
index index.php index.html index.htm;
安装php和fastcgi
wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm
wget ftp://rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/lighttpd-1.4.18-1.el5.rf.i386.rpm
rpm -ivh lighttpd*.rpm # CentOS不自带lighttpd, 我们只好从别处下载,安装
chkconfig --del lighttpd #我们只用到lighttpd中的一个文件,不需要lighttpd开机自启动
yum install -y php-cgi php-mysql
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u nginx -f /usr/bin/php-cgi
cd /usr/share/nginx/html/
echo "< ? phpinfo(); ?>" >i.php
然后修改/etc/nginx/nginx.conf文件的如下部分:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
重启nginx:
/etc/init.d/nginx stop
/etc/init.d/nginx start
然后访问本机的i.php文件 http://192.168.1.104/i.php 应该能正确的到php的配置信息,这就成功了! 最后要注意的是,在CentOS下nginx的默认html目录是/usr/share/nginx/html,这个和ubuntu下不同 另外,为了让php cgi程序开机自启动,请在/etc/rc.local文件的最后加入下面这行:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u nginx -f /usr/bin/php-cgi
Posted by zuzhihui in Linux技术 on 2008/06/01 with No Comments
首先下载nginx的源代码,我下载的是rpm源码包,下载地址从rpmfind.net上找的:
ftp://rpmfind.net/linux/fedora/development/source/SRPMS/nginx-0.6.35-2.fc9.src.rpm
安装编译工具和所需要的库:
yum install -y make rpm-build pcre-devel zlib-devel openssl-devel perl-devel gcc
运行如下命令编译RPM:
mkdir -p /usr/src/redhat/SOURCES rpm -ivh nginx-0.6.35-2.fc9.src.rpm cd /usr/src/redhat/SPECS/ vim nginx.spec #remove the perl-devel dependency rpmbuild -bb nginx.spec
然后编译出来的RPM就在 /usr/src/redhat/RPMS/i386/nginx-0.6.35-2.i386.rpm
Posted by zuzhihui in Linux技术 on 2008/05/27 with No Comments
昨天晚上就已经安装调试成功了,目前只能在CentOS 5 VPS上安装。
我们已经建立了两个安装了Lxadmin的VPS,邀请了两个客户进行试用。如果您想体验一下Lxadmin,请邮件联系我们 support@rashost.com 我们会开通免费试用的。
Posted by zuzhihui in Linux技术 on 2008/05/25 with No Comments
这两天,我们的一台Xen VPS Host主机的的硬盘也“地震”了。这台主机上有两块硬盘坏了。但是由于做了RAID,数据一点没有丢失。这次事故使部分客户的VPS中断了,尤其是一些做新闻的客户,比如 汶川地震网等,我们深表歉意,我们会尽力杜绝此类事件的发生。
这台VPS Host一共三块硬盘,前两块做了RAID1,上面安装了操作系统,放着所有VPS数据。第三块硬盘没有做RAID,用来备份数据。昨天晚上,我收到主机上SMARTD发来的邮件报告第二块硬盘检测失败。这时第一块硬盘很正常,所以系统还是没有受到影响。但是这时候由于没有了RAID,系统就处于不安全的状态,因为如果第一块硬盘再坏了,系统就不能在线运行,只能从第三块硬盘手工恢复数据了。为了消除这个状态,我们把第三块硬盘的数据清理了一下,然后把第三块硬盘加入RAID。这样虽然没有了备份空间,但系统稳定了。
下午大概三点的时候第三块硬盘也坏了(第三块和第二块是一起购买的)。我们立即派人联系服务器经销商,取了两块新的服务器硬盘,赶赴IDC。在只有一块硬盘的情况下,系统也是在线的。关键是这时候系统由于需要重启了,而重启失败了。后来发现启动失败的原因是由于/etc/fstab文件中有第三块硬盘的分区,这个分区的文件系统检查标志是打开了的,所以启动过程要检查这个分区,发现错误后就不继续了,要输入root密码才能进入一个shell。如果不是这个启动失败,断线时间能缩短一些。
在IDC换了硬盘后,系统能够正常访问了。由于RAID重构是在后台进行的,所以系统的IO在重构过程中比较繁忙,VPS中应该能感觉到。
经过这次事件,总结了几点经验教训:
目前国内有VPS市场服务名声不好(google关键字 “vps 服务差 OR 骗子公司 OR 垃圾” 可以看到),而我们一定要对客户负责,真诚。不管在价格方面还是服务方面都对客户透明,对所有人统一标价,服务不到的地方要反省而不是欺骗或者隐瞒。我以前在国外某VPS公司的一段兼职经验让我看到国外多数VPS公司的服务还是比较真诚的,我们确实应该好好学习。
Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments
使用soft raid的一个好处就是和硬件无关。当硬件完蛋的时候你只能找一样的硬件来读数据,而软件的话完全就挂在
一个新的LINUX系统上就OK。如果不是RAID5,那么实际上作RAID1的话性能应该不用太担心,毕竟有8个逻辑CPU…
可以做这么一个方案:
系统主板上两个同样的硬盘,安装redhat enterprise linux 4.2,安装的时候将两个硬盘的分区改为一致,并都设置为
SOFTWARE RAID1。然后继续安装。
那么安装完毕后,完全可能出现系统不能启动,或者grub可以进行第一步启动,但是找不到/分区或者核心的问题,那么
就要采取如下的方法来解决这个问题了,原文出处:
http://www.redhat.com.cn/kbase/6046.php
现象:
如果你在软件RAID上安装了一个操作系统,系统会无法引导或者只能从其中的一个硬盘引导。而不是所需要的硬盘冗余,即可以从任意一个硬盘引导。
你最好多少能够熟悉一些硬盘寻址和分区的知识和一些基本的Linux引导信息。还需要能够熟练的使用vi来编辑一些配置文件。
解决方法:
因为存储设备的差异非常大,安装程序(Anaconda)可能不能正确设置每一个引导驱动器的主引导记录(MBR)。MBR使用硬盘前512个字节的一部分,位于分区表之后。它包含引导加载Linux所需的自举程序的代码。
如果磁盘没有包含GRUB,系统将不能从第二个硬盘启动,第二种可能是GRUB被安装到了另一个磁盘的MBR上去了,第三种可能,如果机器没有正确 的关闭,则MBR中的GRUB信息可能会在同步的时候被空字节所代替。确认是否以上的可能性,可以手工的重新安装GRUB.可以在一个正在运行的机器或者 启动到救援模式下,
如果在救援模式下,使用chroot改变当前root到/mnt/sysimage,切换到GRUB目录/boot/grub. 编辑文件device.map. 设置要安装GRUB的磁盘和设备。如果你的软件RAID是基于两个IDE硬盘hda和hdc,这个文件可以设置如下:
# this device map was generated by anaconda (fd0) /dev/fd0 (hd0) /dev/hda (hd1) /dev/hdc
请注意,上文中的设备指的是整个设备(hdx)而非一个分区。 假设你的/boot分区是硬盘上的第一个分区,GRUB会把他们认成(hd0,0)和(hd1,0)。确认grub.conf中的设置是否和上述一致。同 样你需要创建一个备份的启动项去启动这个系统:如下例:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=LABEL=/ # initrd /initrd-version.img #boot=/dev/hda1 default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu #Boot from /boot partition, /dev/hda1 title Red Hat Enterprise Linux Disk A (version) root (hd0,0) kernel /vmlinuz-version ro root=LABEL=/ initrd /initrd-version.img #Boot from /boot partition, /dev/hdc1 title Red Hat Enterprise Linux Disk C (version) root (hd1,0) kernel /vmlinuz-version ro root=LABEL=/ initrd /initrd-version.img
最后,使用grub命令,并在grub SHELL中手动的安装GRUB到每个设备的MBR.你可以使用GRUBroot命令和setup命令来实现上述操作。现把包含/boot的分区传递给 root命令。然后使用setup命令把GRUB MBR的代码写入需要引导的设备。操作步骤如下:
# /sbin/grub GNU GRUB version 0.xx (640K lower / xxxxK upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> root (hd1,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd1) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd0) (hd0)1 15 p (hd0,0)/grub/stage2 /grub/grub .conf"... succeeded Done. grub> root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd0) (hd0)1 15 p (hd0,0)/grub/stage2 /grub/grub .conf"... succeeded Done. grub> quit
在上述例子中,在两块硬盘上都已经安装成功,我们可以返回安装程序或者是正常运行的系统。重新启动系统确认系统是否能够引导。还需要模拟SoftRAID中的一个硬盘失败的情况下,系统可以从另一快硬盘引导而且数据可以恢复。
Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments
在程序出错的时候,会产生core文件,这个core文件有利于debug程序为什么产生错误。
在Linux系统中,缺省是不允许产生core文件的。要想运行产生core文件,需要修改/etc/security/limits.conf 然后重新启动即可:
需要在/etc/security/limits.conf中添加:
* soft core 20480
* hard core 40960
即可
以上方法在瑞豪开源VPS(包括CentOS,Debian,Ubuntu)上测试通过
Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments
Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司透露使用这个软件某些情况下至少可以提高性能30%以上。今天我在安装了Ubuntu Hardy的VPS上配置了最新的ZendOp。过程记录如下:
按照正常流程,在官方网站下载Zend Optimizer是需要注册用户登录之后才能下载的。下载一次后发现其实匿名用户也能下载,用下面这个URL即可:
http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
在安装Zend Optimizer之前需要先把apache,php安装好:
apt-get install libapache2-mod-php
然后在/var/www/下创建index.php,仅包含一行php代码phpinfo();
然后用浏览器访问VPS,在首页里面搜索不到Zend Optimizer的字样.安装完成后应该能够搜索到Zend Optimizer才对。
tar zxf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install.sh
然后安装程序会询问几个路径,一个个回答即可完成安装。
安装完成,重启apache,然后再访问首页,应该能搜索到Zend Optimizer的字样,说明安装成功了,接下来就可以开始测试性能了。
Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments
AWStats是在一个很流行的基于Perl的WEB日志分析工具。本文讲述在Debian4下怎么安装配置awstats。
Debian4自带有awstats,安装只需执行:
apt-get install awstats
然后输入以下命令重新启动apache
/etc/init.d/apache2 force-reload
然后通过浏览器访问:http://rashost.com/cgi-bin/awstats.pl 发现有出错信息,说明awstats已经安装了,perl cgi也工作了,只是awstats还没有配置,所以报错了。
在/etc/awstats/awstats.conf文件中修改:
LogFile="/var/log/apache2/access.log"
LogType=W
LogFormat=1
SiteDomain="rashost.com"
HostAliases="rashost.com localhost 127.0.0.1"
然后再次访问,awstats的界面出来了,但是没有数据。
awstats靠cron定期分析apache日志,在文件/etc/cron.d/awstats中我们能找出数据处理的脚本,但在debian下,这个脚本是有点问题的,我们需要手工修改脚本中的日志文件的文件名为:/var/log/apache2/access.log
现在手工运行一下awstats的数据分析脚本:
chmod og r /var/log/apache2/access.log*
/usr/lib/cgi-bin/awstats.pl -config=awstats -update
然后再次浏览器访问,数据就出来了。还有没有出来的是图标,我们需要在apache的配置文件
/etc/apache2/sites-available/default
中加入:
Alias /awstats-icon/ "/usr/share/awstats/icon/"
<directory "/usr/share/awstats/icon/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
重启apache,完整的内容就出来了。
剩下的唯一问题就是控制不让别人随便访问awstats,还是在
/etc/apache2/sites-available/default
文件中修改:
<directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews SymLinksIfOwnerMatch
Order allow,deny
Allow from all
AuthType Basic
AuthName "RasHost CGI"
AuthBasicProvider file
AuthUserFile /etc/apache2/password
Require user admin
然后在/etc/apache2目录下执行:
htpasswd -c password admin
给admin用户一个密码即可
最后的完善
为了让awstats能够显示出IP来自什么地方,我们还需要安装一些东西:
apt-get install libgeoip-dev liburi-perl
wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.4.tar.gz
tar zxf GeoIP-1.4.4.tar.gz
./configure --prefix=/usr
make
make install
perl -MCPAN -e 'install "Geo::IP"'
perl -MCPAN -e 'install "Geo::IP::PurePerl"'
安装以上perl需要gcc等编译工具
cd /usr/share/awstats
wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
wget http://www.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity_20080501.zip
gunzip GeoIP.dat.gz
unzip GeoLiteCity_20080501.zip
mv GeoLiteCity_20080501 GeoLiteCity
vim /etc/swstats/swstats.conf
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /usr/share/awstats/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/awstats/GeoIPCity.dat"
重启apache就可以了
近期评论