VPS就是这样做出来的。

发表于:2007-06-09来源:作者:点击数: 标签:
VPS是VirtualPrivateServer的英文缩写(也有叫VDS的),中文意思是虚拟专有 服务器 ,就是在一台服务器同时运行几个独立的OS(这里是指FreeBSD),有什么用处这里不详细描述了,设想一下几个用户分享一台服务器,互相之间完全独立,每个人都有root权限......

VPS是Virtual Private Server的英文缩写(也有叫VDS的),中文意思是虚拟专有服务器,就是在一台服务器同时运行几个独立的OS(这里是指FreeBSD),有什么用处这里不详细描述了,设想一下几个用户分享一台服务器,互相之间完全独立,每个人都有root权限......。在FreeBSD下VPS通常是由Jail来实现的(据说有专门的商业软件但这里不讨论),下面就简单说一下具体步骤。

在FreeBSD下用Jail实现VPS的步骤是很繁琐的,这里我用的是一个抄来的Shell脚本(稍微改了一下)可以很方便的完成全部过程,这里先假定你的宿主系统地址是192.168.0.1,VPS的地址是192.168.0.2(alias),生成的VPS放在/home/jail下。需要注意的是:这里要实现的是VPS,要生成和宿主系统一样的整个FreeBSD目录树。如果你只是要实现一个运行某个服务的Jail不要用这个script。

另外,再提醒一下,在VPS下对于一些缺省情况下侦听所有地址的服务可能需要重新设定在某个具体的地址上。

#!/bin/sh
################################################
#
#
#  makejail
#  - Originally written in 2001 by Yann Sommer
#  - Slightly modified by MaxBSD
#
#  Creation of a new jail environment
#  for FreeBSD.
#  
#  Achtung: Tested under FreeBSD4.X only.
#
################################################

echo "First off, pls create an ip alias and hostname
echo "for the new jail system in /etc/rc.conf."
echo "eg: ifconfig_fxp0_alias0=\"inet 192.168.0.2 netmask 0xffffff\""
sleep 3

if test -z $@; then
 echo "Enter destination directory for new jail:"
 echo "eg: /home/jail "
 read JAIL
else
 JAIL=$@
fi

test ! -d $JAIL || { echo "$JAIL already exists!!"; exit 1; }

echo "Creating jail directory..."
mkdir $JAIL

echo "Making World...."
cd /usr/src
make world DESTDIR=$JAIL -DNOCLEAN
cd etc
make distribution DESTDIR=$JAIL NO_MAKEDEV=yes

echo "Making devices..."
cd $JAIL/dev
sh MAKEDEV jail
cd $JAIL
ln -sf dev/null kernel

echo "Preparing initial configuration..."
touch $JAIL/etc/fstab
grep nameserver /etc/resolv.conf > $JAIL/etc/resolv.conf
echo "jail.set_hostname_allowed=0" >> /etc/sysctl.conf
echo "jail.sysvipc_allowed=1" >> /etc/sysctl.conf
echo "inetd_flags="-wW -a 192.168.0.1" >> /etc/rc.conf
echo "network_interfaces=\"\"" >> /etc/rc.conf
echo "sendmail_enable=\"NONE\"" >> $JAIL/etc/rc.conf
echo "portmap_enable=\"NO\"" >> $JAIL/etc/rc.conf
echo "======================================================"
echo "*Mission aclearcase/" target="_blank" >ccomplished!*"
echo
echo "To start the jail you've just created, do this command:"
echo "Substitute the IP address and hostname with your own."
echo
echo "jail /home/jail hostname 192.168.0.2 /bin/sh /etc/rc"
echo "======================================================"


FreeBSD的Jail功能目前还不算很强的,尤其是管理方面。不过幸好有一些3rd party的程序增强了这方面的功能,这里就不再讨论下去了。有兴趣的可以自己去搜索一下。

 hdcola 回复于:2003-02-16 20:46:49
对了,我喜欢jailer
主要是感觉1.x的东东总是比0.x的要好罢

 hdcola 回复于:2003-02-16 20:44:53
如果你是用的freebsd 4.7哪么要注意它的ifconfig alias有点问题,这个问题在5.0中已经解决了,我现在还记得当初cvsup后要用n多子网掩码的痛苦。 

 MaxBSD 回复于:2003-02-16 20:42:45
[quote:c1691448c3="hdcola"]/usr/ports/sysutils/jailer
Manage FreeBSD jail startup, shutdown and console
[/quote:c1691448c3]

>这个我正在试。

/usr/ports/sysutils/jailutils
Several utilies for managing jails

这两个工具加上系统命令,jail的功能不就全了吗? 

>呵呵,大哥好强啊,佩服。

 hdcola 回复于:2003-02-16 20:37:43
/usr/ports/sysutils/jailer
Manage FreeBSD jail startup, shutdown and console

/usr/ports/sysutils/jailutils
Several utilies for managing jails

这两个工具加上系统命令,jail的功能不就全了吗? 

 MaxBSD 回复于:2003-02-16 21:28:30
[quote:766e796d73="hdcola"]对了,我喜欢jailer
主要是感觉1.x的东东总是比0.x的要好罢[/quote:766e796d73]

咳,早知让你来写么。

 quakelee 回复于:2003-02-16 21:34:26
good good study, day day up~~

 hdcola 回复于:2003-02-16 21:35:23
kao 我写的话上来的版本就是xp了 

 freedemon 回复于:2003-02-17 09:36:05
不错,UP一下。

Jail已经很不错了,因为它只提供一个系统环境,更个性化的应用环境设置是要由你来定制的。


.

原文转自:http://www.ltesting.net