在 FreeBSD 上搭建 Apache + PHP 运行环境,用 ports 是再省心不过的方式了。下面把从安装到基础配置的完整流程走一遍,更高级的调优技巧不妨先搜一搜 Google——说实话,大部分常见问题前人早就踩过坑了。
第一步:安装 Apache
进入 ports 目录,一行命令搞定:
cd /usr/ports/www/apache2
make install clean;
第二步:安装 PHP 4
同样通过 ports 安装:
cd /usr/ports/www/mod_php4
make install clean;
注意,配置时千万别勾选 debug 选项,否则后面 Zend Optimizer 会罢工。FreeBSD 5.4 release 自带的 PHP 版本是 4.4.0。
第三步:安装 php4-extensions
这一步很容易被忽略,但跳过的后果就是打开 PHP 文件时直接报错:Fatal error: call to undefined function: preg_match()。老老实实装上扩展包:
cd /usr/ports/lang/php4-extensions/
make install clean;
cd /usr/local/etc
cp php.ini-recommended php.ini
第四步:配置 httpd.conf
编辑 Apache 主配置文件:
ee /usr/local/etc/apache2/httpd.conf
先修改文档根目录(按实际需要调整):
#DocumentRoot "/usr/local/www/data"
DocumentRoot "/usr/www"
对应的 段也要同步修改:
#
出于安全考虑,把 Options Indexes FollowSymLinks 中的 Indexes 删掉——否则网站目录下的所有文件会直接暴露给浏览者。
Options FollowSymLinks
将 DirectoryIndex 添加 PHP 支持:
DirectoryIndex index.php index.html index.htm
在 AddType application/x-gzip .gz .tgz 之后加入两行,让 Apache 认识 PHP:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Apache 2.0 新加了 ServerLimit 指令,允许不重编译就调整最大并发数。这里可以按服务器情况修改:
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1500
MaxRequestsPerChild 10000
顺便一提,ServerLimit 的硬上限是 20000,对绝大多数站点来说绰绰有余。真要突破?那就得去源码树 server/mpm/prefork/prefork.c 里改这两行:
#define DEFAULT_SERVER_LIMIT 256
#define MAX_SERVER_LIMIT 20000
不过能用到 20000 并发连接的场景,现实中确实不多见。
第五步:启动 Apache 并设为开机自启
在 /etc/rc.conf 中加入:
apache2_enable="YES"
然后手动启动:
/usr/local/etc/rc.d/apache2.sh start
停止则用:
/usr/local/etc/rc.d/apache2.sh stop
当然 /usr/local/sbin/apachectl start 也行,不过系统生成的脚本用起来更顺手。
第六步:验证 Apache + PHP 是否正常工作
在网站根目录创建测试文件:
cd /usr/www
ee index.php
写入最简单的 PHP 探针:
浏览器里输入你的域名或 IP,看到 phpinfo 页面就算成功。
第七步:安装 Zend Optimizer
先处理一个常见坑——不执行下面这步会报错:
ln -s /lib/libm.so.3 /lib/libm.so.2
或者编辑 /etc/libmap.conf 加入:
libm.so.2 libm.so.3
然后下载最新版 Zend Optimizer(比如 ZendOptimizer-2.5.10a-freebsd5.1-i386.tar.gz),通过 FTP 或 SFTP 上传到服务器。解压并安装:
tar zxvf ZendOptimizer-2.5.10a-freebsd5.1-i386.tar.gz
cd ZendOptimizer-2.5.10a-freebsd5.1-i386
./install
安装过程中的几个选项全部默认即可。装完后重启 Apache,再看 phpinfo() 就能看到类似这样的信息:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with Zend Extension Manager v1.0.8, Copyright (c) 2003-2005, by Zend Technologies
with Zend Optimizer v2.5.10, Copyright (c) 1998-2005, by Zend Technologies
如果喜欢用 ports 方式安装 Zend Optimizer,操作也很简单:将下载的 ZendOptimizer-2.5.10a-freebsd5.1-i386.tar.gz 放到 /usr/ports/distfiles/ 目录下,然后:
cd /usr/ports/devel/ZendOptimizer
make install clean;
整个基础环境到这就搭建完毕了。如果想折腾更高级的功能,可以参考社区其他帖子——至少按照这个流程走下来,一个能跑 PHP 的 Web 站点就已经就位了。
