搭建一个大型网站架构的实验环境(补充篇)

如何在VMware中实现host方式的客户机访问外网?

原理:客户机组成的子网通过VMware Network Adapter VMnet1共享一个网络连接上网。

假设你通过家庭拨号的路由或是公司的固定IP上网,那么我们可以进行如下设置来达到我们目的。

首先把你用来上网的那块网卡设置为共享模式。
locallink
接着查看你的用来上网的那块网卡设置
C:\> ipconfig /all
o_2
那么你的VMware Network Adapter VMnet1可以这么设:
ip_address
说明:192.168.1.1 为你的路由器的IP或公司的网关,这里写你能上网的那网卡IP(192.168.1.3)也可以。

好,现在对你的VMware的Freebsd里面设置
# ee /etc/rc.conf
加入:
defaultrouter 192.168.10.10

# ee /etc/resolv.conf
加入:
nameserver 192.168.1.1

现在就应该可以上网了, 口水无凭,我们来验证一下吧!

进入FreeBSD
ping_sina.com

家里的网速有点慢呀,太不争气了,哈!!!

搭建一个大型网站架构的实验环境(集成篇)

八、集成篇

折腾了这么久,4台服务器终于配置完成了,该到我们振奋的时刻了, 现在我们可以开始做实验了。

首先,我们必需对4台虚拟机做下调整:
a_1
我的机器是IBMT43 2G内存,大家根据自己的机器改吧!特别提示是:网卡都改成Host-only模式!这样我们刚才配置的虚拟域名才能有效。因为我们的rd.bj根本就是个不合法的域名,哈!!!

还有就是对你的VMware Network Adapter VMnet1进行设置。
a_2 a_3
好了,让我们的虚拟机都舞动起来吧!!!

启动顺序最好为
web -> squid01 ->squid02 -> proxy

a_4

大家可以观察各服务器的日志,来判断实验的效果。

好了, 就写这么多吧,希望大家批评指正,在我不足的地方给与指点和补充,谢谢!!!

公司快要搬家了, 我也得开始收拾收拾我那一亩三分地了,哈!!!

最后祝大家新年快乐!!!

一缕阳光
zhulinywj@gmail.com

搭建一个大型网站架构的实验环境(Nginx代理服务器篇)

七、Porxy服务器配置
Proxy服务器(192.168.10.20)主要是负责终端客户的接入,为两台Squid缓存服务器提供均衡负载。现在我们就开始吧!

服务器网络配置
# ee /etc/rc.conf
ifconfig_lnc0=”inet 192.168.10.20 netmask 255.255.255.0″
defaultrouter=”192.168.10.10″
hostname=”proxy.rd.bj”

# ee /etc/hosts
192.168.10.20    proxy.rd.bj

# ee /etc/resolv.conf
nameserver 192.168.10.40

网络环境配置好后,我们开始安装Nginx,在那里,告诉我
# whereis nginx
nginx: /usr/ports/www/nginx
# make config
ng_1
# make showconfig   #我的配置选项
===> The following configuration options are available for nginx-0.5.34:
DEBUG=off “Enable nginx debugging”
HTTP_MODULE=on “Enable HTTP module”
HTTP_ADDITION_MODULE=on “Enable http_addition module”
HTTP_DAV_MODULE=on “Enable http_webdav module”
HTTP_FLV_MODULE=on “Enable http_flv module”
HTTP_PERL_MODULE=on “Enable http_perl module”
HTTP_REALIP_MODULE=on “Enable http_realip module”
HTTP_REWRITE_MODULE=on “Enable http_rewrite module”
HTTP_SSL_MODULE=on “Enable http_ssl module”
HTTP_STATUS_MODULE=on “Enable http_stub_status module”
HTTP_SUB_MODULE=on “Enable http_sub module”
MAIL_MODULE=off “Enable IMAP4/POP3/SMTP proxy module”
MAIL_IMAP_MODULE=off “Enable IMAP4 proxy module”
MAIL_POP3_MODULE=off “Enable POP3 proxy module”
MAIL_SMTP_MODULE=off “Enable SMTP proxy module”
MAIL_SSL_MODULE=off “Enable mail_ssl module”
WWW=on “Enable html sample files”
===> Use ‘make config’ to modify these settings
# make install clean
又开始等待了 … NNN …
又看看了看播客,终于完了,现在开始配置吧!

