发新话题
打印

[转载]FreeBSD 5.2.1R Web Server架设实例过程

[转载]FreeBSD 5.2.1R Web Server架设实例过程

文章来源:http://www.chinaunix.net
文章作者:韬光晦影

本文献给和我一样初次接触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好些,不过我当时不太明白,什么也没选,直接选了EXIT。其实没选也不要紧,后面还有机会。  
随后的画面是提示你从什么介质安装,我们这里当然是自己烧好的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_LIMIT=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_SITE_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即可。  

C. APACHE2的mod安装  
APACHE2自带SSL,所以无需安装SSL。MOD_GZIP找不到有关APACHE2的文章,是不是也不用装,很奇怪。所以剩下的就是FASTCGI和php了。  
按要求,先装fastcgi for apache2,先看帖子:  
http://bbs.chinaunix.net/forum/viewtopic.php?t=221295  
输入指令:  
#cd /usr/ports/www/mod_fastcgi  
#make WITH_APACHE2=yes install  
OK,完成了。  
下来是php。  
#cd /usr/ports/www/mod_php4  
#make  
然后下载编译,中间会提示你选择编译配置选项。mysql已经默认选上了,下来把GD和openssl也选上吧。其他的选项我也不知道有什么用,就没选了。随后  
#make install  
php4.3.6安装完成。  

D. web的安装后设置  
首先,设置apache的php访问能力。  
#cd /usr/local/etc/apache2  
#ee httpd.conf  
在AddType application/x-gzip .gz .tgz后面加上下面3行:  
#php support  
AddType application/x-httpd-php .php  
AddType application/x-httpd-php-source .phps  

随后设置网站默认启动页允许为index.php。同样在httpd.conf里编辑,不必退出。找到  
DirectoryIndex index.html index.html.var  
添加index.php进去,为:  
DirectoryIndex index.php index.html index.html.var  

再设置apache默认字符集为简体中文。找到:  
AddDefaultCharset ISO-8859-1  
改为  
AddDefaultCharset GB2312  

另外,一个访问量较大的网站,apache默认的150连接肯定是不行的。请根据这个帖子修改:http://www.cnfug.org/journal/3/02.html  
具体操作如下。寻找:  
<IfModule prefork.c>  
找到这段之后,按照上述帖子的推荐值修改为:  
<IfModule prefork.c>  
StartServers 10  
MinSpareServers 10  
MaxSpareServers 15  
ServerLimit 2000  
MaxClients 1500  
MaxRequestsPerChild 10000  
</IfModule>  

至此,httpd.conf的设置完成。可以保存退出了。当然,如果你要搞虚拟主机,请根据手册和httpd.conf尾部的例子,再设置虚拟主机相关部分即可。有关我的虚拟主机设置,各位一会可以看我后面FTP安装后的解释。  

工作还没有完,给php设置ini。如果没什么特殊要求,可以直接使用默认推荐的php.ini。  
#cd /usr/local/etc  
#cp php.ini-recommeded php.ini  

此时,重启机器,http方式访问这台服务器,例如http://192.168.0.1,就能看到apache2的页面了。  

此时,可以用ee在服务器默认的web目录里写一个简单的php测试页面,例如  
#ee /usr/local/www/data/index.php  
文件里面只有这么一行代码:  
<? phpinfo(); ?>  
此时再访问http://192.168.0.1,就可以看到本机的php页面信息了。  

看到了phpinfo之后,就可以先安装zend optimizer了。zend optimizer只能手工安装,ports里找不到。从http://www.zend.com/store/products/zend-optimizer.php下载ZendOptimizer-2.5.2-FreeBSD5.1-i386.tar.gz后,通过ssh上传到服务器任一目录里。也可以用优盘、刻录盘转到服务器里。然后解压、安装:  
#tar -zxvf ZendOptimizer-2.5.2-FreeBSD5.1-i386.tar.gz  
#cd ZendOptimizer-2.5.2-FreeBSD5.1-i386  
#./install.sh  
随后zend optimizer安装画面出现,根据提示一步一步走即可。临近完成,会提示  
x Your php.ini is relocated to the: /usr/local/Zend/etc directory x  
x and a symbolic link from the former place: x  
x /usr/local/etc/php.ini is created. x  
x x  
x Your original php.ini was backed-up to: x  
x /usr/local/etc/php.ini-zend_optimizer.bak x  
此时再访问http://192.168.0.1/index.php,可以看到phpinfo里有关zend optimizer的信息了。至此,web部分全部安装设置完毕。  

