使用s3sync自动备份服务器上重要数据到Amazon S3 云存储上

August 26th, 2010 VPS评测网 Posted in Linux No Comments »

我在网上看到好多人用虚拟主机如DreamHost等空间来备份VPS或者独立服务器上面重要的数据, 如每日数据库的备份等等。 我个人认为这个方法不是很经济, 可靠性也不是很高。
一般虚拟空间总要4美元左右一个月, 而4美元一个月在Amazon S3 上可以备份10g左右的数据, 但是一般的服务器应该用不到这么大的备份, 而S3就是按需收费的,这样每个月的费用就大大降低了,正常一两元人民币就ok了。 而可靠性个人认为S3要稳定的多,毕竟很多大公司都把存储服务放在S3上, 肯定是有他的道理的, 而一般虚拟空间丢失数据的情况常有发生。
如何自动备份数据到S3上面呢? 可以使用 s3sync 工具进行同步。具体步骤如下:
第一步:创建Amazon S3账号
登入 http://www.amazon.com/s3 网站,创建好自己的账号, 接受信用卡支付。 创建好账号后得到你自己的Access Key ID 和Secret Access Key。 上传下载文件需要用到这两个key,相当于你账号的密码。
第二步:安装 s3sync
s3sync需要ruby支持, Debian/Ubuntu系统可以通过  “$ sudo apt-get install ruby libopenssl-ruby” 安装, CentOS可以通过yum命令安装。
下载 s3sync 并解压

$ wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
$ tar xvzf s3sync.tar.gz
进入 s3sync目录下载安装ssl证书,以便加密传输数据。
$ mkdir certs
$ cd certs
$ wget http://mirbsd.mirsolutions.de/cvs.cgi/~checkout~/src/etc/ssl.certs.shar
$ sh ssl.certs.shar
$ cd..
第三步:创建备份数据脚本
建议先在本机上做备份, 比如保存最近10天的备份。
$ touch backup.sh
$ chmod +x backup.sh
内容如下:
#!/bin/sh
cd /var/backup/db

#导出数据库
mysqldump -h 127.0.0.1 -u root -ppassword dabaseName| gzip > $(date +%Y%m%d).sql.gz

#保留最近10天的备份
rm -f $(date +%Y%m%d –date=’10 days ago’).sql.gz

第四步:创建上传脚本

$ touch upload.sh
$ chmod +x upload.sh
内容如下:
cd /var/s3sync
export AWS_ACCESS_KEY_ID= 你的S3 的keyId
export AWS_SECRET_ACCESS_KEY=你的S3的Secret Access key
export SSL_CERT_DIR=/var/s3sync/certs
ruby s3sync.rb -r –ssl /var/backup/ yourBucket:AutoBackup

第五步: 在cron里定时运行
crontab 里面加入:

1 0 * * * /var/backup/backup.sh
1 1 * * * /var/s3sync/upload.sh

这样就不用担心服务器里面的数据了, 每天会定时备份,平时如何浏览下载删除Amazon S3 里面的备份文件呢,有很多客户端工具, Windows/Linux下面推荐使用 S3 Browser, Mac下面推荐使用 S3 hub

AddThis Social Bookmark Button

CentOS的安全配置

August 26th, 2010 VPS评测网 Posted in Linux No Comments »