# cd /usr/local/etc/nginx
# ee nginx.conf #更改配置文件
我更改后的配置文件如下:
user www www;
worker_processes 1;

error_log /var/log/nginx_error.log;

pid        /var/run/nginx.pid;

events {
use kqueue;
worker_connections 65535;
}

http {
include       mime.types;
default_type application/octet-stream;

log_format main ‘$remote_addr – $remote_user [$time_local] $request ‘
‘”$status” $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx_access.log main;

client_header_timeout 3m;
client_body_timeout    3m;
send_timeout           3m;

sendfile       on;
tcp_nopush     on;
tcp_nodelay    on;

keepalive_timeout 65;

client_header_buffer_size    1k;
large_client_header_buffers 4 4k;
output_buffers   1 32k;
postpone_output 1460;

gzip on;
gzip_min_length 1100;
gzip_buffers     4 8k;
gzip_types       text/plain;

upstream mysvr {
server 192.168.10.30:3128 weight=5;
server 192.168.10.31:3128 weight=5;
}

server {
listen       80;
server_name www.rd.bj;

charset gbk;

access_log /var/log/nginx_host.access.log main;

location / {
proxy_pass      http://mysvr/;

proxy_redirect             off;
proxy_set_header           Host $host;
proxy_set_header           X-Real-IP $remote_addr;
proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size       10m;
client_body_buffer_size    128k;
proxy_connect_timeout      90;
proxy_send_timeout         90;
proxy_read_timeout         90;
proxy_buffer_size          4k;
proxy_buffers              4 32k;
proxy_busy_buffers_size    64k;
proxy_temp_file_write_size 64k;
}

location /nginx {
stub_status             on;
access_log              on;
auth_basic              “NginxStatus”;
auth_basic_user_file    /usr/local/etc/nginx/htpasswd;
}
}
}
保存配置文件退出后,现在对刚才设置的文件进行验证。
# rehash
# nginx -t
2007/12/27 15:42:52 [info] 25243#0: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
2007/12/27 15:42:52 [info] 25243#0: the configuration file /usr/local/etc/nginx/nginx.conf was tested successfully

Very good,没问题了,我们在配置文件中还设置了查看Nginx的状态信息,所以,现在我们还必需生成一个htppasswd文件,这时候我们得用到 Apache的htpasswd 工具了, 我们这台代理服务器上没有Apache,现在只能依靠web服务器的了,去那生成一个复制过来。
生成htppasswd文件的方法:
# htpasswd -c /tmp/htpassswd nginx
输入两次密码就完成了,然后把生成好的htpasswd文件拷贝到proxy的机器的/usr/local/etc/nginx目录下就行了。
如何在两台机器之间拷贝文件呢?scp出场了 …
# scp /tmp/htpassswd root@192.168.10.20:/usr/local/etc/nginx

好了, 现在万事具备了,现在启动她吧!!!
# nginx
# ps -aux | grep nginx
root    804 0.0 3.4 4908 4288 ?? Ss    4:49PM   0:00.00 nginx: master process nginx (nginx)
www     805 0.0 13.8 18004 17404 ?? S     4:49PM   0:00.02 nginx: worker process (nginx)
root    807 0.0 0.3   536   416 p0 RL+   4:49PM   0:00.00 grep nginx

现在用浏览器查看一下Nginx的状态,http://192.168.10.20/nginx 输入用户名和密码进入,如图:
ng_2
好了,Nginx也配置完成了。

搭建一个大型网站架构的实验环境(Web服务器篇)

