FreeBSD9 – nginx + php-fpm + Symfony2

気になっていたnginxを試してみた。

基本的に前回の「FreeBSD – FreeBSD9.0-RELEASEにSymfony2を入れてみる。」と同じ。変更箇所はApacheの代わりにnginxをインストールする事と、PHPのビルドオプションにphp-fpmを指定する事くらいだ。

前提

  • インストールはVM上のFreeBSD9 x86版。
  • ローカルIPアドレス「192.168.1.161」を付与。
  • 他は前回記事を参照。

nginxのインストール

portsからインストール。

portinstall -f www/nginx

を実行。

ビルドオプションは

[ ] DEBUG                 Enable debug flags
[ ] DEBUGLOG              Enable debug log (--with-debug)
[ ] FILE_AIO              Enable file aio
[*] IPV6                  Enable IPv6 support
[ ] GOOGLE_PERFTOOLS      Enable google perftools module
[*] HTTP                  Enable HTTP module
[*] HTTP_ADDITION         Enable http_addition module
[*] HTTP_CACHE            Enable http_cache module
[ ] HTTP_DAV              Enable http_webdav module
[*] HTTP_FLV              Enable http_flv module
[*] HTTP_GEOIP            Enable http_geoip module
[ ] HTTP_GZIP_STATIC      Enable http_gzip_static module
[ ] HTTP_IMAGE_FILTER     Enable http_image_filter module
[ ] HTTP_PERL             Enable http_perl module
[ ] HTTP_RANDOM_INDEX     Enable http_random_index module
[*] HTTP_REALIP           Enable http_realip module
[*] HTTP_REWRITE          Enable http_rewrite module
[ ] HTTP_SECURE_LINK      Enable http_secure_link module
[*] HTTP_SSL              Enable http_ssl module
[*] HTTP_STATUS           Enable http_stub_status module
[*] HTTP_SUB              Enable http_sub module
[ ] HTTP_XSLT             Enable http_xslt module
[ ] MAIL                  Enable IMAP4/POP3/SMTP proxy module
[ ] MAIL_IMAP             Enable IMAP4 proxy module
[ ] MAIL_POP3             Enable POP3 proxy module
[ ] MAIL_SMTP             Enable SMTP proxy module
[ ] MAIL_SSL              Enable mail_ssl module
[*] WWW                   Enable html sample files
[ ] CACHE_PURGE           3rd party cache_purge module
[ ] ECHO                  3rd party echo module
[*] HEADERS_MORE          3rd party headers_more module
[ ] HTTP_ACCEPT_LANGUAGE  3rd party accept_language module
[ ] HTTP_ACCESSKEY        3rd party http_accesskey module
[ ] HTTP_AUTH_DIGEST      3rd party http_authdigest module
[*] HTTP_AUTH_PAM         3rd party http_auth_pam module
[ ] HTTP_AUTH_REQ         3rd party http_auth_request module
[ ] HTTP_DAV_EXT          3rd party webdav_ext module
[ ] HTTP_EVAL             3rd party eval module
[ ] HTTP_FANCYINDEX       3rd party http_fancyindex module
[ ] HTTP_GUNZIP_FILTER    3rd party http_gunzip_filter module
[ ] HTTP_MOGILEFS         3rd party mogilefs module
[ ] HTTP_NOTICE           3rd party notice module
[ ] HTTP_PUSH             3rd party push module
[ ] HTTP_REDIS            3rd party http_redis module
[ ] HTTP_RESPONSE         3rd party http_response module
[ ] HTTP_SUBS_FILTER      3rd party subs filter module
[ ] HTTP_UPLOAD           3rd party upload module
[ ] HTTP_UPLOAD_PROGRESS  3rd party uploadprogress module
[ ] HTTP_UPSTREAM_FAIR    3rd party upstream fair module
[ ] HTTP_UPSTREAM_HASH    3rd party upstream hash module
[ ] HTTP_UPSTREAM_STICKY  3rd party upstream sticky module
[ ] HTTP_ZIP              3rd party http_zip module
[ ] ARRAYVAR              3rd party array_var module
[ ] CHUNKIN               3rd party chunkin module
[ ] DRIZZLE               3rd party drizzlie module
[ ] ENCRYPTSESSION        3rd party encrypted_session module
[ ] FORMINPUT             3rd party form_input module
[ ] GRIDFS                3rd party gridfs module
[ ] ICONV                 3rd party iconv module
[ ] LET                   3rd party let module
[ ] LUA                   3rd party lua module
[ ] MEMC                  3rd party memc (memcached) module
[ ] NAXSI                 3rd party naxsi module
[ ] PASSENGER             3rd party passenger module
[ ] POSTGRES              3rd party postgresql module
[ ] RDS_CSV               3rd party rds_csv module
[ ] RDS_JSON              3rd party rds_json module
[ ] REDIS2                3rd party redis2 module
[ ] RTMP                  3rd party rtmp module
[ ] SET_MISC              3rd party set_misc module
[ ] SFLOW                 3rd party sflow module
[ ] SLOWFS_CACHE          3rd party slowfs_cache module
[ ] SRCACHE               3rd party srcache module
[ ] SUPERVISORD           3rd party supervisord module
[ ] SYSLOG_SUPPORT        3rd party syslog support
[ ] TCP_PROXY             3rd party tcp_proxy module
[ ] UDPLOG                3rd party udplog (syslog) module
[ ] XRID_HEADER           3rd party x-rid header module
[ ] XSS                   3rd party xss module
[ ] VIDEO                 Video module support
[ ] HTTP_MP4              S(VIDEO): Enable http_mp4 module
[ ] HTTP_MP4_H264         S(VIDEO): 3rd party mp4/h264 module

