気になっていた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″]
コメント