一、系统安全记录文件

  操作系统内部的记录文件是检测是否有网络入侵的重要线索。如果您的系统是直接连到Internet,您发现有很多人对您的

  系统做Telnet/FTP登录尝试,可以运行”#more /var/log/secure | grep refused”来检查系统所受到的攻击,以便采取相应

  的对策,如使用SSH来替换Telnet/rlogin等。

  二、启动和登录安全性

  1.BIOS安全

  设置BIOS密码且修改引导次序禁止从软盘启动系统。

  2.用户口令

  用户口令是Linux安全的一个基本起点,很多人使用的用户口令过于简单,这等于给侵入者敞开了大门,虽然从理论上说

  ,只要有足够的时间和资源可以利用,就没有不能破解的用户口令,但选取得当的口令是难于破解的。较好的用户口令是那些

  只有他自己容易记得并理解的一串字符,并且绝对不要在任何地方写出来。

  修改改密码长度需要编译login.defs文件

  vi /etc/login.defs

  PASS_MIN_LEN 8

  3.注释掉不需要的用户和用户组

  应该禁止所有默认的被操作系统本身启动的并且不必要的账号,当您第一次安装系统时就应该这么做,Linux提供了很多

  默认账号,而账号越多,系统就越容易受到攻击。

  vi /etc/passwd

  #userdel adm

  #userdel lp

  #userdel sync

  #userdel shutdown

  #userdel halt

  #userdel news

  #userdel uucp

  #userdel operator

  #userdel games

  #userdel gopher

  #userdel ftp

  vi /etc/group

  #groupdel adm

  #groupdel lp

  #groupdel news

  #groupdel uucp

  #groupdel games

  #groupdel dip

  #groupdel pppusers

  4.口令文件

  chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。

  # chattr +i /etc/passwd

  # chattr +i /etc/shadow

  # chattr +i /etc/group

  # chattr +i /etc/gshadow

  5.禁止Ctrl Alt Delete重新启动机器命令

  修改/etc/inittab文件,将”ca::ctrlaltdel:/sbin/shutdown -t3 -r now”一行注释掉。然后重新设

  置/etc/rc.d/init.d/目录下所有文件的许可权限,运行如下命令:

  # chmod -R 700 /etc/rc.d/init.d/*

  这样便仅有root可以读、写或执行上述所有脚本文件。

  6.限制su命令

  如果您不想任何人能够su作为root,可以编辑/etc/pam.d/su文件,增加如下两行:

  auth sufficient /lib/security/pam_rootok.so debug

  auth required /lib/security/pam_wheel.so group=isd

  这时,仅isd组的用户可以su作为root。此后,如果您希望用户admin能够su作为root,可以运行如下命令:

  # usermod -G10 admin

  7.删减登录信息

  默认情况下,登录提示信息包括Linux发行版、内核版本名和服务器主机名等。对于一台安全性要求较高的机器来说这样

  泄漏了过多的信息。可以编辑/etc/rc.d/rc.local将输出系统信息的如下行注释掉。

  # This will overwrite /etc/issue at every boot. So, make any changes you

  # want to make to /etc/issue here or you will lose them when you reboot.

  # echo “” > /etc/issue

  # echo “$R” >> /etc/issue

  # echo “Kernel $(uname -r) on $a $(uname -m)” >> /etc/issue

  # cp -f /etc/issue /etc/issue.net

  # echo >> /etc/issue

  然后,进行如下操作:

  # rm -f /etc/issue

  # rm -f /etc/issue.net

  # touch /etc/issue

  # touch /etc/issue.net

  8、更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降

  不允许使用低版本的SSH协议

  vi /etc/ssh/ssd_config

  将#protocol 2,1改为

  protocol 2

  将PORT改为1000以上端口

  vi /etc/ssh/sshd_config

  Port 10000

  同时,创建一个普通登录用户,并取消直接root登录

  useradd ‘username’

  passwd ‘username’

  vi /etc/ssh/sshd_config

  PermitRootLogin no #取消root直接远程登录

  9、关闭那些不需要的服务 ,记住少开一个服务,就少一个危险。

  以下仅列出需要启动的服务,未列出的服务一律关闭:

  #setup

  acpid

  anacron

  cpuspeed

  crond

  irqbalance \\仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。

  microcode_ctl

  network

  random

  sendmail

  sshd

  syslog

  yum-updatesd

  10、启用iptables 防火墙,对增加系统安全有许多好处。设置好防火墙的规则。

  vi /etc/sysconf/iptables

  *filter

  :INPUT DROP [0:0]

  :FORWARD DROP [0:0]

  :OUTPUT ACCEPT [0:0]

  # allow local loopback connections

  -A INPUT -i lo -j ACCEPT

  # drop INVALID connections

  -A INPUT -m state –state INVALID -j DROP

  -A OUTPUT -m state –state INVALID -j DROP

  -A FORWARD -m state –state INVALID -j DROP

  # allow all established and related

  -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

  # add anymore rules here

  COMMIT

  三、限制网络访问

  1.NFS访问

  如果您使用NFS网络文件系统服务,应该确保您的/etc/exports具有最严格的访问权限设置,也就是意味着不要使用任何

  通配符、不允许root写权限并且只能安装为只读文件系统。编辑文件/etc/exports并加入如下两行。

  /dir/to/export host1.mydomain.com(ro,root_squash)

  /dir/to/export host2.mydomain.com(ro,root_squash)

  /dir/to/export 是您想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,

  root_squash禁止root写入该目录。为了使改动生效,运行如下命令。

  # /usr/sbin/exportfs -a

  2.Inetd设置

  首先要确认/etc/inetd.conf的所有者是root,且文件权限设置为600。设置完成后,可以使用”stat”命令进行检查。

  # chmod 600 /etc/inetd.conf

  然后,编辑/etc/inetd.conf禁止以下服务。

  ftp telnet shell login exec talk ntalk imap pop-2 pop-3 finger auth

  如果您安装了ssh/scp,也可以禁止掉Telnet/FTP。为了使改变生效,运行如下命令:

  #killall -HUP inetd

  默认情况下,多数Linux系统允许所有的请求,而用TCP_WRAPPERS增强系统安全性是举手之劳,您可以修

  改/etc/hosts.deny和/etc/hosts.allow来增加访问限制。例如,将/etc/hosts.deny设为”ALL: ALL”可以默认拒绝所有访问

  。然后在/etc/hosts.allow文件中添加允许的访问。例如,”sshd: 192.168.1.10/255.255.255.0 gate.openarch.com”表示

  允许IP地址192.168.1.10和主机名gate.openarch.com允许通过SSH连接。

  配置完成后,可以用tcpdchk检查:

  # tcpdchk

  tcpchk是TCP_Wrapper配置检查工具,它检查您的tcp wrapper配置并报告所有发现的潜在/存在的问题。

  3.登录终端设置

  /etc/securetty文件指定了允许root登录的tty设备,由/bin/login程序读取,其格式是一个被允许的名字列表,您可以

  编辑/etc/securetty且注释掉如下的行。

  tty1

  # tty2

  # tty3

  # tty4

  # tty5

  # tty6

  这时,root仅可在tty1终端登录。

  4.避免显示系统和版本信息。

  如果您希望远程登录用户看不到系统和版本信息,可以通过一下操作改变/etc/inetd.conf文件:

  telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

  加-h表示telnet不显示系统信息,而仅仅显示”login:”。

  5.修改相应配置文件停止ipv6。

  #vi /etc/modprobe.conf

  alias net-pf-10 off

  alias ipv6 off

  #shutdown -r now

  四、防止攻击

  1.阻止ping 如果没人能ping通您的系统,安全性自然增加了。为此,可以在/etc/rc.d/rc.local文件中增加如下一行

  :

  #echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

  2.防止IP欺骗

  编辑host.conf文件并增加如下几行来防止IP欺骗攻击。

  order bind,hosts

  multi off

  nospoof on

  3.防止DoS攻击

  对系统所有的用户设置资源限制可以防止DoS类型攻击。如最大进程数和内存使用数量等。例如,可以

  在/etc/security/limits.conf中添加如下几行:

  * hard core 0

  * hard rss 5000

  * hard nproc 20

  然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。

  session required /lib/security/pam_limits.so

  上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5MB。

  经过以上的设置,您的Linux服务器已经可以对绝大多数已知的安全问题和网络攻击具有免疫能力,但一名优秀的系统管

  理员仍然要时刻注意网络安全动态,随时对已经暴露出的和潜在安全漏洞进行修补。

  五、内核参数调整

  #vi /etc/sysctl.conf

  sysctl -w net.ipv4.conf.default.accept_source_route=0

  sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

  #sysctl -w net.ipv4.icmp_echo_ignore_all=1

  sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

  sysctl -w net.ipv4.ip_conntrack_max=65535

  sysctl -w net.ipv4.tcp_syncookies=1

  sysctl -w net.ipv4.tcp_syn_retries=1

  sysctl -w net.ipv4.tcp_fin_timeout=5

  sysctl -w net.ipv4.tcp_synack_retries=1

  sysctl -w net.ipv4.tcp_syncookies=1

  sysctl -w net.ipv4.route.gc_timeout=100

  sysctl -w net.ipv4.tcp_keepalive_time=500

  sysctl -w net.ipv4.tcp_max_syn_backlog=10000

