FreeBSD に nginx + php-fpm(PHP FastCGI Process Manager) + XCacheの環境を構築する



以前、CentOS5.2でnginx+php-fpmの環境を構築しましたが、
http://fujishinko.nengu.jp/linux/7836020.html
FreeBSDでも同様の環境を構築できるか試してみました。

まずはMySQLのインストール


■MySQLのインストール


#pkg_add -r databases/mysql-server-5.1.30

************************************************************************

Remember to run mysql_upgrade (with the optional --datadir= flag)
the first time you start the MySQL server after an upgrade from an
earlier version.

************************************************************************



utf8で使いたいので、設定ファイルをコピーして編集します。


#cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf
#chmod 644 /usr/local/etc/my.cnf
#vi /usr/local/etc/my.cnf

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8



自動起動するように/etc/rc.confに設定を仕込みます。


#vi /etc/rc.conf

###以下の二行を追加
mysql_enable="YES"
mysql_dbdir="/usr/local/mysql/data"



最後にmysqlを起動して、rootのパスワードを設定しました。


#/usr/local/etc/rc.d/mysql-server start
#mysqladmin -u root -h localhost password "password"




■php-fpmのインストール

必要なライブラリを取ってきます。


###phprのビルドに必要
#pkg_add -r All/libxml2-2.7.2_1
#pkg_add -r All/jpeg-6b_7
#pkg_add -r All/png-1.2.34
#pkg_add -r All/mcrypt-2.6.8

###phpizeを使うときに必要
#pkg_add -r All/autoconf-2.62



phpとphp-fpmのソースを取ってきて、ビルドを開始します。


#tar zxvf php-5.2.8.tar.gz
#gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1

#./configure --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib --enable-mbstring --with-openssl --with-mysql --with-mysql-sock --with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --without-sqlite --disable-pdo --disable-reflection

#make install

Installing PHP SAPI module: cgi
Installing PHP CGI binary: /usr/local/bin/
Installing FPM config: /usr/local/etc/php-fpm.conf
Installing init.d script: /usr/local/sbin/php-fpm
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page: /usr/local/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/lib/php/
[PEAR] Console_Getopt - installed: 1.2.3
[PEAR] Archive_Tar - installed: 1.3.2
[PEAR] Structures_Graph- installed: 1.0.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR - installed: 1.7.2
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path




引き続き、xcacheのインストールです。


#wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz

#tar xzvf xcache-1.2.2.tar.gz
#cd xcache-1.2.2
#phpize
#./configure --with-php-config=/usr/local/bin/php-config --enable-xcache
#make
#make install

Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/



ほとんど、CentOS5.2で試したときと同じ内容です。

php-fpmの設定ファイル/usr/local/etc/php-fpm.confの
Unix user of processesとUnix group of processesのコメントをはずし、
nobodyを指定します。


nginxの設定ファイルを編集します。


#cd /usr/local/nginx
#mkdir conf
#cp fastcgi_params conf/
#vi nginx.conf

###以下の設定を追加

location ~ .php$ {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include /usr/local/nginx/conf/fastcgi_params;
}



xcache用にphp.iniを作ります。


#vi /usr/local/lib/php.ini

magic_quotes_gpc=0
[xcache-common]
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 64M
default_charset = "utf-8"

[xcache.admin]
xcache.admin.auth = On
xcache.admin.user = "admin"
#md5でパスワードを記載
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"


これで動いてくれました。

サンプルとしてmantisを動かしてみましたが問題なし。
心なしかlinuxやdebianより動作が速い気がします。
※ベンチマークはとってませんが・・・



【参考URL】
VMWareにFreeBSDを入れる。
MySQLサーバ(データベース)のインストールと設定




もどる