Nginx、php-fpm、FuelPHPの環境で開発することになったので、
開発環境を構築してみました。
<参考書籍>
ハイパフォーマンスHTTPサーバ Nginx入門
はじめてのフレームワークとしてのFuelPHP
<参考サイト>
FuelPHPをNginxで動かしてみる
ソースのダウンロードと展開
1 $ wget -O php-5.3.15.tar.gz http://jp2.php.net/get/php-5.3.15.tar.gz/from/jp.php.net/mirror
2 --2012-08-13 18:13:07-- http://jp2.php.net/get/php-5.3.15.tar.gz/from/jp.php.net/mirror
3 jp2.php.net (jp2.php.net) をDNSに問いあわせています... 49.212.134.217
4 jp2.php.net (jp2.php.net)|49.212.134.217|:80 に接続しています... 接続しました。
5 HTTP による接続要求を送信しました、応答を待っています... 302 Found
6 場所: http://jp.php.net/distributions/php-5.3.15.tar.gz [続く]
7 --2012-08-13 18:13:08-- http://jp.php.net/distributions/php-5.3.15.tar.gz
8 jp.php.net (jp.php.net) をDNSに問いあわせています... 61.195.146.164
9 jp.php.net (jp.php.net)|61.195.146.164|:80 に接続しています... 接続しました。
10 HTTP による接続要求を送信しました、応答を待っています... 200 OK
11 長さ: 14806681 (14M) [application/x-gzip]
12 `php-5.3.15.tar.gz' に保存中
13
14 100%[======================================>] 14,806,681 67.7K/s 時間 3m 49s
15
16 2012-08-13 18:16:57 (63.0 KB/s) - `php-5.3.15.tar.gz' へ保存完了 [14806681/14806681]
17 $
18 $ tar zxf php-5.3.15.tar.gz
phpのビルドに必要なライブラリのインストール
1 $ sudo apt-get install libxml2-dev libevent-dev
PHP-FPMを有効化してconfigure
1 $ ./configure --enable-fpm
PHPインストール
1 $ sudo make all install
PHP-FPM用ユーザ作成
1 $ sudo useradd --shell /sbin/nologin php-fpm
PHP-FPM設定ファイル作成
1 $ sudo cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
2 $ sudo vi /usr/local/etc/php-fpm.conf
3 $ diff /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
4 140,141c140,141
5 < user = nobody
6 < group = nobody
7 ---
8 > user = php-fpm
9 > group = php-fpm
PHP-FPM起動
1 $ sudo /usr/local/sbin/php-fpm
2 $ ps aux | grep php-fpm | grep -v grep
3 root 20053 0.0 0.1 15688 2032 ? Ss 20:28 0:00 php-fpm: master process (/usr/local/etc/php-fpm.conf)
4 php-fpm 20054 0.0 0.1 15688 1576 ? S 20:28 0:00 php-fpm: pool www
5 php-fpm 20055 0.0 0.1 15688 1576 ? S 20:28 0:00 php-fpm: pool www
gccがインストールされていることを確認
1 $ which gcc
2 /usr/bin/gcc
PCRE(Perl Compatible Regular Expression: Perl互換正規表)ライブラリをインストール
1 $ sudo apt-get install libpcre3 libpcre3-dev
zlibライブラリインストール
1 $ sudo apt-get install zlib1g zlib1g-dev
OpenSSLインストール
1 $ sudo apt-get install openssl libssl-dev
Nginxのソースのダウンロードと展開
1 $ wget http://nginx.org/download/nginx-1.2.3.tar.gz
2 --2012-08-13 11:03:03-- http://nginx.org/download/nginx-1.2.3.tar.gz
3 nginx.org (nginx.org) をDNSに問いあわせています... 206.251.255.63
4 nginx.org (nginx.org)|206.251.255.63|:80 に接続しています... 接続しました。
5 HTTP による接続要求を送信しました、応答を待っています... 200 OK
6 長さ: 723294 (706K) [application/octet-stream]
7 `nginx-1.2.3.tar.gz' に保存中
8
9 100%[======================================>] 723,294 68.0K/s 時間 11s
10
11 2012-08-13 11:03:14 (65.1 KB/s) - `nginx-1.2.3.tar.gz' へ保存完了 [723294/723294]
12
13 $
14 $ tar zxf nginx-1.2.3.tar.gz
15 $
Nginx用ユーザ作成
1 $ sudo useradd --shell /sbin/nologin nginx
Nginxビルド、インストール
1 $ cd nginx-1.2.3/
2 $ ./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module
3 $ make
4 $ sudo make install
Nginx起動確認
1 $ sudo /usr/local/nginx/sbin/nginx
2 $ ps aux | grep nginx | grep -v grep
3 root 14718 0.0 0.0 5792 684 ? Ss 17:58 0:00 nginx: master process /usr/local/nginx/sbin/nginx
4 nginx 14719 0.0 0.1 5948 1316 ? S 17:58 0:00 nginx: worker process
PHP-FPM,Nginx,FuelPHPの連携設定
1 $ sudo vi /usr/local/nginx/conf/nginx.conf
2 $ diff /usr/local/nginx/conf/nginx.conf.default /usr/local/nginx/conf/nginx.conf
3 37a38,39
4 > root /var/www/fuelphp-sample/public;
5 > index index.php;
6 39c41
7 <
8 ---
9 > charset utf-8;
10 41c43,44
11 <
12 ---
13 > access_log logs/fuelphp-sample.access.log;
14 > error_log logs/fuelphp-sample.error.log;
15 42a46
16 >
17 44,45c48
18 < root html;
19 < index index.html index.htm;
20 ---
21 > try_files $uri /index.php?$uri$args;
22 48,54c51,57
23 <
24 <
25 <
26 <
27 < error_page 500 502 503 504 /50x.html;
28 < location = /50x.html {
29 < root html;
30 ---
31 >
32 > location ~ .*\.php$ {
33 > fastcgi_pass 127.0.0.1:9000;
34 > fastcgi_index index.php;
35 > fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
36 >
37 > include fastcgi_params;
38 57,78c60,65
39 <
40 <
41 <
42 <
43 <
44 <
45 <
46 <
47 <
48 <
49 <
50 <
51 <
52 <
53 <
54 <
55 <
56 <
57 <
58 <
59 <
60 <
61 ---
62 >
63 > location ~ /\. {
64 > access_log off;
65 > log_not_found off;
66 > deny all;
67 > }
68 $ cat /usr/local/nginx/conf/nginx.conf
69
70
71 worker_processes 1;
72
73
74
75
76
77
78
79
80 events {
81 worker_connections 1024;
82 }
83
84
85 http {
86 include mime.types;
87 default_type application/octet-stream;
88
89
90
91
92
93
94
95 sendfile on;
96
97
98
99 keepalive_timeout 65;
100
101
102
103 server {
104 listen 80;
105 server_name localhost;
106 root /var/www/fuelphp-sample/public;
107 index index.php;
108
109 charset utf-8;
110
111 access_log logs/fuelphp-sample.access.log;
112 error_log logs/fuelphp-sample.error.log;
113
114
115 location / {
116 try_files $uri /index.php?$uri$args;
117 }
118
119
120 location ~ .*\.php$ {
121 fastcgi_pass 127.0.0.1:9000;
122 fastcgi_index index.php;
123 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
124
125 include fastcgi_params;
126 }
127
128
129 location ~ /\. {
130 access_log off;
131 log_not_found off;
132 deny all;
133 }
134 }
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173 }
174 $ sudo /usr/local/nginx/sbin/nginx -s reload
Xdebugのコンパイルに必要なコマンドをインストール
1 $ sudo apt-get install autoconf gcc g++
Xdebugのソースをダウンロード、展開
1 $ wget http://xdebug.org/files/xdebug-2.2.1.tgz--2012-08-13 21:14:58-- http://xdebug.org/files/xdebug-2.2.1.tgz
2 xdebug.org (xdebug.org) をDNSに問いあわせています... 82.113.146.227
3 xdebug.org (xdebug.org)|82.113.146.227|:80 に接続しています... 接続しました。
4 HTTP による接続要求を送信しました、応答を待っています... 200 OK
5 長さ: 248057 (242K) [application/x-gtar-compressed]
6 `xdebug-2.2.1.tgz' に保存中
7
8 100%[======================================>] 248,057 53.8K/s 時間 5.6s
9
10 2012-08-13 21:15:04 (42.9 KB/s) - `xdebug-2.2.1.tgz' へ保存完了 [248057/248057]
11 $ tar zxf xdebug-2.2.1.tgz
12 $ cd xdebug-2.2.1/
コンパイル用設定
1 $ phpize
2 Configuring for:
3 PHP Api Version: 20090626
4 Zend Module Api No: 20090626
5 Zend Extension Api No: 220090626
6 configure.in:3: warning: prefer named diversions
7 configure.in:3: warning: prefer named diversions
8 $ which php-config
9 /usr/local/bin/php-config
10 $ ./configure --enable-xdebug --with-php-config=/usr/local/bin/php-config
コンパイル、インストール
1 $ make
2 $ sudo make install
3 $ ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
4 -rwxr-xr-x 1 root root 669138 8月 13 21:53 /usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
php.iniを用意
1 $ sudo cp /home/akanuma/src/php-5.3.15/php.ini-development /usr/local/lib/php.ini
Pharを正しく扱うためのdetect_unicode設定と、xdebugの設定を追加
1 $ sudo vi /usr/local/lib/php.ini
2 $ diff /home/akanuma/src/php-5.3.15/php.ini-development /usr/local/lib/php.ini
3 928a929,930
4 > detect_unicode = Off
5 >
6 1914a1917,1929
7 >
8 > [xdebug]
9 > zend_extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
10 > xdebug.collect_params = 4
11 > xdebug.dump.GET = "*"
12 > xdebug.dump.POST = "*"
13 > ;xdebug.profiler_enable = 0
14 > xdebug.remote_enable = 1
15 > ;xdebug.remote_handler = "dbgp"
16 > ;xdebug.remote_host = "localhost"
17 > ;xdebug.remote_log = "/var/log/xdebug/xdebug.log"
18 > ;xdebug.remote_mode = "req"
19 > ;xdebug.remote_port = 9000
リモートデバッグ用のログを準備しておく
1 $ sudo touch /var/log/xdebug/xdebug.log
2 $ sudo chmod 666 /var/log/xdebug/xdebug.log
3 $ ls -l /var/log/xdebug/xdebug.log
4 -rw-rw-rw- 1 root root 0 8月 13 23:11 /var/log/xdebug/xdebug.log
php-fpmを再起動し、http://localhost/ にアクセスして、 with Xdebug v2.2.1 の記述があることを確認する。
Eclipseの公式サイトからダウンロードするか、パッケージマネージャを使ってEclipseをインストールします。詳細は割愛します。
Eclipseの[Help] メニューの [Install New Software] からPDTをインストールします。詳細は割愛します。
Eclipseの[Help] メニューの [Install New Software] からMakeGoodをインストールします。詳細は割愛します。
PEARのチャネルを更新します。
1 $ sudo pear update-channels
2 [sudo] password for akanuma:
3 Updating channel "doc.php.net"
4 Channel "doc.php.net" is up to date
5 Updating channel "pear.php.net"
6 Channel "pear.php.net" is up to date
7 Updating channel "pecl.php.net"
8 Channel "pecl.php.net" is up to date
PEARパッケージをアップグレードします。
1 $ sudo pear upgrade -a PEAR
インストール済みのすべてのパッケージをアップグレードします。
1 $ sudo pear upgrade-all
2 Will upgrade channel://pear.php.net/console_getopt
3 Will upgrade channel://pear.php.net/archive_tar
4 downloading Console_Getopt-1.3.1.tar ...
5 Starting to download Console_Getopt-1.3.1.tar (Unknown size)
6 ........done: 21,504 bytes
7 downloading Archive_Tar-1.3.10.tar ...
8 Starting to download Archive_Tar-1.3.10.tar (Unknown size)
9 ...done: 98,304 bytes
10 upgrade-all ok: channel://pear.php.net/Console_Getopt-1.3.1
11 upgrade-all ok: channel://pear.php.net/Archive_Tar-1.3.10
新規チャネルを自動的に探すようにPEARの設定を変更します。
1 $ sudo pear config-set auto_discover 1
2 config-set succeeded
キャッシュをクリアします。
1 $ sudo pear clear-cache
2 reading directory /tmp/pear/cache
3 28 cache entries cleared
PHPUnitをインストール
1 $ sudo pear install -a pear.phpunit.de/PHPUnit
インストールされたPHPUnitのバージョン確認
1 $ phpunit --version
2 PHPUnit 3.6.12 by Sebastian Bergmann.
Gitをインストールします。
1 $ sudo apt-get install git
インストールされたGitのバージョンを確認します。
1 $ git --version
2 git version 1.7.9.5
curlをインストールします。
1 $ sudo apt-get install curl
FuelPHPのoilコマンドをインストールします。
1 $ curl get.fuelphp.com/oil | sh
2 % Total % Received % Xferd Average Speed Time Time Time Current
3 Dload Upload Total Spent Left Speed
4 100 244 100 244 0 0 204 0 0:00:01 0:00:01 --:--:-- 628
5 $ which oil
6 /usr/bin/oil
HTTPサーバのWebディレクトリにFuelPHPをインストールします。
1 $ cd /var/www
2 $ sudo oil create fuelphp-sample
http://localhost/ にアクセスして、FuelPHPのページが表示されることを確認します。
FuelPHPの言語設定、タイムゾーン設定、ロギング設定、default_charsetの設定を変更します。
1 $ cp fuel/app/config/config.php fuel/app/config/config.php.bak
2 $ vi fuel/app/config/config.php
3 $ diff fuel/app/config/config.php.bak fuel/app/config/config.php
4 12a13,15
5 > // set default charset
6 > ini_set('default_charset', 'UTF-8');
7 >
8 76c79
9 < 'language' => 'en', // Default language
10 ---
11 > 'language' => 'ja', // Default language
12 78c81
13 < 'locale' => 'en_US', // PHP set_locale() setting, null to not set
14 ---
15 > 'locale' => null, // PHP set_locale() setting, null to not set
16 89c92
17 < 'default_timezone' => 'UTC',
18 ---
19 > 'default_timezone' => 'Asia/Tokyo',
20 101c104
21 < 'log_threshold' => Fuel::L_WARNING,
22 ---
23 > 'log_threshold' => Fuel::L_ALL,
PHP実行可能ファイルの設定
[Window] メニューから [Preferences] を選択して、左カラムから、「PHP」の「PHP Executables」を選択し、[Add] ボタンを押します。
「Name」は「PHP」とし、「Executable path」に「/usr/local/bin/php」を設定します。 「PHP debugger」は「XDebug」を選択して[Finish]ボタンを押します。
次に左カラムから、 「PHP」の「Debug」を選択し、「PHP Debugger」に「XDebug」を、「PHP Executable」に「PHP」を選択し、[Apply] ボタンを押し、[OK]ボタンを押して終了します。