昨天着了台比较新的Dell 440,准备装一台BSD系统作为web服务器。顺手刻了一张FreeBSD 8.0的光盘,系统的安装过程就不再说了,不过安装各种服务的时候倒是遇见了不少麻烦。
1 首先更新ports
尽管是新下载的iso,但是ports肯定已经更新过了,所以先使用portsnap更新ports
portsnap fetch extract
'第一次使用下载一个更新包,比较大60MB左右,以后就不用了
portsnap fetch update
'以后就可以使用这个命令来更新了
也可以选择用csup来升级ports,不过速度慢,但是听说比portsnap安全一些:
cd /usr/share/examples/cvsup
cvsup -g -L 2 -h cvsup9.freebsd.org ports-supfile
'用默认的cvsup.freebsd.org的经常无法更新,所以换个用得少得
但是这两种方法最好不要混用,貌似一个会更改另一个的INDEX。
2 提高下载速度
ports安装软件默认的下载速度比较慢,再加上很多镜像的服务器都在国外,经常每分钟10kb左右。所以要安装一个多线程下载工具axel(类快车)。
cd /usr/ports/ftp/axel
make install clean
安装好后,编译/etc/make.conf,使其生效,代替系统默认的fetch下载软件进行工作
ee /etc/make.conf
ee 为文本编辑工具,比较人性化,是FreeBSD内带的
然后添加如下内容
FETCH_CMD=axel
FETCH_BEFORE_ARGS=-n 5 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
这里最主要的地方是
FETCH_BEFORE_ARGS=-n 5 -a
表示五线程下载,如果你要10个线程同时下载,就使用 -n 10 、 如果你想使用类迅雷的,从多个服务器同时下载的工具,只要加上 -Sx,x为下载的的最大源数 、 例:你想五个线程,从五个服务器进行下载就写成 、
FETCH_BEFORE_ARGS=-n 5 -S5 -a
不过在安装这里的时候遇见了问题,影响了以后的PHP的安装过程,所以建议先把各种lang的ports安装后再安装这个,因为axel需要用到devel/gettext的port,跟perl冲突,也是我安装了好几次才得到的教训。
3 安装Mysql数据库
这个简单,不过mysql有好几个版本选择,我选择的是5.1
cd /usr/ports/databases/mysql51-server
make install clean
安装后要安装一些初始数据和更改文件的权限,否则日后会出错
/usr/local/bin/mysql_install_db
chown -R mysql /var/db/mysql/
chgrp -R mysql /var/db/mysql/
添加mysql到rc.conf中,能够随机启动
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start
/usr/local/bin/mysqladmin -u root password newpassword
'在这里设置你的新密码
安装后要更改你的配置文件,msyql默认的配置运行起来比较消耗内存
cd /usr/local/share/mysql
cp my-small.cnf /etc/my.cnf
在[mysqld]下面加入
bind_address = 127.0.0.1
'安全起见,只允许本机连接数据库
max_connections = 65535
'最大连接数
max_user_connections = 65535
'最大用户连接数,这个设定可以省略
还有 skip-networking前面的注释一定要去掉,禁止mysqld在tcp端口监听
4 安装web服务器lighttpd
关于web服务器的选择是个仁者见仁的问题,反正apache是不准备用了,nginx比较火,不过关于配置的fastcgi的问题很多,还是选择lighttpd。
cd /usr/ports/www/lighttpd
make install clean
mkdir -p /usr/local/www/data
touch /var/log/lighttpd.access.log
touch /var/log/lighttpd.error.log
chown www:www /var/log/lighttpd.access.log
chown www:www /var/log/lighttpd.error.log
然后要修改lighttpd的配置文件,支持fastcgi
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
'默认的路径不对
"bin-path" => "/usr/local/bin/php-cgi"
'默认的是php-cgi-cgi,也需要修改
)
)
)
其实很简单,就是把这几行的注释去掉,然后把路径不一样的改一下。
添加启动服务
echo 'lighttpd_enable="YES"' >> /etc/rc.conf
安装后即使lighttpd在80端口运行,不过如果忘了更改/usr/local/www/data的权限的话,你也是什么也看不到
chown -R www /usr/local/www/data/
chgrp -R www /usr/local/www/data/
然后就可以在/usr/local/www/data/目录下面创建一个phpinfo()测试了,一切正常,但是由于php extensions还没有安装,所以看不到mysql等扩展的支持。
5 安装PHP
起初安装了好几次,都是最后报错,原因很古怪。后来重装系统后先port了PHP就没有问题了,发现是安装axel时候需要的一个gettext跟perl的一个依赖有冲突。
cd /usr/ports/lang/php5
make install clean
然后就是一些必要的php扩展
cd /usr/ports/lang/php5-extensions
make config install clean
cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini
'拷贝一份php配置文件
修改php.ini 增加gzip压缩输出:
zlib.output_compression = On
然后重启lighttpd,在phpinfo中就能够看到mysql的支持信息了。
默认的csh不太方便,修改为bash
cd /usr/ports/shells/bash2
make clean install
chsh -s /usr/local/bin/bash