FreeBSD+Nginx+FastCGI PHP+MySQL服务器
听说Nginx很强,公司的运维总提起Nginx,今天自己动手重装了自己的服务器。服务器系统还是用FreeBSD系统,这次采用了新的7.2版本。
所需软件:
nginx 0.6.38
spawn-fcgi-1.6.0
php5-5.2.9
MySQL 5.0.77
proftpd-1.3.2
memcached-1.2.6_1
1、安装系统,系统安装用了不到15分钟,选择最小安装,选择了Ports、Perl、Python等几个必要的包。开启ssh。
2、使用Ports 安装了php5、vim、spawn-fcgi、memcached,这样做有一个好处,FreeBSD系统,会把一些基本的lib都自动安装上。比如libxml2、libzip、libgd2、libjpeg,还有一些常用的基本软件也都会安装上。
Ports安装mysql发现,mysql下载不了了。php5选择ports其实,并不是真的要用它,实际用的时候是自己下载编译安装的。
3、下载了一份MySQL,编译安装。
Sh代码
#./configure with_charset=utf8 with_charset=gbk with_charset=gb2312 \
with_xcharset=all with_proc_scope_pth=yes build_optimized=yes \
build_static=yes skip_dns_check=yes PREFIX=/usr/local/mysql #addgroup mysql
#adduser mysql
#cd /usr/local/mysql
#./bin/mysql_install_db --basedir = /usr/local/mysql/ --datadir=/wwwroot/databases
#./configure with_charset=utf8 with_charset=gbk with_charset=gb2312 \ with_xcharset=all with_proc_scope_pth=yes build_optimized=yes \ build_static=yes skip_dns_check=yes PREFIX=/usr/local/mysql #addgroup mysql #adduser mysql #cd /usr/local/mysql #./bin/mysql_install_db --basedir = /usr/local/mysql/ --datadir=/wwwroot/databases
需要把my.cnf复制到/etc/my.cnf,然后配置文件中加入
[mysqld] datadir=/wwwroot/databases
./bin/mysqld_safe --user=mysql &
4、安装了一个elinks,elinks到php.net,下载了一份php5.2.9,解压
Java代码
#tar xvf php5.2.9.tar.bz2
#./configure --prefix=/usr/local/php --with-gd --enable-fastcgi --enable-ftp\
--with-zlib --enable-mbstring --with-mcrypt --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql \
--enable-zip --with-pear
#tar xvf php5.2.9.tar.bz2 #./configure --prefix=/usr/local/php --with-gd --enable-fastcgi --enable-ftp\ --with-zlib --enable-mbstring --with-mcrypt --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql \ --enable-zip --with-pear
php.ini-dist复制到/usr/local/php/lib/php.ini,然后修改一下配置文件,开启所需的扩展。
5、Nginx也是ports安装的
cd /usr/ports/www/nginx/
make install clean PREFIX=/usr/local/nginx
注意:安装nginx之前需要有pcre包。ports安装之前先安装pcre。如果安装nginx的时候,自动安装pcre,就会把pcre安装到/usr/local/nginx,nginx就会找不到/usr/local的pcre而报错。
6、配置nginx
Java代码
events {
worker_connections 1024;
use kqueue; #FreeSBD下要启用kqueue,Linux下是epoll
}
events { worker_connections 1024; use kqueue; #FreeSBD下要启用kqueue,Linux下是epoll }
Java代码
location ~ \.php$ {
include fcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
location ~ \.php$ { include fcgi.conf; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; }
配置fcgi.conf nginx自带那个配置文件fastcgi_param,缺少一条
Java代码
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
$document_root就是php程序的根目录。如果nginx的虚拟主机中有这一条,可以引用变量。如果没有,就填写绝对路径。/wwwroot$fastcgi_script_name;
7、现在就可以启动服务器了
Sh代码
#spawn-fcgi -a 127.0.0.1 -C 10 -p 9000 -u www -g www -f /usr/local/php/bin/php-cgi
#nginx
#spawn-fcgi -a 127.0.0.1 -C 10 -p 9000 -u www -g www -f /usr/local/php/bin/php-cgi #nginx
可以把phpmyadmin和phpinfo.php放到网站根目录,/wwwroot,浏览效果。