AddThis Social Bookmark Button

vps主机linux的常见问题汇总

June 22nd, 2010 david Posted in Linux No Comments »

vps主机linux的常见问题汇总

1、执行./vp.sh run时如果提示../catalina/bin/catalina.sh:没有那个目录或文件?

答:在安装文档中,给vp.sh文件修改的是相对路径,因此,必须在.vp.sh的当前路径执行: ./vp.sh run

另外,请到vps/catalina/bin目录检查catalina.sh 文件是否可以执行,如果不能执行,请重新赋予权限。chmod 711 catalina.sh

2、在执行./vp.sh run时如果提示entityengine.xml文件没有找到,但是经过查看,的确已经修改过了,如何处理?

答:原因应该是文件格式的问题,务必要使用utf8的格式才可以。否则文件会被改坏掉。这种情况下,建议将VPS重新安装。重新安装前请先用卸载命令将VPS进行卸载,再将整个目录进行删除。

3、无法重新安装VPS,将VPS的目录删除以后,安装程序提示找到历史安装信息,但是找不到安装目录,自行中断安装?

答:应在原来的安装路径上建立一个空的VPS目录,就可以重新安装了。

4、安装oracle时,图形界面无法启动,提示GLIBC_2.0 not defned 。。。。。。?

答:没有安装linux补丁p3006854_9204_LINUX.zip。

