服务器 频道

FreeBSD 5.2.1R Web Server架设实例

    【IT168 服务器学院】本文献给和我一样初次接触FreeBSD的朋友们。

    我这个人比较倔,但是一直以来自信心还可以。由于想装一个web server,多方打听知道freebsd在这方面还比较强,于是下定决心准备搞一个自己的freebsd web server出来。以前都是玩ms的windows系列,开始搞freebsd,当然有些摸不着门,下面就是我关于freebsd的一些初步经验,希望能对后来的新新人有所帮助。我也是freebsd的菜鸟,大家共勉吧。下面的文字,对我来说也就是笔记,我害怕将来我再装FB WEB SERVER的时候,某些环节会有疏漏,故成此文,还请行家斧正。

    一、基本要求
    要玩好freebsd这种unix类操作系统,我觉得首先需要有下面两个基本能力,否则的确会非常艰难。
   1. 良好的英文能力。freebsd虽然也有图形界面(GUI),但如果是做服务器,更多是靠命令行(如同msdos)操作,在我这里web server的例子里,几乎是纯命令行作业。所以英文能力是很重要的。
    2. unix基础。基本的unix指令要知道,比如 ls、pwd、cp、man、rm、mkdir、rmdir 等。尤其要知道 man 命令的作用。还要知道当屏幕显示过多内容的时候,需要用到scroll lock和more指令。下面简单举例说明几个指令的用法。
    ls (列目录,类似于msdos的dir)
   ls | more (列目录,使用管道和more命令分屏显示过多的内容)
    cp abc abc_bak (文件的拷贝,类似于msdos的copy)
    cp -R abc abc_bak(目录的拷贝)
    rm -R abc/* (子目录abc下的所有文件及子目录删除,类似于msdos的del,但允许加-R选项针对子目录操作)
    man ls (查ls命令的详细说明)
    mv abc ../abc_bak (移动并改名abc为父目录下的abc_bak,abc可以为文件也可以为子目录)   
    3. 有一本freebsd handbook,纸版的当然好,电子版的也不错:     http://www.freebsd.org.cn/snap/doc/zh_CN.GB2312/books/handbook/

    二、安装系统前的一些声明
    首先声明,我是用的最新的FREEBSD5.2.1RELEASE iso格式光盘安装的,现在刻录机遍地都是,各位从网上下载了iso自己刻一个光盘来装FREEBSD,应该不是什么难事情。
    其次,FREEBSD的完整安装升级需要一个良好的网络环境,即便你有光盘,最终很多工作还需要到互联网上进行,所以你必须有一个较快的互联网连接。

    三、安装过程及安装中的注意事项
    1. 操作系统的安装
    虽然前面说了很多有关FREEBSD的艰难,但其实如果你有较好的英文能力,你会发现装FREEBSD的内核系统还是很简单的,总共花不了30分钟。而且FREEBSD5.2.1足够先进了,我的服务器很多新硬件没有遇到任何问题全部正确识别了。
    FREEBSD5.2.1的光盘共4张,其中一张命名为BOOT,其对应下载时的ISO名为DISK1(注意不是BOOTONLY那张),BOOT光盘放进光驱,bios设置光驱启动,重启机器后,机器会从光驱启动并进入FREEBSD5.2.1的内核并自动启动光盘里的sysinstall程序。该程序是文本图形界面,也很友好。
    首先,选择Standard安装,这也是推荐的安装模式。还有一种mini安装,安装出来的系统是最小的,运行效率最高,但是可能你会面临更多的调整。
    A. 硬盘分区及unix分区配额分配
    我作为初学者,选择了standard模式安装,随后进入了FREEBSD的fdisk程序界面,和msdos的fdisk很像,但屏幕下方的提示更多更友好。如果你有两块或更多的硬盘,那么fdisk会先问你需要在那个硬盘上做分区。由于我是做服务器,不存在双系统等问题,所以用上下箭头选择已有的分区并按d键全部删除这些已有的分区使其成为空盘,再按a自动分配为一个大分区,最后按q退出fdisk,就这么简单地分好了一个硬盘的区。
    然后sysinstall会提示你的服务器是否需要使用BootMgr,如果你不需要多重引导,那么可以选Standard,我在这个地方选择的是BootMgr——允许多重引导。
    随后使用Disklabel创建unix分区并分配分区空间。该画面和fdisk有些类似,你可以用上下方向键选择需要的分区,然后屏幕下方的提示按键并按照自己的要求划分分区。我在这里采用了默认的方法:选a自动划分,选q退出。特别提示:mysql安装默认会安装到/var分区,如果你不想改变mysql的默认安装,那么你在这里应该把自动划分出来的/var分区调整一下,调整的更大些。/var分区默认只有256M,稍微大的数据库就不够用了。我在下面的mysql安装中没有使用默认的安装分区/var,而是改到了/usr分区,所以我在这里不需要改动任何分区的大小。
    B. 安装过程的提示选择
    分区及配额完成后,随后就会出现软件包选择画面,你可以选择Developer或者是其他什么模式。作为web服务器,我觉得选Developer好些,不过我当时不太明白,什么也没选,直接选了EX99v。其实没选也不要紧,后面还有机会。
    随后的画面是提示你从什么介质安装,我们这里当然是自己烧好的ISO光盘了——选CD/DVD,机器都没起来,别的介质其实也选不成。
    选了介质之后,画面提示:
    User Confirmation Requested
    Last Chance! Are you SURE you want to continue the installation?
    当你确定后,之前的分区设置即将生效,硬盘中的原有东西将会被删除,并且开始安装初始的内核系统。
    初始内核的安装是很快的(10分钟),而且具有多数流行硬件,我用的FB5.2.1很顺利认出了所有硬件。
    随后开始安装后的设置,首先会提问你是否采取PPP/SLIP的模式连通网络,如果不是可以选NO,我是ADSL的DHCP模式上网,所以选NO。如果你是拨号模式,根据提示操作吧。
    随后是要求你输入你上网的网卡的TCPIP设置。如果是DHCP,把网线接好,机器会自动获取设置。如果是静态IP,你可以根据自己的机器情况设置IP、掩码、网关、DNS等。
    随后机器会提问以下问题:
    是否设置机器为网关GATEWAY——NO(我们是web server,不是网关)
    是否设置机器为inetd超级服务器——NO(我们有ssh和pureftpd,不需要inetd)
    是否设置为NFS SERVER/CLIENT——NO(我们不是这个用途)
    是否设置为anonymous FTP——NO(我们不需要这种用途)
    是否需要设置sshd——YES(我们将通过这种较为安全模式远程控制服务器)
    选择时区——按照提示选择即可,会提示你北京时间缩写是"CST"
    是否需要LINUX兼容性——YES(或许我会为服务器安装一些LINUX软件,例如CS SERVER )
    是否需要设置system console——默认的挺好,刚开始的学的就不必改了。
    是否需要配置鼠标——NO(我看不出来作为一个托管在电信的webserver有什么必要配置鼠标)
    是否需要添加用户——添加一个吧,根据提示添加即可,用户组写成wheel,以便你可以用这个用户远程登录服务器后su到root进行管理。添加完这个用户之后,会问你要root的密码,输入即可。如果不添加用户,会直接让你设置root的密码。
    其实,这些安装后设置,只要英文良好,按照提示做,不会有什么问题的。
    C. 安装后的PACKAGE和CONTRIBUTION选择
    安装后,可以进入sysinstall的configure进行最终的PACKAGE和CONTRIBUTION选择。
    PACKAGE是已经编译好的二进制包,可以直接运行。默认标准安装完之后,作为WEBSERVER,   我看了一下也就需要net下的cvsup(在线升级用)和archivers下的unzip(某些zip包可能会用到)这两个包。选中后执行安装,就会把它们装到系统里。
    随后进入CONTIBUTION里安装代码。强烈建议各位一定要把src代码全部选中。src下有很多分类,甚至包括game。我自己在学习FREEBSD的时候,编译总是缺这个那个,后来学乖了,把SRC全装了之后,就好了很多,编译时很少提示错误了,而且将来cvsup也有好处。另一个就是ports,不用说,也是要全装的。我在这里,就是选择了src和ports。选中后执行安装,就会把它们安装到系统里了。

    至此,一个初始的FREEBSD5.2.1就装完了。虽然看着多,实际上也就30分钟时间。如果你是第一次装FREEBSD,这个时候还是不要着急进行后面的操作,可以先看看手册,熟悉熟悉FREEBSD。

    2. 系统安装完后的第一步,是进行CVSUP,立刻同步你的src源代码和ports代码。关于cvsup的详细内容,请看FREEBSD手册的cvsup部分,此处我只介绍在本例中的过程。由于cvsup需要互联网环境,所以需要接好你的网线了。进入下列目录:
    #cd /usr/src/share/examples/cvsup
    里面是几个cvsup的supfile例子。我们可以直接修改这些例子为我们所用。首先编辑standard-supfile,这个文件是升级内核源代码的例子文件。我个人喜欢用ee编辑文件(因为有使用提示,且使用习惯接近windows下的),输入下面的指令:
    #ee standard-supfile
    能看见里面东西很多,但都不用改,它默认指定是升级所有的系统源代码——这是有好处的。我们只需要修改一个地方,下翻页找到下面这行:
    *default host=CHANGE_THIS.FreeBSD.org
    改成指定的freebsd官方cvsup服务器即可:
    *default host=cvsup.FreeBSD.org
    或更快的国内freebsd cvsup服务器:
    *default host=cvsup.cn.FreeBSD.org
    *default host=cvsup.FreeBSDChina.org
    退出并保存,运行下面的指令开始cvsup在线升级代码:
    #cvsup standard-supfile
    这也是我们第一次用FREEBSD上互联网。如果网络畅通,可以看到连接提示,并且开始自动升级源代码了。如果不畅通,或者cvsup服务器忙,可以换个cvsup服务器试试。如果是网络设置问题,可以到sysinstall--configure--networking里修改网卡设置。也可以用ee编辑/etc/rc.conf这个文件,检查哪里的设置出了问题。
    系统源代码升级,我的ADSL大概用30分钟左右即可完成。
    然后我们升级ports代码。ports里很多东西是不需要的,我们可以稍微仔细编辑一下。打开ports-supfile这个文件:
    #ee ports-supfile
    首先仍然是指定cvsup服务器,照上面说过的方法改了那行服务器设置。然后是选择需要升级的ports树。作为webserver,升级全部的ports是完全没有必要的,因此可以把
    ports-all
    那行前面加#注释掉。继续往后面找,有很多ports分支,我们把需要的打开,不需要的保留行首的#,就是取消了。例如下面这些行首加#的,对webserver来说,都是没用处的;去掉了行首#的,还是留着吧,以免编译遇到问题:
    ports-base
    #ports-arabic
    ports-archivers
    #ports-astro
    #ports-audio
    #ports-benchmarks
    #ports-biology
    #ports-cad
    #ports-chinese
    ports-comms
    ports-converters
    ports-databases
    ports-deskutils
    ports-devel
    ports-dns
    ports-editors
    ports-emulators
    #ports-finance
    #ports-french
    ports-ftp
    #ports-games
    #ports-german
    #ports-graphics
    #ports-hebrew
    #ports-hungarian
    #ports-irc
    #ports-japanese
    ports-java
    #ports-korean
    ports-lang
    ports-mail
    ports-math
    #ports-mbone
    ports-misc
    #ports-multimedia
    ports-net
    #ports-news
    #ports-palm
    #ports-picobsd
    #ports-polish
    #ports-portuguese
    ports-print
    #ports-russian
    #ports-science
    ports-security
    ports-shells
    ports-sysutils
    ports-textproc
    #ports-ukrainian
    #ports-vietnamese
    ports-www
    #ports-x11
    #ports-x11-clocks
    #ports-x11-fm
    #ports-x11-fonts
    #ports-x11-servers
    #ports-x11-toolkits
    #ports-x11-wm
    照上面编译完,就可以保存退出了,然后运行cvsup开始升级ports:
    #cvsup ports-supfile
    这个升级过程大约也要30分钟左右。至此,所有的代码升级完毕。

    3. MAKE WORLD和定制内核。
    关于MAKE WORLD的详细内容,也应该详细翻阅手册相关部分,下面继续介绍本例中的情况。上面的升级完成后,首先需要重新编译系统(MAKE WORLD)。由于我们的系统是刚装的,干净的,所以没有那么多难题。进入:
    #cd /usr/src
    #make buildworld

    会开始一个30分钟左右的编译过程,如果编译没有什么问题,继续:
    #make installworld
    即可更新系统为最新版,随后就可以重启机器了。
    这里需要声明一下,由于5.2.1是current分支,make world并不一定总能成功。如果能成功,恭喜你了。如果没成功,过段时间再cvsup系统源代码,可能就可以成功了。我自己装了2个server,第一个就没成功,时隔一个月第二个就成功了。没成功也不用太担心,毕竟5.2.1是RELEASE,相对还是较为稳定的。

    接下来,我们需要定制内核。定制内核的必要性我想就不必我说了,各位也应该好好看看手册相关部分。也请各位仔细看这个帖子:
    http://www.freebsdchina.org/forum/viewtopic.php?t=1706说的很详细了。
    具体操作,进入下面的目录:
    #cd /usr/src/sys/i386/conf
    能看到一个名为GENERIC的文件。把这个文件拷贝一个副本,例如名为SAMPLEKERN,这个副本将是你将来内核的配置文件。
    #cp GENERIC SAMPLEKERN
    #ee SAMPLEKERN
    用ee编辑SAMPLEKERN这个文件,按照上面提到的那个帖子编辑,根据你自己的硬件情况、软件需求编辑,保存后开始编译内核。由于我们CVSUP过了,所以用手册上提到的“新”方法编译。
    #cd /usr/src
    make buildkernel KERNCONF=SAMPLEKERN
    这个编译过程大概要20分钟,编译完先不要着急install,先备份一下旧内核,以免有意外。
    #cd /boot
    #cp -R kernel kernel.old

    随后安装内核: 
    #make installkernel KERNCONF=SAMPLEKERN 
    安装好之后,可以重启了。 
    由于我自己是在家里进行服务器安装的,所以,我给内核文件里加上了下面几行,以便形成共享上网能力: 
    #ipfirewall for NAT 
    options IPFIREWALL 
    options IPDIVERT 
    options IPFIREWALL_DEFAULT_TO_ACCEPT 
    options IPFIREWALL_VERBOSE 
    options IPFIREWALL_VERBOSE_LIM99v=100

    然后/etc/rc.conf里也要加几行: 
    # for natd 
    gateway_enable="YES" 
    firewall_enable="YES" 
    firewall_type="OPEN" 
    natd_enable="YES" 
    natd_interface="em0" 
    natd_flags=""

    上述2处修改后,编译并安装内核,可以实现共享上网。FREEBSD做网关,windows做工作站,随后的工作可以从工作站用ssh登录后进行,而且不影响工作站上网查资料——毕竟FREEBSD从安装到真正投入使用还有很多调整。一般的服务器专用主板都整合了2个网卡。常见intel100M卡设备代码是fxp,intel1000M卡是em,卡代码在你安装系统的时候可以在sysinstall--configure--networking里看到。本例中两个卡都是1000M卡,第一个网卡是em0,接外网。

    4. 服务器软件安装 
    新的精简内核编译完成之后,就是安装应用软件了。建议按照我下面的顺序来装。安装软件前,建议先 
    #ee /etc/make.conf 
    在文件里添加下面这行: 
    MASTER_S99vE_OVERRIDE=ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR} 
    指定ports软件首先从国内下载。否则所有软件从国外下载,有时候速度实在是不行。 
    A. MYSQL 4.0的安装 
    我选择了MYSQL4.0,不算老,也不算新。第二次装的时候,ports已经到了4.0.20版了。下面根据本例中的情况,进行具体说明。前面说了,mysql默认数据库放在/var分区里,如果你的数据库很大,那么你需要在前面分区的时候把/var分区分到足够大。ldconfig老大建议要4G。如果你和我一样想把数据库放到/usr分区,那么: 
    #mkdir /usr/db 
    先在/usr建立一个数据库目录,然后 
    #cd /usr/ports/databases/mysql40-server 
    #ee Makefile

    打开Makefile,找到 
    DB_DIR?= /var/db/mysql

    改为 
    DB_DIR?= /usr/db/mysql 
    随后,按照这个帖子,根据delphij老大教诲,在Makefile里CONFIGURE_TARGET那行前面的空行加上两行优化选项: 
    BUILD_OPTIMIZED=yes 
    BUILD_STATIC= yes

    保存退出编辑。然后 
    #make 
    #make install

    开始下载并开始安装数据库。编译安装完之后,重启机器可以启动mysqld守护进程,可以 
    #mysql 
    如果能够见到 
    mysql> 
    提示符,说明安装好了。不过,刚装完的mysql默认的数据库连接是100个,远远不能应付大网站的要求。按照这个办法加大吧: 
    http://www.fanqiang.com/a2/b1/20010705/140800801.html 
    具体到本例中的mysql4.0 for freebsd5.2.1,应该这样修改连接数: 
    #ee /usr/local/bin/mysqld_safe 
    向下寻找到第312行(4.0.20版是314行),其行很长,以“$NOHUP_NICENESS”开头,以“>> $err_log 2>&1”结尾。该行被嵌套在一个if语句里。在312这行末尾的“ >> $err_log 2>&1”前面加上“ -O max_connections=1000 ”,(注意前后各留一个空格)。然后向下找到314行,也是很长的一行,以“eval "$NOHUP_NICENESS”开头,以“>> $err_log 2>&1”结尾。同样在“ >> $err_log 2>&1”前面加上“ -O max_connections=1000 ”。 
    保存退出。然后重启,此时的mysql40就是1000个并发连接的数据库了。可以用下面的方法检查一下: 
    #cd /usr/local/bin 
    #mysqladmin -uroot -p variables 
    将会打出一个长列表,按scroll lock后向上卷动屏幕,能看到里面有一项显示 
    | max_connections | 1000 | 
    那么表示最大并发连接数已经修改到1000了。 
    至此,mysql数据库就装完了。

    B. APACHE2的安装 
    同样的,由ports装apache,也不会有什么困难: 
    #cd /usr/ports/www/apache2 
    #make 
    #make install

    完毕。就这么简单。编译中间可能会提问相关软件gettext的安装选项,全选上吧。编译时可能会提示安装新版textproc/expat2错误,原因是机器里已经有旧版的expat2。只需删除旧版重新安装新版expat2即可: 
    #cd /usr/ports/textproc/expat2 
    #make deinstall 
    #make install 
    #cd /usr/ports/www/apache2 
    #make 
    #make install

    继续make即可。

0
相关文章