とした。

設定ファイルは「/usr/local/etc/nginx」に作成される。

nginx.confの中身はnginxのwikiにがあるのでそれを参考に

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        root /usr/local/www/symfony2/web;
        rewrite ^/app\.php/?(.*)$ /$1 permanent;

        location / {
            index app.php;
            try_files $uri @rewriteapp;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }

        location @rewriteapp {
            rewrite ^(.*)$ /app.php/$1 last;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ ^/(app|app_dev|config)\.php(/|$) {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            fastcgi_param  HTTPS              off;
        }
    }
}

のように(抜粋)している。

ドキュメントルートは「/usr/local/www/symfony2/web/」としているので、Symfony2を取得したら「/usr/local/www/」に移動して展開後、作成された「Symfony」ディレクトリを「symfony2」にリネーム(mv)している。

PHPのインストール

portsでの最新版は5.4.4。

Symfonyでは、APCの導入が推奨される。

APC自体は1.3.10でphp5.4系に対応した様な話だけれども、php5.4.xとAPCの環境ではSymfony2はまだ相性が悪いようで、サンプルを動作させるとエラーが発生する。(See also. InvalidArgumentException: There is no extension able to load the configuration for “framework”

従って、php5.4系列でSymfony2を使用する場合はAPCはインストールしないか、php5.3系を導入する必要がある。

上記リンク先のフォーラムでは「APCは外しておけ、既知の問題だ」と言われているけれども、APCを入れないのもなんなので、ここはphp5.3を導入する。

portinstall -f lang/php53

を実行。

ビルドオプションは

[*] CLI        Build CLI version
[*] CGI        Build CGI version
[*] FPM        Build FPM version (experimental)
[ ] APACHE     Build Apache module
[ ] AP2FILTER   Use Apache 2.x filter interface (experimental
[ ] DEBUG      Enable debug
[*] SUHOSIN    Enable Suhosin protection system
[*] MULTIBYTE  Enable zend multibyte support
[*] IPV6       Enable ipv6 support
[ ] MAILHEAD   Enable mail header patch
[ ] LINKTHR    Link thread lib (for threaded extensions)

のとおり。(FPMのチェックを忘れない事。)

後は、

portinstall -f lang/php53-extensions

を実行してphp-extensions経由で必要なモジュールを導入する。

rc.confの編集

「/etc」にあるrc.confに下記を追加。

nginx_enable="YES"
php_fpm_enable="YES"

確認

「http://192.168.1.161/config.php」にアクセスして環境チェックを行う。

問題が無ければ導入終了。

[adrotate banner=”1″]

コメント

タイトルとURLをコピーしました