FreeBSD 上安装配置 Nginx+PHP+FastCGI+MySQL
2009年06月29日 | 标签: freebsd, mysql, nginx, php | 作者:vpsee
在 VPS 里很少看见 FreeBSD 的踪影,主要原因是因为两大开源虚拟系统 Xen 和 OpenVZ 对 FreeBSD 都不是那么友好:(,OpenVZ 不能支持非 Linux 内核的操作系统,Xen 对 FreeBSD 的支持不太好(也可以说FreeBSD 对 Xen 的支持不好)。最近 VPSee 从 Advantagecom 订了一个 256MB 的 Xen VPS,想在上面试试 FreeBSD 先,Advantagecom 不提供换操作系统的面板,每次都要提交 ticket 换系统好麻烦,而且一个月只能换一次系统。VPSee 打算先用一个月的 FreeBSD,然后再换成 Linux。就目前 VPS 的状况来说,VPSee 还是推荐使用 Linux,对于 VDS 或者自己的服务器来说,Linux 和 FreeBSD 都是很棒的操作系统。
安装所需软件
FreeBSD上 有2种安装软件的方法:一种是二进制安装;另一种是源代码安装(Ports collection)。
二进制安装所需软件:
# /usr/sbin/pkg_add -r -v mysql51-server # /usr/sbin/pkg_add -r -v nginx # /usr/sbin/pkg_add -r -v php5 # /usr/sbin/pkg_add -r -v php5-mysql # /usr/sbin/pkg_add -r -v lighttpd
源代码安装所需软件:
# cd /usr/ports/databases/mysql51-server # make install clean # cd /usr/ports/lang/php5 # make install clean # cd /usr/ports/lang/php5-extensions # make config # make install clean # cd /usr/ports/databases/php5-mysql # make install clean # cd /usr/ports/www/lighttpd # make install clean
实际上我们只需要 lighttpd 里面的 spawn-fcgi,所以先把 spawn-fcgi 拷出来再删除 lighttpd。
# cp /usr/local/bin/spawn-fcgi /root/ # /usr/sbin/pkg_delete -v lighttpd-1.4.22 # cp /root/spawn-fcgi /usr/local/bin/spawn-fcgi
配置 MySQL
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf # chown -R mysql:mysql /var/db/mysql # /usr/local/bin/mysqld_safe & # /usr/local/bin/mysqladmin -u root password ‘newpass’
配置 PHP
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
配置 FastCGI
启动 PHP FastCGI:
# /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/local/bin/php-cgi
-a 127.0.0.1 : PHP FastCGI 绑定IP地址
-p 9000: PHP FastCGI 指定端口
-u www : PHP FastCGI 用户名
-g www : PHP FastCGI 用户组
-f /usr/local/bin/php-cgi : 指向 PHP5 fastcgi
检查 FastCGI 是否启动:
# sockstat -4 | grep 9000 www php-cgi 33475 0 tcp4 127.0.0.1:9000 *:* www php-cgi 33474 0 tcp4 127.0.0.1:9000 *:* www php-cgi 33473 0 tcp4 127.0.0.1:9000 *:* www php-cgi 33472 0 tcp4 127.0.0.1:9000 *:* www php-cgi 33471 0 tcp4 127.0.0.1:9000 *:* www php-cgi 33470 0 tcp4 127.0.0.1:9000 *:*
如果不想每次重启 FreeBSD 都打一边上面的命令的话,把下面 PHP FastCGI 启动/自动代码保存到 FreeBSD 的启动目录(/usr/local/etc/rc.d/phpfcgi)里:
#!/bin/sh # NGINX FastCGI php5 startup shell script # Feedback# http://bash.cyberciti.biz/web-server/fastcgi-php-server-start-stop-script/ # Set ME # PROVIDES=php-cgi LIGHTTPD_FCGI=/usr/local/bin/spawn-fcgi SERVER_IP=127.0.0.1 SERVER_PORT=9000 SERVER_USER=www SERVER_GROUP=www PHP_CGI=/usr/local/bin/php-cgi PGREP=/bin/pgrep KILLALL=/usr/bin/killall ### No editing below #### cmd=$1 pcgi_start(){ echo "Starting $PROVIDES..." $LIGHTTPD_FCGI -a $SERVER_IP -p $SERVER_PORT -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI } pcgi_stop(){ echo "Killing $PROVIDES..." $KILLALL $PROVIDES } pcgi_restart(){ pcgi_stop pcgi_start } pcgi_status(){ $PGREP $PROVIDES > /dev/null [ $? -eq 0 ] && echo "$PROVIDES running" || echo "$PROVIDES NOT running" } pcgi_help(){ echo "Usage: $0 {start|stop|restart|status}" } case ${cmd} in [Ss][Tt][Aa][Rr][Tt]) pcgi_start;; [Ss][Tt][Oo][Pp]) pcgi_stop;; [Rr][Ee][Ss][Tt][Aa][Rr][Tt]) pcgi_restart;; [Ss][Tt][Aa][Tt][Uu][Ss]) pcgi_status ;; *) pcgi_help ;; esac
注意要改成可执行文件:
# chmod +x /usr/local/etc/rc.d/phpfcgi
现在可以用 shell 脚本启动并查看 PHP FastCGI了:
# /usr/local/etc/rc.d/phpfcgi start # sockstat -4 | less
配置 Nginx
打开 nginx.conf 配置 Nginx:
# vi /usr/local/etc/nginx/nginx.conf user www; # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/vpsee$fastcgi_script_name; include fastcgi_params; }
启动 Nginx:
# /usr/local/etc/rc.d/nginx start
如果启动不了,打开 /etc/rc.conf,加入
# vi /etc/rc.conf nginx_enable="YES" # /usr/local/etc/rc.d/nginx restart
测试
用文本写个 php 文件,用 phpinfo() 测试一下 PHP 是否可以运行。
不知道freebsd和debian哪个省内存