在Windows VPS下安装SQL Server 2000需要序列号的解决办法

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

Red Hat Enterprise Linux 5.2 正式发布了

Posted by zuzhihui in Linux技术 on 2008/06/02 with No Comments

RHEL 5.2 在2008年5月21日已经正式发布了,由于这是小版本的升级,很多人都没有注意。我也是过了快一周了才发现这个消息。CentOS 5.2应该会很快跟上吧!

RHEL 5.2的亮点

Red Hat Enterprise Linux 5.2 主要在下面这6个方面进行了更新:

  • Virtualization
  • Laptop and Desktop improvements
  • Encryption and Security
  • Cluster & Storage Enhancements
  • Networking & IPv6 Enablement
  • Servicability

在虚拟化方面,Xen升级到3.1.2了,这个我在5.2 beta中测试过,Xen还是有个HVM方面的bug没有修掉,而这个bug在Xen 3.2.1里面已经修掉了,要是这次升级到最新的Xen就好了。

在桌面方便,很多软件大幅度更新:

  • Evolution 2.12.3
  • Firefox 3
  • OpenOffice 2.3.0
  • Thunderbird 2.0

详情请参考官方报告:http://www.press.redhat.com/2008/05/21/red-hat-enterprise-linux-52/

在CentOS5下安装配置nginx+fastcgi php+mysql

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

在CentOS 5下编译nginx的RPM包

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

Linux VPS的轻量级控制面板Lxadmin免费试用

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中应该能感觉到。

经过这次事件,总结了几点经验教训:

  1. 客户的数据是最重要的,RAID一定要坚持做,数据安全方面任何环节不能忽视
  2. 一台主机上的硬盘要不同批次的,最好是要不同品牌的,因为同一批硬盘的质量往往类似,如果一个出问题的话,这个批次的其他硬盘也有可能要出问题。
  3. 要注意Linux的fstab文件,不重要的分区不要加入检查标志,否则这个分区检查不通过,系统将不能正常启动起来。

目前国内有VPS市场服务名声不好(google关键字 “vps 服务差 OR 骗子公司 OR 垃圾” 可以看到),而我们一定要对客户负责,真诚。不管在价格方面还是服务方面都对客户透明,对所有人统一标价,服务不到的地方要反省而不是欺骗或者隐瞒。我以前在国外某VPS公司的一段兼职经验让我看到国外多数VPS公司的服务还是比较真诚的,我们确实应该好好学习。

用grub引导software raid1上的Linux

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中的一个硬盘失败的情况下,系统可以从另一快硬盘引导而且数据可以恢复。

在Linux下怎样允许产生core文件

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)上测试通过

在Ubuntu 8.04下安装配置Zend Optimizer

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的字样,说明安装成功了,接下来就可以开始测试性能了。

在Debian4下配置awstats分析apache的日志

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就可以了

Back to Top

2007-2017 © 北京瑞豪开源科技有限公司 京ICP备13004995号-2