前面我们介绍了FreeBSD的基本安装和网络安全。

现在,来吧,搭建你的第一个web应用服务器。

当然,作为一个完整系统的优点,就是你不用满internet去找rpm或者源码包。解压缩,指定configure路径参数?完全没有必要。

无论你Linux玩的多熟,一旦转向了FreeBSD,你也会为其简单快捷的操作所惊叹。不需要去看./configure --help,只要make就够了。

一、我们来装第一台Web服务器。现在我假设你用Nginx

执行以下命令

#cd /usr/ports/www/nginx
#make install

这样就可以了,安装时会弹出界面,让你选择需要安装的模块。perl,status之类的,你只需要用空格选择,然后把光标用TAB切换到OK,按下回车,等待编译完成就可以了。即便你是新装的空系统也没有关系,ports会自动下载安装需要的依赖软件。你去抽根烟,喝口水,回来nginx就装好了。

这很省事,不是吗?并且通过portsnap,你可以把所有软件更新到最新版,并重新编译更新到最新版,FreeBSD还会为你生成脚本文件,无缝重启。FreeBSD 7.4和FreeBSD9.0所使用的nginx版本并无不同。这比centos升级后,yum包并不跟着升级要好多了。哪怕你是个糟糕的系统管理员,只要你装好软件,用portsnap更新列表,然后用portmaster或portupgrade更新软件,就足够了。在我安装第一台freebsd webserver的时候,版本是7.4,nginx是0.7.X,现在FreeBSD还是7.4,nginx已经升级到1.0.10了。这在集群化管理的时候特别重要,你不需要为一个软件的bug,而登录到所有的服务器去重新编译或yum install,只要设定crontab自动执行就可以了。事实上,现在我的linux服务器上yum安装nginx还是0.7.X。这太恐怖了。你用linux,软件不会自动升级,你装的服务越多,你就越危险,因为你根本不知道在两年后,会有多少台服务器隐藏了应用软件的重大bug。

你需要配置两个文件以更好的使用nginx,说实话,我更喜欢lighttpd。不过,however,今天是用nginx讲解。

执行以下操作

#cd /etc/
#vi rc.conf
按o新起一行,加入
nginx_enable="YES"

:wq保存退出

#cd /usr/local/etc/nginx
#vi nginx.conf
修改这段如下
events {
        worker_connections    1024;
        use kqueue;#注意这里的系统调用方法。
}

保存退出,并执行
#/usr/local/etc/rc.d/nginx start

然后就去访问你的80端口吧,无论人品好不好,你都会看见Welcome to Nginx

注意:不要尝试在BSD下使用epoll,因为BSD不是linux,虽然有很多入门者以为这两个系统是一样的,但是其实他们并不是一个东西。FreeBSD下与epoll性能相当的,叫kqueue。

当你用到其他的软件在Linux下使用epoll调用的,都不要使用,而要改成kqueue去做,web server方面可能会使用的还包括lighttpd,varnish等。这部分需要注意一下。

二、加入动态程序。

光有webserver是不够了,还需要动态程序去完成用户的处理。一般最常用的包括jsp,php,perl,ruby等。java因为版权问题安装比较复杂,我们放到以后再讲。现在讲php的安装

#cd /usr/port/lang/php5
#make install clean

选择你的安全选项,等待完成,然后?就完成了,用nginx的话,我建议你选上fpm选项。

在我写这篇文章的时候,php版本是5.3.8。安装php的时候,你会发现,可选择的东西很少,很多扩展都没有,我想用socket扩展,这可怎么办?没关系,FreeBSD把绝大部分扩展放到了另一个路径,我们要保证php最简洁,效率最高。

#cd /usr/ports/lang/php5-extension
#make install clean

------本段由
fsck_y 提供 ------
如果你选择了GD,会编译一堆的X11依赖库文件,如果你不需要,可以执行以下命令
#make WITHOUT_11=YES install clean
----------------------------

选择你需要的扩展,等待完成即可。可能有些扩展你想要,比如redis,但安装的时候没有,怎么办。是这样,ports是按照应用程序的功能进行分类,并归档在不同的文件夹下。查找软件,有两种方法完成。

方法1.
#find /usr/ports/ -name "*redis*"
结果中会出现php5-redis,这就是你需要的

方法2.
#cd /usr/ports/
#make search key="redis"

但目录不尽相同,支持php5的会放在php5-*路径下,支持任意版本的,放在pecl-*路径下,支持php4的放在php4-*路径下,支持php5.2的,放在php52-*路径下。不过php52现在已经不支持升级了。所以,还是用php5系列的比较好,现在的版本是5.3.8

与nginx相同,你也需要配置一下rc.conf

#vi /etc/rc.conf
加入
php_fpm_enable="YES"
保存退出

#/usr/local/etc/rc.d/php-fpm start

完成,然后nginx挂接php fastcgi的配置就自己找资料,然后去看你的第一个phpinfo页面吧。

总结:通过以上两个案例,我们得到一些规律:

1.FreeBSD的应用软件都放在/usr/ports/
2.FreeBSD的软件安装只需进入ports目录执行make install clean
3.软件安装后,配置文件全部保存在/usr/local/etc/
4.所有的启动脚本都在/usr/local/etc/rc.d/
5.你安装任何软件后,都需要在/etc/rc.d里加入*_enable="YES"才可以通过脚本进行启动。
6.任何软件都无需Kill进程,只要执行/usr/local/etc/rc.d/xxx restart即可。

补充说明两点:
1.如果你安装完直接运行可执行文件提示没有,请先运行一下rehash
2.如果你任何时间想修改软件的安装配置,请到该软件的ports路径下执行make config。
3.如果你以前安装过,并没有卸载,想重新强制编译安装,请到该软件ports路径下,执行make FORCE_PKG_REGISTER="YES" reinstall clean

下次我跟大家介绍Mysql数据库的安装和其他nosql数据库的安装配置。