5、安装oracle时,图形界面无法启动,提示display 。。0:0。。。。或其他JAVA_HOME等环境变量有问题?

答:因为你不是用oracle用户登陆的X-WINDOWS,而是用su命令变更过去的。会出现系统配置问题,注销后重新以oracle用户登陆即可解决。

6、在创建数据库实例的时候失败

答:没有足够的交换空间或共享内存不足,将安装目录重新删除后再安装。

7、安装oracle时,安装停留在创建数据库的41%的时候,并且提示找不到/etc/oratab

答:那是因为没有运行/opt/oracle/product/9.2.0/root.sh引起的,导致oracle用户没有/etc /oratab的权限。

8、oracle安装完成后提示代理错误,如何处理?

答:此错误不会影响VPS的安装,出现此错误可以跳过,结束oracle安装即可。

9、安装oracle成功后,数据库可以正常启动,但是监听启动错误,远程计算机无法访问数据库?

答:请先检查linux系统自带防火墙设置,可以先将防火墙关闭,再进行连接测试。在防火墙关闭的情况下如果还是无法连接,请重新配置监听。

防火墙关闭用setup命令。

10、目前linux企业版和VPS存在不兼容的问题。启动vp.sh以后,不定期的会报如下错误:
Another exception has been detected while we were handling last error.
Dumping information about last error:
ERROR REPORT FILE = (N/A)
PC = 0x0x41621c7a
SIGNAL = 11
FUNCTION NAME = (N/A)
LIBRARY NAME = (N/A)
Please check ERROR REPORT FILE for further information, if there is any.
Good bye.

答:目前此问题上在解决中,请先用redhat9进行安装。