E. pure-ftpd的安装  
pure-ftpd的安装,我完全学自这个帖子:  
http://www.freebsdchina.org/forum/viewtopic.php?t=10279  
前面有关mysql的就先不用看了。直接从pure-ftpd部分开始。本例中应该这么继续。  
#cd /usr/ports/ftp/pure-ftpd  
#ee Makefile  
根据上面的帖子给你的makefile里加上必要的CONFIGURE_ARGS,然后保存退出ee。本例中没有指定安装目录,使用ports默认的安装目录。  
#make WITH_MYSQL=1 WITH_LANG=simplified-chinese install clean  
随后安装会很顺利完成。继续下面的配置,执行下列操作,为pure-ftpd增加配置文件:  
#cd /usr/local/etc  
#cp pure-ftpd.conf.sample pure-ftpd.conf  
#cp pureftpd-mysql.conf.sample pureftpd-mysql.conf  
打开新生成的pure-ftpd.conf,把mysql数据库的那行的那个注释去掉——准备使用mysql作为验证。  
MySQLConfigFile /etc/pureftpd-mysql.conf  
再指定禁止匿名登录:  
NoAnonymous yes  
再指定允许上传人修改文件名:  
NoRename no  
允许登录用户使用chmod指令  
NoChmod no  
使用者可刪除文件  
KeepAllFiles no  
自动建立帐户的home dir  
CreateHomeDir yes  

conf设置完毕。随后导入数据库初始值。把下面这段拷贝粘贴为一个文本文件(原帖子有几处错误),例如ftp.mysql,然后执行下列命令导入mysql数据库里:  
#mysql -u root -p123456 < ftp.mysql  

