干净的FreeBSD安装Mysql PHP lighttp过程

昨天着了台比较新的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.freebd.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冲突,也是我安装了好几次才得到的教训。

vim在编辑一些配置文件的时候方便,所以也可以下载vim替代ee

cd  /usr/ports/editors/vim
make -DWITHOUT_X11 install clean

如果不加上WITHOUT_X11的话,就会下载很多GUI相关的lib,因为服务器并没有安装GUI,所以下载起来很慢。
想查看可用的makefile参数的话:

grep define Makefile

默认安装的vim很丑陋,没有语法高亮并且编辑方式还是最原始的编辑,/usr/local/share/vim/vim70/里有一个vimrc_xxx的文件,你把它cp到/usr/local/share/vim/,改名为vimrc就ok了。

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.默认的和网上很多关于Lighttpd的配置文件默认路径都有问题,我试验后下面的配置能够运行

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

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>