五、Web服务器的配置
Web服务器(192.168.10.40)同时提供Web服务和DNS服务。所以这里我们需要安装和配置Apache和Bind。
服务器网络配置
# ee /etc/rc.conf
ifconfig_lnc0=”inet 192.168.10.40 netmask 255.255.255.0″
defaultrouter=”192.168.10.10″
hostname=”web.rd.bj”

# ee /etc/hosts
192.168.10.40    web.rd.bj

配置好网络环境后,我们先来配置DNS服务器。在默认的Freebsd的安装过程中已经安装好了Bind,我们现在只需修改配置文件即可。
我们现在先虚拟一个域名:rd.bj来作为整个测试环境的根域名。

# cd cd /etc/namedb/
# ee named.conf
在listen-on中增加监听IP:192.168.10.40
listen-on       { 127.0.0.1; 192.168.10.40; };
然后在最后加入:
zone “rd.bj” {
type master;
file “master/rd.bj”;
};
zone “10.168.192.in-addr.arpa” {
type master;
file “master/10.168.192.in-addr.arpa”;
};

正解档的设置
# ee master/rd.bj
加入:
$TTL    172800
@       IN      SOA     rd.bj. root.rd.bj. (
2005100301 ; Serial
172800 ; Refresh
900     ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN            NS              rd.bj.
IN            A               192.168.10.40
web       IN            A               192.168.10.40
squid01   IN            A               192.168.10.30
squid02   IN            A               192.168.10.31
proxy      IN            A               192.168.10.20
www      IN          A                  192.168.10.20
开头的 @ 代表网域名称 rd.bj,IN 表示为 internet 的数据型态。
SOA 后面接的是rd.bj,表示这台rd.bj机器是rd.bj网域中的主要名称服务器。而root.rd.bj表示管理者的Email 是 root@rd.bj。
正解档中的内容中除了第一行外,每一行的格式为 [name] [ttl] [class] [type] [data]。以下是每个字段的说明:
name:可以是网域名称或是主机名称,如果不写的话表示与上一个设定相同。
ttl:是数据要存活的时间 (time to live),也就是 cache server 将保留在它的 cache 中的时间。如果不写的话表示和 SOA 中的设定相同。
class:指定网络的类型,这个字段应该都是使用 IN 代表 internet。
type:设定该笔数据的型态,例如:MX, A, CNAME, PTR, NS 等。
data:就是实际设定数据的部份。
Serial:这个设定的版本,这次修改的数字必须比上次的数字大,也就是每次修改这个档时,都要将这个数字提高,这样别的服务器才会将数据更新。一般而 言,我们会以日期加上几位的数字来表示,如 2004040301 表示 2004 年 4 月 3 日的第一次设定。
Refresh:这个数字是次要名称服务器要多久和主要名称服务器比对数据并更新。
Retry:如果比对失败,要在几秒后再向主要名称服务器查询。
Expire:表示如果次要名称服务器一直连不上主要名称服务器,这笔数据要多久无法比对便失效。这个字段一样是以秒计算。
Minimum:表示别的快取服务器可以将你的设定存放多久。

反解档的设置
# ee master/10.168.192.in-addr.arpa
加入:
$TTL    172800
@       IN      SOA     rd.bj. root.rd.bj. (
2001080301 ; Serial
172800 ; Refresh
900     ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN       NS        rd.bj.
40       IN       PTR       rd.bj.
40       IN       PTR       web.rd.bj.
30       IN       PTR       squid01.rd.bj.
31       IN       PTR       squid02.rd.bj.
20       IN       PTR       proxy.rd.bj
20       IN       PTR       www.rd.bj

当我们设置好正解档和反解档后,我们执行一下命令产生一个localhost的反解档:
# cd /etc/namedb
# sh make-localhost

最后再修改文件/etc/resolv.conf
# ee /etc/resolv.conf
设置成:
nameserver 127.0.0.1
这样就可以让此台服务器成为这个网域中第一台DNS服务器。

现在我们就配置好了我们的DNS服务器,启动她吧!!!
# /etc/rc.d/named start
我们可以使用下面的指令查询信息:
# tail /var/log/messages
查看到没有错误信息后,我们使用nslookup命令来验证一下我们的设置。
# nslookup web.rd.bj

这里有个情况要提醒一下大家,由于我们现在squid01,squid02和proxy三台服务器还没有配置,所以在这里测试可能会出一下状况,所以我们可以再把其他3台服务器设置好了以后,再一起测试。

测试完成以后(只要是messages文件中没有关于DNS的错误信息,我们这里就先假定我们的配置是正确的),然后我们来设置开机启动DNS服务。
# ee /etc/rc.conf
加入:
named_enable=”YES”

下班了, 回家接着写吧!!! 万恶的北京交通 … 嘟嘟嘟 … 堵堵堵

好,我们接着干吧!

我们现在开始安装Apache服务器,先找找whereis
# whereis apache22
apache22: /usr/ports/www/apache22

Let’s go ,找她去 …
# cd /usr/ports/www/apache22
# make config     #配置安装选项
y2phOmVT1xZ6bGdkqwgl7TQciru-sqdc_QkX4Fa6VLr9MntSO8DHCtT-A4TENdIYMhPFFI-UTP5j1O6pK8jVyvclAbq_We1BEZy8Ipd_w3XwIM

大家可以根据实际用途进行选择安装,因为我这里建立的是一个实验环境,我把能装上的都装上,目的是以后可以把个个模块都配置看看效果,在这里先预先都装好, 以备不时之需。
如果大家想把Apache以worker模式运行,则需要修改Makefile文件。
# ee Makefile
将WITH_MPM?=      prefork # or worker, event, itk改成:
WITH_MPM?=      worker # or worker, event, itk
# make install clean
OK,耐心等待,讲个笑话,大家轻松一下吧!
一日,老师上机实践课时出了一道题让大家用C编程。其最后结果要和他的答案一致。
全班同学在规定时间无解,又近午饭,众人更是头昏眼花。忽一同学叫老师,声他成了。
老师前去一看,答案果同。就放其出去。
众同学暗想,该人水平一般,何故今日高水平发挥。于是找其源程序一看。
只有一句“printf(“XXXXX”);”
众人大哗。

漫长的等待,终于安装完成了。
# rehash
# pkg_info | grep apache
apache-worker-2.2.6_3 Version 2.2 of Apache web server with worker MPM.
# apachectl -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_so.c
现在我们对Apache进行简单的配置,对Apache进行更深入的调优,我们在这里暂且不做讨论,等我们的实验环境都搭建好了后, 大家可以根据自己的业务需求进行调整。
# cd /usr/local/etc/apache22
# ee httpd.conf
更改以下参数:
Listen 192.168.10.40:80
ServerAdmin admin@rd.bj
ServerName web.rd.bj:80
其他都不变,保存退出。
设置Apache开机启动:
# ee /etc/rc.conf
加入:
apache22_enable=”YES”
保存退出。
现在我们启动一下Apache,看看我们的安装是否正确。
# apachectrl start

浏览器访问http://192.168.10.40
y2p39_A_4RHYI7oPt7dA_Ql6NLpiJhaSXnnQcTUoOCpQplskbADKujNMDYe8WnrR5060H9wS6-T2b92BrNbiboX46l3McX7MlRraYzcG31Fd8Y

very good,我们的Apache就先告一段落了。现在我们快马加鞭,配置我们的squid缓存服务器。

搭建一个大型网站架构的实验环境(FreeBSD系统优化篇)

四、FreeBSD系统的优化

升级完了ports和src后,基础搭建就算完成了,现在我们就开始编译内核吧。

进入内核配置文件目录
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/IM.RD.BJ
# ln -s /root/kernels/IM.RD.BJ
IM.RD.BJ为你新内核配置文件的名字 ,可以自己取个合适的。
编译内核
# cd /usr/src
# make buildkernel KERNCONF=IM.RD.BJ
安装内核
# make installkernel KERNCONF=IM.RD.BJ

编译内核之前可以配置自己的内核文件 IM.RD.BJ ,使她符合自己的要求。
具体的内核说明可以参考:
http://docs.freebsd.org/doc/6.2-RELEASE/usr/share/doc/zh_CN.GB2312/books/handbook/kernelconfig-config.html
具体的内核配置文件可以参照我的另外一篇文章《Freebsd6.2 编译安装内核》。

编译完成以后,我们现在的工作就是对系统一些参数进行优化调整。
# ee /boot/loader.conf
加入:
kern.ipc.maxsockets=65535
kern.maxusers=256
kern.ipc.nmbclusters=32768
kern.ipc.nsfbufs=2496
# ee /etc/sysctl.conf
加入:
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.tcp.drop_synfin=1
kern.maxvnodes=8446

kern.maxfiles=65536
kern.maxfilesperproc=32768
kern.ipc.somaxconn=32768
kern.ipc.shmmax=67108864 # 64MB
kern.ipc.shmall=32768
kern.ipc.shm_allow_removed=0
kern.coredump=1
net.inet.ip.portrange.last=65535

net.inet.tcp.msl=2500
net.inet.udp.blackhole=1
net.inet.udp.log_in_vain=1
net.inet.tcp.always_keepalive=1
net.inet.udp.blackhole=1
net.inet.raw.maxdgram=65536
net.inet.raw.recvspace=65536

net.inet.tcp.blackhole=2
net.inet.tcp.delayed_ack=1
net.inet.tcp.inflight.enable=1
net.inet.tcp.inflight.debug=0
net.inet.tcp.inflight.rttthresh=10
net.inet.tcp.inflight.min=6144
net.inet.tcp.inflight.max=1073725440
net.inet.tcp.inflight.stab=20

net.local.stream.sendspace=65536
net.local.stream.recvspace=65536
net.inet.tcp.sendspace=32768
net.inet.tcp.recvspace=65536
net.inet.udp.maxdgram=24576
net.inet.udp.recvspace=49152

net.inet.ip.rtexpire=3600
net.inet.ip.rtminexpire=2

net.inet.ip.random_id=1
net.inet.icmp.icmplim=100
net.inet.icmp.icmplim_output=1
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1

net.inet.tcp.keepidle=600000
net.inet.ip.redirect=0
net.isr.direct=1
net.inet.ip.intr_queue_maxlen=4096

kern.ipc.shm_use_phys=1
net.inet.ip.fastforwarding=1

vfs.hirunningspace=4194304
vfs.ufs.dirhash_maxmem=33554432 # 32MB
vfs.write_behind=0
security.bsd.see_other_uids=1
security.bsd.see_other_gids=1

设置完成以后reboot机器。
如果要不重启机器加载改动的参数还可以使用:
# /etc/rc.d/sysctl reload

参数设置的具体说明可以参考《中国最完整的sysctl.conf优化方案》,很详细,在此感谢剑心通明的分享。

好了,参数优化好了以后,我们现在还要考虑到以后要用ports方式安装软件,这些软件都是以源码形式安装的, 所以我们这里得做两方面的优化工作,第一是优化编译器,也就是GCC的编译指令,这样可以提高软件的效率,第二就是为ports下载软件加加速了。
系统安装完成之后,默认是没有make.conf文件的,我们自己新建一个就可以了。(自力更生,丰衣足食,哈!)

首先我们调整一下GCC的编译参数。
# touch /etc/make.conf
# ee /etc/make.conf
加入:
CFLAGS= -march=pentium-m -O2 -pipe -msse2 -mmmx -mfpmath=sse
CXXFLAGS= ${CFLAGS}
其中-march是指你机器的CPU,不知道CPU型号可以用下面的方法来查,我的是IBMT43,结果如下:
# sysctl hw.model
hw.model: Intel(R) Pentium(R) M processor 1.86GHz
以下是对照表,按照你的CPU型号改就OK了(这里只提供了CPU的对照,没有加上参数,网上有很多加好参数的,其实未必适合,所以大家看看这篇文章,自己加吧,这样放心,错了也知道原因。参考金步国的《GCC编译优化指南》)。
i386 (Intel)
CFLAGS= -march=i386
CXXFLAGS+= -march=i386
i486 (Intel)
CFLAGS= -march=i486
CXXFLAGS+= -march=i486
Pentium 1 (Intel)
CFLAGS= -march=pentium
CXXFLAGS+= -march=pentium
Pentium MMX (Intel)
CFLAGS= -march=pentium-mmx
CXXFLAGS+= -march=pentium-mmx
Pentium PRO (Intel)
CFLAGS= -march=pentiumpro
CXXFLAGS+= -march=pentiumpro
Pentium II (Intel)
CFLAGS= -march=pentium2
CXXFLAGS+= -march=pentium2
Celeron (Mendocino), aka Celeron1 (Intel)
CFLAGS= -march=pentium2
CXXFLAGS+= -march=pentium2
Pentium III (Intel)
CFLAGS= -march=pentium3
CXXFLAGS+= -march=pentium3
Celeron (Coppermine) aka Celeron2 (Intel)
CFLAGS= -march=pentium3
CXXFLAGS+= -march=pentium3
Celeron (Willamette?) (Intel)
CFLAGS= -march=pentium4
CXXFLAGS+= -march=pentium4
Pentium 4 (Intel)
CFLAGS= -march=pentium4
CXXFLAGS+= -march=pentium4
Eden C3/Ezra (Via)
CFLAGS= -march=i586 -m3dnow
CXXFLAGS+= -march=i586 -m3dnow
K6 (AMD)
CFLAGS= -march=k6
CXXFLAGS+= -march=k6
K6-2 (AMD)
CFLAGS= -march=k6-2
CXXFLAGS+= -march=k6-2
K6-3 (AMD)
CFLAGS= -march=k6-3
CXXFLAGS+= -march=k6-3
Athlon (AMD)
CFLAGS= -march=athlon
CXXFLAGS+= -march=athlon
Athlon-tbird, aka K7 (AMD)
CFLAGS= -march=athlon-tbird
CXXFLAGS+= -march=athlon-tbird
Athlon-tbird XP (AMD)
CFLAGS= -march=athlon-xp
CXXFLAGS+= -march=athlon-xp
Athlon 4(AMD)
CFLAGS= -march=athlon-4
CXXFLAGS+= -march=athlon-4
Athlon XP (AMD)
CFLAGS= -march=athlon-xp
CXXFLAGS+= -march=athlon-xp
Athlon MP (AMD)
CFLAGS= -march=athlon-mp
CXXFLAGS+= -march=athlon-mp

接着我们来调整ports的下载,这几个网站比较快,也是大多数网友推荐的:
MASTER_SITE_OVERRIDE?=\
http://ports.hshh.org/${ DIST_SUBDIR }/\
http://ports.cn.freebsd.org/${ DIST_SUBDIR }/\
ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${ DIST_SUBDIR }/
MASTER_SITE_OVERRIDE?=${ MASTER_SITE_BACKUP }
最后我们的ports也来玩玩多线程下载,有请axel出场了! 咚咚咚…
不知道axel在ports的那个位置,可以用下面指令找找:
# cd /usr/ports
# make search key=axel
Port:   axel-1.0b
Path:   /usr/ports/ftp/axel
Info:   A download accelerator
Maint: ports@FreeBSD.org
B-deps: gettext-0.14.5_2 gmake-3.81_1 libiconv-1.9.2_2
R-deps: gettext-0.14.5_2 libiconv-1.9.2_2
WWW:    http://wilmer.gaast.net/main.php/axel.html
其实还有一个更方便的方法就是whereis
# whereis axel
axel: /usr/ports/ftp/axel
现在我们知道位置在那了,就去找她吧,小样,你藏的再深,俺也能把你找出来,我搜搜搜,查查查…
# cd /usr/ports/ftp/axel
# make install clean
等待她安装完成吧,因为她还要安装一些依赖包,可能会慢一点,耐心等待吧,或出去咪根烟也行(抽烟不好,在这还是不推荐了,还是站起来活动一下,看看绿色,这样环保又健康。毛爷爷告诉我们:“身体是革命的本钱”,对于IT从业者更是如此呀,感慨!!!)
安装完成以后,我们得设置一下,她才能为我们工作,还是到make.conf进行设置。
# ee /etc/make.conf
加入:
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes

好了,到现在为止,我们的系统环境就安装和配置好了。因为我们要配置4台服务器,为了简单方便,我们复制3份虚拟机,分别进行相关应用软件的安装。留这个作为备份,以便系统被破坏了,可以替换,省得重新安装。这样方便,虚拟机就是好!

搭建一个大型网站架构的实验环境(FreeBSD系统设置篇)

三、FreeBSD系统的设置

系统安装完成了,现在我们开始对他进行设置。
刚安装完成的系统是没有密码的,我们用root直接登录进去。
# sysinstall
对系统进行设置。
选择【Configure】进入
【Root Password】设置root密码。
【Networking】选择【sshd】启用ssh远程登录,这样我们就可以在终端上对系统进行设置了, 不用在VMware里面来回切换,方便!
选择【Exit】退出设置界面。

系统网络设置
设置前,可以先查看一些网卡号
# ifconfig -a
lnc0: flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
# ee /etc/rc.conf
加入:
ifconfig_lnc0=”inet 192.168.10.20 netmask 255.255.255.0″ # IP地址和子网掩码
defaultrouter=”192.168.10.10″ # 默认网关
hostname=”www.rd.bj” # 机器名称
# ee /etc/hosts
加入:
192.168.10.20     www.rd.bj   # 将IP和机器名做映射
# ee /etc/resolv.conf
加入:
nameserver 127.0.0.1

好了,基本的网络设置已经完成了, 我们reboot一下机器让设置生效。接着我们就可以在终端上操作了。

配置SSH服务,目的是让root用户能够登录。(因为这是一个实验性质的系统,所以让root登录,如果是生产系统还是要禁止这么做,可以用个权限较小的用户登录,用su转到root。
# ee /etc/ssh/sshd_config
将PermitRootLogin设置成yes
将UseDNS设置成no,目的是禁止DNS查询,这样做SSH登录的时候会比较快。
将UsePAM设置成yes
# /etc/rc.d/sshd restart       #重启ssh服务
上述的配置是使用密码的方式登录的, 这对于一个实验系统来说是没有什么关系的。但如果用于生产系统,安全隐患还是比较大,在这里,我做一点补充,使用密钥认证的方式登录系统。

首先,我选择的SSH终端工具为:SecureCRT,可以用她来生产公钥。
ssh_1

然后根据向导生成所需的文件,密钥类型选择【DSA】。请牢记你的在此过程中输入的通行短语(其实就是你以后登录的时候要输入的,就相当于你自己设置的一个密码)。
这个向导完成之后,会生成两个文件,默认是Identity和Identity.pub。

现在开始对服务器进行配置,有了上面密码方式登录的基础,我们首先将Identity.pub上传到服务器,这里我们可以借助另一个工具 SecureFx,她和SecureCRT合作的非常好。上传的目录为/root/.ssh/(因为我们要用root的登录,所以要上传到root的家目 录),如果家目录里面没有.ssh目录,可以自己建一个。
# mkdir /root/.ssh
将上传上来的公钥转换成Openssl格式的公钥,并导入到authorized_keys文件中
# ssh-keygen -X -f Identity.pub >> authorized_keys
# chmod 0640 authorized_keys     #仅允许属主读写
# rm -rf Identity.pub
# ee ee /etc/ssh/sshd_config
将PubkeyAuthentication设置成yes
将AuthorizedKeysFile .ssh/authorized_keys前的#号去掉
# /etc/rc.d/sshd restart       #重启ssh服务

好了,现在在回到SecureCRT终端,重新登录一下看看,她会提示你输入通行短语。SSH到此就配置结束了,我想使用密钥认证的方式应该可以使我们放心一点。

网络问题搞定了,接下来,我们就要跟系统进行升级和编译内核了,首先我们来对系统进行升级。
系统的升级(src和ports)
要对系统升级,我们必需要使用到一个软件:cvsup,我们可以利用光盘安装(在第二张光盘里),这样节省时间。
# sysinstall
选择【Configure】进入
【Packages】 -> 【CD/DVD】 -> 【devel】
选中 [X] cvsup-without-gui-16.1h_2
再选择【OK】,返回到上一界面,选择【Install】,等待安装完成。
安装完CVSUP后 默认是装在了/usr/local/bin 下的 cvsup
# rehash

cvsup装好后,我们就可以来升级一下我们系统的src和ports目录了。
# cd /usr/share/examples/cvsup
# ls
cvs-supfile                 # 升级CVSUP自身的
doc-supfile                # 操作系统文档升级文件
gnats-supfile             # FreeBSD BUG数据库
ports-supfile              # Ports升级文件
stable-supfile             # 稳定版的FreeBSD升级
standard-supfile        # 最新版的FreeBSD升级

我们首先对ports进行升级,配置ports-supfile文件

# ee ports-supfile

更改一下部分:
*default host=cvsup.cn.FreeBSD.org     #CVS服务器,选择一个快点服务器节省时间
*default base=/usr                             # cvsup接收文件的存放目录
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
# 更新全部Ports,这个要注意一下,默认值就是它,将会更新全部Ports,
# 若只需要更新某个Ports目录,在前面加#,将它注释掉
# 将ports-all 注释后,将后面需要更新的目录前面的#去掉,这样就是单个更新
ports-all
设置好配置文件后,保存退出后执行:
# cvsup -g -L 2 ports-supfile
更新好ports后,我们就用同样的方法更新src。为了服务器的稳定性,我们这里选择stable-supfile作为我们的更新配置文件。
按照上面相同的方法更改配置文件中的参数,保存退出后执行:
# cvsup -g -L 2 stable-supfile

具体的内容,可以参见我的另外一篇文章《Freebsd6.2 使用cvsup升级ports和src》,里面比较详细。

搭建一个大型网站架构的实验环境(FreeBSD系统安装篇)

二、FreeBSD系统的安装

我们这里用下载的ISO文件安装,将ISO文件放入虚拟机光驱。

fb_1

启动虚拟机
fb_2

简洁的欢迎界面出现叻,回车就行了。
fb_3

选择我们伟大的祖国【China】
fb_4

默认即可
fb_5

我们要最小化安装FreeBSD系统,这里我们选择自定义【Custom】
fb_6

进入安装配置界面
fb_7

选择【Partition】,给系统分配磁盘空间。
fb_8
按【A】将所有硬盘空间给FreeBSD。
fb_9
在默认情况下,系统会预留一部分空间,在这里没有必要,我们可以按【Shift+F】将保留空间删除。选择【No】就可以删除了。然后按【Q】返回上一级界面。
fb_10
接着选择【Label】进行分区,我们这里接受系统的默认配置(我觉得这个已经挺好了),按【A】,完成分区。
fb_11
然后按【Q】返回上一级界面。
接着选择【Distributions】中的【Minimal】最小化安装。
fb_12
接着进入【Custom】选择其他的安装文件,【base】【kernels】【src】【ports】,其中【src】目录全部选中。
fb_13
然后选择两次【Exit】,退回到主界面。
接着选中【media】,选择安装媒介,我们这里用【CD/DVD】
fb_14
选择【OK】回到主界面。

选择【Commit】开始安装。等待一段时间以后,系统安装完成,提示我们是否要看下配置信息。
fb_15
选择【No】,回到主界面后选择【Exit】,回到主界面后选择【X Exit Install】
fb_16
将ISO文件从光盘中取出,再选择【Yes】系统安装完成。

系统启动完成以后的界面
fb_17