willy < willy at 2699.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,机器都没起来,别的介质其实也选不成。
选了介质之后,画面提示:
至此,一个初始的FREEBSD5.2.1就装完了。虽然看着多,实际上也就30分钟时间。如果你是第一次装FREEBSD,这个时候还是不要着急进行后面的操作,可以先看看手册,熟悉熟悉FREEBSD。
2. 系统安装完后的第一步,是进行CVSUP,立刻同步你的src源代码和ports代码。关于cvsup的详细内容,请看FREEBSD手册的cvsup部分,此处我只介绍在本例中的过程。由于cvsup需要互联网环境,所以需要接好你的网线了。进入下列目录:
3. MAKE WORLD和定制内核。
关于MAKE WORLD的详细内容,也应该详细翻阅手册相关部分,下面继续介绍本例中的情况。上面的升级完成后,首先需要重新编译系统(MAKE WORLD)。由于我们的系统是刚装的,干净的,所以没有那么多难题。进入:
下来,我们需要定制内核。定制内核的必要性我想就不必我说了,各位也应该好好看看手册相关部分。也请各位仔细看这个帖子:
http://www.freebsdchina.org/forum/viewtopic.php?t=1706
说的很详细了。
具体操作,进入下面的目录:
4. 服务器软件安装
新的精简内核编译完成之后,就是安装应用软件了。建议按照我下面的顺序来装。安装软件前,建议先
B. APACHE2的安装
同样的,由ports装apache,也不会有什么困难:
C. APACHE2的mod安装
APACHE2自带SSL,所以无需安装SSL。MOD_GZIP找不到有关APACHE2的文章,是不是也不用装,很奇怪。所以剩下的就是FASTCGI和php了。
按要求,先装fastcgi for apache2,先看帖子:
http://bbs.chinaunix.net/forum/viewtopic.php?t=221295
输入指令:
D. web的安装后设置
首先,设置apache的php访问能力。
再设置apache默认字符集为简体中文。找到:
另外,一个访问量较大的网站,apache默认的150连接肯定是不行的。请根据这个帖子修改:/journal/3/02.html
具体操作如下。寻找:
找到这段之后,按照上述帖子的推荐值修改为:
至此,httpd.conf的设置完成。可以保存退出了。当然,如果你要搞虚拟主机,请根据手册和httpd.conf尾部的例子,再设置虚拟主机相关部分即可。有关我的虚拟主机设置,各位一会可以看我后面FTP安装后的解释。
工作还没有完,给php设置ini。如果没什么特殊要求,可以直接使用默认推荐的php.ini。
此时,可以用ee在服务器默认的web目录里写一个简单的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上传到服务器任一目录里。也可以用优盘、刻录盘转到服务器里。然后解压、安装:
E. pure-ftpd的安装
pure-ftpd的安装,我完全学自这个帖子:
http://www.freebsdchina.org/forum/viewtopic.php?t=10279
前面有关mysql的就先不用看了。直接从pure-ftpd部分开始。本例中应该这么继续。
conf设置完毕。随后导入数据库初始值。把下面这段拷贝粘贴为一个文本文件(原帖子有几处错误),例如ftp.mysql,然后执行下列命令导入mysql数据库里:
代码:
FLUSH PRIVILEGES;
CREATE DATABASE ftpusers;
USE ftpusers;
CREATE TABLE admin (
Username varchar(35) NOT NULL default '',
Password char(32) binary NOT NULL default '',
PRIMARY KEY (Username)
) TYPE=MyISAM;
INSERT INTO admin VALUES ('Administrator',MD5('123456'));
CREATE TABLE users (
User char(16) NOT NULL default '',
Password char(32) binary NOT NULL default '',
Uid int(11) NOT NULL default '2000',
Gid int(11) NOT NULL default '2000',
Dir char(128) NOT NULL default '',
QuotaFiles int(10) NOT NULL default '500',
QuotaSize int(10) NOT NULL default '30',
ULBandwidth int(10) NOT NULL default '80',
DLBandwidth int(10) NOT NULL default '80',
status enum('0','1') NOT NULL default '1',
ipaccess varchar(15) NOT NULL default '*',
comment tinytext NOT NULL,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;
INSERT INTO `users` VALUES ('test1',MD5('123456'),2001,2000,'/home/test1',500,30
80,5,1,'*','*');
至此有关系统里的修改全部完毕。你现在重启系统,可以试试用test1/123456来登录一下ftp了。
随后,我们根据上述帖子,安装php-manager,实现web模式的ftp管理。下载ftp.zip(汉化的ftp.zip:
http://forum3.games.sina.com.cn/upload/39/400/20040615/1025/205182/205182.zip
请尽快下载,晚了说不定就被sina删了),传到服务器上,然后
四、系统安装后的一些事项
在本例中,这个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/downloads/secureshellwks/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,进行如下操作:
六、鸣谢
至此,我这个菜鸟也就没什么好说的了。上面这些,在方家来看都是小儿科,见笑了。不过,本着FREE的精神,我写出来这些乱七八糟的字,一来方便一下后来的新人,二来也是一点点私心——给我自己留个笔记。嘿嘿。(做自己的blog是没敢想过,只有本事看别人的blog了,kaka)
目前我自己的server运行良好,为此特别感谢:delphij、ldconfig、jayvan、xiaohua、likuku,以及很多我一时想不起来的朋友。他们给了我很多及时的、有用的提示,使我能在1个月的时间里,首先启动这个server,非常感谢!!
七、后记——关于apache日志轮询。
服务器至今运行了一个半月了,硬盘并不大,日志问题成了困扰我的一个大问题。可惜开始我还是不太会用cron及cronolog,这几天看了chedong的blog,终于搞好了,和大家分享一下吧。我是这么做的:
首先下载cronolog包,通过ssh传到server上,解包安装,默认就会很好的安装了。
附录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:还没想到,嘿嘿。
不错!
这篇文章实在是太好了。。。。。。。帮了我很大的忙啊!谢谢!!
我等刚开始学习者强烈希望多出这些文章!
有帮助 !!谢先!
这篇文章写的非常全面。
我是一个FREEBSD的热忠爱好者。
谢谢。希望以后可以多多沟通。
好文章~!顶~
真的很不错,正适合我初学者用。帮你顶顶顶。
能否给出你硬件的详细配置啊?多谢了先
写得非常好,让不想学FreeBSD的初学者提供了一个很好的配置过程!支持你:)
That's very good!
Excellent!
太好了 对于我们新手来说 辛苦了 希望看到你更多真样的文章! 呵呵
tanks
这篇文章太好了。我依照这篇文章安装成功:)
你改的apache 最大连接数 是否是软限制 ? 感觉应该从源代码中修改 硬限制?
真是好文!让我这个初学者尝到了FreeBSD的好处了,呵呵,比RedHat好多了!没有rpm烦人的deps提示。
在执行cvsup之前要 rehash!!
为什么,为什么问样一个一个的安装从来没有成功过; 我用FreeBSD安装的东西,从来没有成功安装过,为什么会这样呢...
本功能正在开发中,目前不能使用,敬请原谅。
√ 期刊在线投稿: /journal/contribute.html
√ 本文打印于《CNFUG期刊》,欢迎访问 http://www.cnfug.net 获取更多技术文章。
© 2003-2006 CNFUG(China FreeBSD User Group) All rights reserved.
Powered by FreeBSD
这篇文章写得很好,给了我很多帮助