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

在Ubuntu 8.04下配置nginx和fastcgi方式的php

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

最近一个客户要求在他的Ubuntu 8.04 VPS上安装一个高性能的web服务器nginx,下面是我的安装记录。 由于Ubuntu 804已经包含了nginx,所以根本不要编译,安装超简单! 在VPS上修改/etc/apt/sources.list文件内容为:

deb http://ubuntu.cn99.com/ubuntu hardy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu hardy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu hardy-updates main restricted universe multiverse

然后运行:

apt-get update
apt-get install nginx

即可完成安装 启动nginx:

/etc/init.d/nginx start

然后就可以访问了,http://58.30.17.160/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。 下面配置php和mysql。 安装php和MySQL:

apt-get install php5-cli php5-cgi mysql-server-5.0 php5-mysql

我们需要/usr/bin/spawn-fcgi这个文件,而它是属于lighttpd这个包里面的,所以我们安装lighttpd然后把它设置为开机不启动:

apt-get install lighttpd #我们只要/usr/bin/spawn-fcgi
rcconf #去掉lighttpd开机自启动

修改nginx的配置文件:/etc/nginx/sites-available/default 修改 server_name 58.30.17.154; 修改index的一行修改为: index index.php index.html index.htm; 去掉下面部分的注释:

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

重新启动nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start

启动fastcgi php:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

为了让php-cgi开机自启动:

cd /etc/init.d
cp nginx php-cgi

vim php-cgi 替换nginx为php-cgi 并修改相应部分为:

DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi"
...
 stop)
        echo -n "Stopping $DESC: "
        pkill -9 php-cgi
        echo "$NAME."

然后运行rcconf设置php-cgi为开机自启动 在/var/www/nginx-default/目录下创建一个文件:

echo '< ?phpinfo();?>'  > /var/www/nginx-default/index.php

然后浏览器访问nginx就可以看到一切正常了

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

Xen虚拟化技术首次进入国内IDC行业应用

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

如今,虚拟化技术正是IT业界的热门话题。虚拟化技术能使多个操作系统在一台物理服务器上同时运行,这种虚拟化对操作系统来说是透明的。虚拟化技术能够给企业减少维护成本和硬件成本。在IBM,英特尔,SUN,惠普,戴尔等硬件厂商和VMware等软件厂商的大力支持下,虚拟技术已经成为企业的成熟的解决方案。

Xen是一种著名的开放源代码的虚拟化技术,它基于Linux平台。由于Xen采用半虚拟化的技术,也就是说操作系统要经过一点修改才能在Xen上运行,所以Xen的性能要优于其他虚拟化技术。Xen由XenSource公司负责开发,后来Citrix公司在2007年8月以5亿美元收购了XenSource公司。IBM,SUN,英特尔,惠普等硬件厂商都在自己的硬件上对Xen提供了很好的支持。RedHat,Novell等 Linux操作系统厂商也都在自己的操作系统上集成了开源的Xen软件。

在国际IDC市场上,由于Xen稳定,高性能,低成本的特点,基于Xen的VPS主机产品选择非常丰富。而目前国内市场上的VPS主机产品几乎全部都是基于商业软件的。这些商业软件比Xen成本高,性能不如Xen。瑞豪开源VPS 是国内唯一的基于Xen的VPS主机产品。瑞豪开源VPS提供多种Linux操作系统选择,VPS空间全部存储在RAID1上,能够有效防止数据丢失。瑞豪开源采用具有VT技术的英特尔至强CPU,从而也能提供Windows 2003等操作系统。

低成本,高性能的Xen进入国内VPS市场,定会加剧VPS市场竞争,降低VPS价格,从而为用户带来最大利益。

如何去掉URL中经常包含的jsessionid

Posted by zuzhihui in Linux技术 on 2008/05/18 with No Comments

在Java开发的网站中,经常会出现在URL中包含有jsessionid,用来记录session。这是因为如果浏览器不支持cookie,JSP容器通过在URL中包含jsessionid来达到session的效果。

这样做对搜索引擎来说有点问题,Google等记录的url中也会包含jsessionid,很不利于网站的SEO优化。为了从url中去掉jsessionid,我搜索了很长时间,无论搜索什么关键字:tomcat,jsp,struts2, url rewriting等,都没有非常简单简单的方法。

我最后采用了这个解决方案 。简单的说,就是增加一个Filter,在这个filter中去掉jsessionid。

搞定Realtek 8138网卡在CentOS下的驱动问题

Posted by zuzhihui in Linux技术 on 2008/05/17 with No Comments

今天去攒了一个台式机,主板的型号是技嘉G31M-S2L。回家后组装硬件的过程还比较顺利。

安装的第一个操作系统是CentOS Linux 5.1,装完之后才发现网卡没有找到。CentOS自带的有r8169内核驱动模块,但该模块根本不起作用。

然后按照第二个操作系统:Ubuntu Hardy。ubuntu还是比较强的,能够很好识别出网卡来。然后在unbutu下上网,找相关的资料,发现很多网友都碰到类似问题,网络上有很文章都是讲这个的,大多数都是说到realtek的官方网站下载驱动编译安装即可。然而事实并非如此,估计是因为官方网站上的驱动早已经升级,和以前大家碰到的不一样了。

我先在官方网站下载了驱动:
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=4&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#92

然后编译安装,结果还是不行!然后继续到网络上找资料,没有发现任何线索。

接下来我到realtek的FTP上去浏览了一番,发现ftp://202.65.194.211/cn/nic/ 下面有个r8138的驱动:
ftp://202.65.194.211/cn/nic/r8168-8.006.00.tar.bz2

下载下来,编译安装,哈哈,终于识别出来了!

在Linux下lspci命令识别出来的网卡型号是:
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)

看来这个和8169还是有区别的!ubuntu下驱动名字是r8169确实误导了我。

Back to Top

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