2009年10月22日星期四

Freebsd+nginx+php+mysql+zend

A. 进入系统后,准备cvs更新
[bash]
cd /usr/ports/net/cvsup-without-gui
cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile
# vi /etc/ports-supfile
[/bash]
将其中的 #default host=CHANGE_THIS.FreeBSD.org 一行改为
default host=cvsup4.FreeBSDchina.org

更新ports
[bash]
/usr/local/bin/cvsup -g -L 2 /etc/ports-supfile
[/bash]

B. 安装mysql
[bash]
cd /usr/ports/databases/mysql51-server
make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean
cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf #mysql的优化参数,也可以手动修改
rehash
mysql_install_db --user=mysql #初始化mysql
/usr/local/bin/mysqld_safe & #启动mysql
/usr/local/bin/mysqladmin -u root password newpass #修改root密码,newpass是需设置的密码
[/bash]

关闭mysql可以使用 mysqladmin -u root -p shutdown

C. 安装php
[bash]
cd /usr/ports/lang/php5
make config #配置编译参数
make install clean
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
[/bash]

修改 php.ini 配置文件
[bash]
cgi.fix_pathinfo=1
[/bash]

D. 安装php5-extensions
[bash]
cd /usr/ports/lang/php5-extensions/
make config
make install clean
[/bash]

E. 安装Zend Optimizer
[bash]
cd /usr/ports/devel/ZendOptimizer/
make #不要安装,只需要下载解包
cd /usr/ports/devel/ZendOptimizer/work/ZendOptimizer-*
./install-tty #会出现一个文字的安装界面,只是最后一步,不要选择apache就可以了
vi /usr/local/etc/php.ini
[/bash]
插入zend的路径,一般来说,上面的安装会自动加入下面的文字,假如没有,请手动添加。
[bash]
[Zend]
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.0
zend_optimizer.version=3.3.0a
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
[/bash]

小提示:安装zend,在freebsd下面,目前只有支持到php5.1.x,对于php5.2.x还不能支持,因为zend还没有为php5.2.x开发版本,在网上查了好多关于解决此类的问题,但得到的结果是,zend可以顺利安装,phpinfo也显示zend正常了,但程序无法调用,即zend没有工作,也就是目前无法解决,我想只有等到zend php5.2.x的版本后,才可以解决此问题,也希望哪位已经解决此类问题的兄弟,share一下你的经验。假如你非要使用zend,那就请你将php降到5.1.x,或者你不当心已经升级了ports,那建议你可以安装php4.x,毕竟目前php4.x还通用于大部分的环境

F. 安装nginx
[bash]
cd /usr/ports/www/nginx/
make install
[/bash]

H. 安装lighttpd,得到fastcgi 见注释
[bash]
cd /usr/ports/www/lighttpd/
make install
rehash
[/bash]

I. 配置nginx
[bash]
# user nobody
[/bash]
改为如下:
[bash]
user www
[/bash]

[bash]
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
[/bash]

在index.html前面添加一个index.php
[bash]
location / {
root /data/web/www.jk0086.com/htdocs;
index index.php index.html index.htm;
}
[/bash]

[bash]
#location ~ \.php$ {
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script.name;
# include fastcgi_params;
#}
[/bash]

将前面的#去掉,修改为如下,假设 document root 为 /usr/local/www/nginx
[bash]
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script.name;
include fastcgi_params;
}
[/bash]

J. 配置spawn-fcgi
[bash]
/usr/local/bin/spawn-fcgi \
-a 127.0.0.1 -p 9000 -u www -g www -C 64 -f /usr/local/bin/php-cgi
[/bash]
参数说明:监听 127.0.0.1 的 9000 端口,进程数为64(如果服务器内存小于3GB,可以只开启25个进程),用户为www
10) 这边请注意启动顺序,先启动fastcgi,再启动nginx
Nginx.conf由于经常需要修改,即经常需要重启nginx,因此这边写了一个启动脚本,请查看:
[bash]
#!/usr/local/bin/bash
case $1 in
start)
/usr/local/sbin/nginx
;;
stop)
killall -9 nginx
;;
test)
nginx -t -c /usr/local/etc/nginx/nginx.conf
;;
restart)
ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP
;;
show)
ps -aux|grep nginx
;;
esac
[/bash]

保存为nginx.sh使用方法为:
[bash]
nginx.sh start #启动nginx
nginx.sh stop #停止nginx
nginx.sh restart #重启nginx
nginx.sh test #测试nginx.conf的准确性
[/bash]

K. 安装phpMyAdmin
[bash]
cd /usr/ports/databases/phpmyadmin
make install
mv /usr/local/www/phpmyadmin /usr/local/www/nginx
cd /usr/local/www/nginx/phpmyadmin
vi config.inc.php #修改phpMyAdmin的配置文件
[/bash]

注: lighttpd 的spawn-fcgi 现在已成为独立项目

没有评论:

发表评论