代码:  
INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv,  
Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv,  
Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv,  
Index_priv, Alter_priv) VALUES  
(&#39;localhost&#39;,&#39;ftp&#39;,PASSWORD(&#39;123456&#39;),&#39;Y&#39;,&#39;Y&#39;,&#39;Y&#39;,&#39;Y&#39;,&#39;N&#39;,&#39;N&#39;,&#39;N&#39;,&#39;N&#39;,  
&#39;N&#39;,&#39;N&#39;,&#39;N&#39;,&#39;N&#39;,&#39;N&#39;,&#39;N&#39;);  

FLUSH PRIVILEGES;  

CREATE DATABASE ftpusers;  

USE ftpusers;  

CREATE TABLE admin (  
Username varchar(35) NOT NULL default &#39;&#39;,  
Password char(32) binary NOT NULL default &#39;&#39;,  
PRIMARY KEY (Username)  
) TYPE=MyISAM;  

INSERT INTO admin VALUES (&#39;Administrator&#39;,MD5(&#39;123456&#39;));  

CREATE TABLE users (  
User char(16) NOT NULL default &#39;&#39;,  
Password char(32) binary NOT NULL default &#39;&#39;,  
Uid int(11) NOT NULL default &#39;2000&#39;,  
Gid int(11) NOT NULL default &#39;2000&#39;,     
Dir char(128) NOT NULL default &#39;&#39;,  
QuotaFiles int(10) NOT NULL default &#39;500&#39;,  
QuotaSize int(10) NOT NULL default &#39;30&#39;,  
ULBandwidth int(10) NOT NULL default &#39;80&#39;,  
DLBandwidth int(10) NOT NULL default &#39;80&#39;,  
status enum(&#39;0&#39;,&#39;1&#39;) NOT NULL default &#39;1&#39;,  
ipaccess varchar(15) NOT NULL default &#39;*&#39;,  
comment tinytext NOT NULL,  
PRIMARY KEY (User),  
UNIQUE KEY User (User)  
) TYPE=MyISAM;  

INSERT INTO `users` VALUES (&#39;test1&#39;,MD5(&#39;123456&#39;),2001,2000,&#39;/home/test1&#39;,500,30  
80,5,1,&#39;*&#39;,&#39;*&#39;);  

数据库导入之后,还不能使用,还需要设置pureftpd-mysql.conf  
#ee pureftpd-mysql.conf  
根据文件里的默认提示,修改即可,很简单的。也可以参照上面说的帖子修改。  

至此有关系统里的修改全部完毕。你现在重启系统,可以试试用test1/123456来登录一下ftp了。  

随后,我们根据上述帖子,安装php-manager,实现web模式的ftp管理。下载ftp.zip(汉化的ftp.zip:  
http://forum3.games.sina.com.cn/ ... 5/205182/205182.zip  
请尽快下载,晚了说不定就被sina删了),传到服务器上,然后  
#mv ftp.zip /usr/local/www/data  
#cd /usr/local/www/data  
#unzip ftp.zip  
#ee ftp/config.php  
修改config.php里面的连接参数,其他的基本上都不用改。保存。然后就可以用http://192.168.0.1/ftp/来访问这个web管理页面了。登录管理页面,输入密码(本例是123456),就可以看到预设的用户test1,及其状态。  

四、系统安装后的一些事项。  
在本例中,这个web服务器是用来支撑4~5个网站或论坛用的。所以上面的安装过程,实际上都是为了这个目的。  
那么后续还有一些使用上的注意事项,这里简要说明一下。  
1. 首先,如果你想很方便地管理数据库,那么你应该装一个phpmyadmin,可以通过ports装,很简单,而且也是默认装在/usr/local/www/data里。  
2. 其次,如果你想比较方便地监视服务器状态,也可以装一个phpsysinfo,ports装也可以,同样默认装在/usr/local/www/data里。这样的话,服务器将来托管的时候,可以把/usr/local/www/data这个目录做成一个只有你知道的虚拟主机即可。从这个虚拟主机里可以看到整个服务器的状态、管理服务器的mysql、新增ftp用户及主机。(ports装的phpsysinfo2.1对intel板载千兆网卡的工作状态报告有些问题,从phpsysinfo的网站下载一个2.2版可以修正这个问题,而且2.2版支持简体中文。)  
3. 关于新增虚拟主机。  
按照本例中的pureftpd的装法,每当你在ftp管理页面生成一个帐号后,例如web1,随后用ftp软件登录server,server就会自动生成一个名为web1的用户,并同时在/home里生成一个web1的目录,具体为:  
/home/web1  
(实际上也就是 /usr/home/web1 )  
如果你要限制web1的配额,那么你在管理页面里就可以设置了。  
那么随后web1的apache2的web虚拟主机目录,在httpd.conf里当然也就指定为  
/home/web1  
依此类推。简单吧?  

五、远程控制你自己的web server。  
除了上面提到的phpmyadmin和ftp之类的web页面的简单控制之外,你当然少不了最终极的远程控制能力:ssh2。我是菜鸟,就不班门弄斧吹嘘这东西的好处了。总之,这东西是非常安全的、可以远程连接到你的server的手段。  
我前面都没有提到ssh,而实际上,自打上面的第三步第1小步完成了操作系统的初始安装之后,我们就可以使用ssh来远程控制server了,不仅效果和server的本机console一样,而且可能会更方便——因为我们可以用一个win2k的电脑,很方便地看着这里的帖子,边看边装,还能使用windows的CTRL-C/V,多好啊。  
首先声明,所有有关ssh的安装和连接的基本知识,都可以在下面这个帖子里找到:  
http://www.freebsdchina.org/forum/viewtopic.php?t=10210  

下面我来根据我的实践,简单说说本例中的ssh应用方法。  
1. 首先在你的win2k上下载sshclient客户端,它是免费提供的,而且似乎更好用。  
http://www.ssh.com/support/downl ... non-commercial.html  
2. 由于我们安装操作系统的时候已经选择了ssh,所以,操作系统部分就不需要多设置了,默认就会启动sshd守护进程的。  
3. 之前安装系统的时候,曾经提示是否添加用户,我已经提示大家要至少添加一个用户,例如你自己的英文名字,而且这个用户必须是wheel组,只有wheel组的用户,才能远程su切换为root。如果你当时没有添加,那么在server本机状态现在添加一个wheel组的用户吧,这个用户将是你将来远程登录server的用户。  
4. 在win2k上安装好sshclient后,可以直接连接你的server,此时是用wheel组用户名及其密码登录的。登录后就可以su,然后输入root密码,就可以切换为root了。  
5. 上面这个登录方式已经足够安全了,别人无法窃听,但是将来托管后还是有可能会有漏洞。由于我们和server之间现在还是本地lan方式的连接,不存在安全问题,所以我们此时先用密码方式连到server,可以先用sshclient生成一个key,转为key方式连接,这样就基本没有安全漏洞了。做法如下:  
打开sshclient,菜单选edit--settings,出现设置对话框。里面有global settings--user authentications--keys选项,进入后,可以看到Generate New按钮,按下后根据提示,可是生成一个key,把这个key文件,按下面的按钮Upload,即可把这个key文件上传到server上你登录的home目录里,具体位置是/home/yourname/.ssh2。这个.ssh2目录,是上传时自动生成的。但Freebsd默认目录名是.ssh,而不是.ssh2。所以,根据上面提到帖子,我们用刚才提到的wheel组用户登录server,进行如下操作:  
$su  
password:  
#ls  
能看见里面已经有了一个.ssh2目录。继续下面:  
#mv .ssh2 .ssh  
改名为.ssh  
#cd .ssh  
#ssh-keygen -X -f yourkey.pub >> authorized_keys  
进入ssh目录,把刚刚上传的这个key文件导入机器的验证文件里。  
此时,你已经可以退出sshclient,以key的方式重新登录你的server了,不需要输入密码,可以直接登录,而且你不用担心泄密。软件附赠一个sftp,同样是加密的,很安全。  

六、鸣谢  
至此,我这个菜鸟也就没什么好说的了。上面这些,在方家来看都是小儿科,见笑了。不过,本着FREE的精神,我写出来这些乱七八糟的字,一来方便一下后来的新人,二来也是一点点私心——给我自己留个笔记。嘿嘿。(做自己的blog是没敢想过,只有本事看别人的blog了,kaka)  
目前我自己的server运行良好,为此特别感谢:delphij、ldconfig、jayvan、xiaohua、likuku,以及很多我一时想不起来的朋友。他们给了我很多及时的、有用的提示,使我能在1个月的时间里,首先启动这个server,非常感谢!!  

七、后记——关于apache日志轮询。  
服务器至今运行了一个半月了,硬盘并不大,日志问题成了困扰我的一个大问题。可惜开始我还是不太会用cron及cronolog,这几天看了chedong的blog,终于搞好了,和大家分享一下吧。我是这么做的:  
首先下载cronolog包,通过ssh传到server上,解包安装,默认就会很好的安装了。  
#tar -zxvf cronolog-1.6.2.tar.gz  
#cd cronolog-1.6.2  
#./configure  
#make install  
然后打开httpd.conf  
#ee /usr/local/etc/apache2/httpd.conf  
到虚拟主机的设置部分,把log日志记录改成如下的写法:  
CustomLog "|/usr/local/sbin/cronolog /yoursite/log/access%w.log" common  
ErrorLog "|/usr/local/sbin/cronolog /yoursite/log/error%w.log"  
再运行 crontab -e指令,给cron加入如下两个任务:  
0 5 * * * /bin/rm /yoursite/log/access`date -v-6d +\%w`.log  
10 5 * * * /bin/rm /yoursite/log/error`date -v-6d +\%w`.log  
重启apache,以后的日志将每天做一个备份,并且只保留1周的了。嘿嘿。  

附录A:对新人来说的重要文件,其位置及其用处。  
/etc/make.conf  
编译的全局控制配置文件,很复杂,有例子,可以参考。  
/etc/rc.conf  
rc应该是资源的意思。此文件管理server的重要资源,例如网卡设置、守护进程启用关闭、功能开启关闭等等。  
/usr/local/etc/rc.d  
这不是个文件,而是个目录,相当于dos的autoexec,这里面的sh script都会在机器启动时自动执行。同时,你要关闭apache或者mysql,都可以在这里通过运行sh script达到目的。  
/usr/local/etc  
这个同样不是文件,而是目录。非操作系统的后装的软件的配置文件大都在这里放置。  
/usr/local/etc/php.ini  
php配置文件。把同目录下的php.ini-recommend拷贝一下就很好用。  
/usr/local/etc/apache2/httpd.conf  
apache2 web server配置文件。  
/usr/local/etc/pure-ftpd.conf  
pure-ftpd基础配置文件。  
/usr/local/etc/pureftpd-mysql.conf  
pureftpd的mysql配置文件。  
/usr/db/mysql/my.cnf(这是我的例子,你的或许应该是/var/db/mysql/my.cnf)  
mysql配置文件。在/usr/local/share/mysql里有例子,分别是my-small.cnf...my-huge.cnf。拷贝一份合适的到上述位置即可,我拷贝的是my-large.cnf。  

附录B:还没想到,嘿嘿。
我用青春赌明天

TOP

发新话题