AddThis Social Bookmark Button

cURL使用心得

March 14th, 2010 VPS评测网 Posted in Linux No Comments »

cURL

cURL是我在Linux上经常用的一个小工具,我理解它是一个“客户端”。今天记录一下我的使用心得。达人请忽略。

cURL是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER等。[更多...]

场景一:测试域名绑定

我常需要在开发环境中,测试某台服务器上的Web Server是否正确绑定了域名。比如,我希望在服务器192.168.1.10上绑定www.blogkid.net。但需要修改hosts才能看到效果,这活儿很累人。

所谓“域名绑定”,就是把host映射到对应的目录。如果手头有cURL,可以使用 -H 参数,在请求头信息中多写一个 Host 字段。就可以测试是否配置正确了。

# curl -H “Host: www.blogkid.net” http://192.168.1.10/

场景二:查看头信息

响应头信息中包含了很多东西。除了HTTP版本和响应代码,还有Server、Content-Type、Content-Length等信息,如果有写入Cookie的操作,也会体现在头信息中。

使用cURL的 -I 参数,就可以看到这些头信息。比如淘宝的:

# curl -I http://www.taobao.com/

HTTP/1.1 200 OK
Date: Sun, 14 Feb 2010 08:57:35 GMT
Server: Apache
Set-Cookie: abt=b; expires=Sun, 28-Feb-2010 08:57:35 GMT; path=/; domain=www.taobao.com
at_catetype: b (咦,这是什么?)
Set-Cookie: _lang=zh_CN:GBK; Domain=.taobao.com; Path=/
Cache-Control: max-age=3600
Expires: Sun, 14 Feb 2010 09:57:35 GMT
Vary: Accept-Encoding
Content-Type: text/html; charset=GB2312
Content-Language: cn

我昨天也修改了一下我服务器的server信息,大家感兴趣可以 curl -I http://www.blogkid.net/ 看看。

这里插一句,不建议把使用Web服务器的版本暴露出来(其实服务器信息也最好隐藏掉,或者把Apache伪装成 nginx什么的 :P )。免得突然爆出漏洞时,措手不及,被人利用。

场景三:跟踪URL跳转

如果遇到了一个多次跳转的URL,可以先用curl的 -L 参数看看,这个URL最终跳转到了什么地方。-L 参数最好配合 -I 使用,不然cURL会把最后一次请求获得的数据输出到控制台。

没有合适的URL拿来做例子,意会一下吧 :D

场景四:发送压缩的请求

cURL提供了一个 –compress 参数,可以用来发送支持压缩的请求。但使用了–compress之后,虽然传输过程是压缩的,cURL的输出还是解压之后的,难以看到效果。

我一般用 -H 参数,自己写一个 Accept-Encoding 字段在头信息中。

curl -H “Accept-Encoding: gzip” http://www.blogkid.net/

如果直接运行上面的命令,会得到一堆乱码,因为cURL输出的内容,是压缩后的数据。不妨在后面接一个gunzip试试。

curl -H “Accept-Encoding: gzip” http://www.blogkid.net/ | gunzip

使用gunzip解压之后,信息又被还原了。前几天我写的压缩话题(1,2),就用了类似的方法来测试。

场景五:忽略证书错误

平日上网,遇到证书错误一定要小心。但我在工作中,经常需要用自签的假证书搭建开发环境。cURL在遇到证书错误时罢工,使用 -k 参数就可以让它不做证书校验。
可转载 但必须以超链接形式标明文章原始出处和作者信息
网址: http://www.blogkid.net/archives/2668.html

AddThis Social Bookmark Button

Linux各发行版本 优缺点 简介

November 23rd, 2009 VPS评测网 Posted in Linux No Comments »

Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:

Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的 Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)

Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有 Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo 被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美 FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux 发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。

最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支: stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。

下面给为选择一个Linux发行版本犯愁的朋友一些建议:
如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。
如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!
如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。
如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。
如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。

AddThis Social Bookmark Button