• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Nginx、php-fpm、FuelPHPの環境で開発することになったので、 開発環境を構築してみました。

<参考書籍>
ハイパフォーマンスHTTPサーバ Nginx入門
はじめてのフレームワークとしてのFuelPHP
<参考サイト>
FuelPHPをNginxで動かしてみる

PHPインストール

ソースのダウンロードと展開

   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      

nginxインストール(php-fpm有効化)

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  <         #charset koi8-r;
   8  ---
   9  >         charset utf-8;
  10  41c43,44
  11  <         #access_log  logs/host.access.log  main;
  12  ---
  13  >         access_log  logs/fuelphp-sample.access.log;
  14  >         error_log   logs/fuelphp-sample.error.log;
  15  42a46
  16  >         # すべてのアクセスをindex.phpに振る。
  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  <         #error_page  404              /404.html;
  24  < 
  25  <         # redirect server error pages to the static page /50x.html
  26  <         #
  27  <         error_page   500 502 503 504  /50x.html;
  28  <         location = /50x.html {
  29  <             root   html;
  30  ---
  31  >         # phpを実行できるようにする。
  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  >             #fastcgi_param  FUEL_ENV production; #リリース時にはコメントを外して有効にする。
  37  >             include        fastcgi_params;
  38  57,78c60,65
  39  <         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  40  <         #
  41  <         #location ~ \.php$ {
  42  <         #    proxy_pass   http://127.0.0.1;
  43  <         #}
  44  < 
  45  <         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  46  <         #
  47  <         #location ~ \.php$ {
  48  <         #    root           html;
  49  <         #    fastcgi_pass   127.0.0.1:9000;
  50  <         #    fastcgi_index  index.php;
  51  <         #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  52  <         #    include        fastcgi_params;
  53  <         #}
  54  < 
  55  <         # deny access to .htaccess files, if Apache's document root
  56  <         # concurs with nginx's one
  57  <         #
  58  <         #location ~ /\.ht {
  59  <         #    deny  all;
  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  #user  nobody;
  71  worker_processes  1;
  72  
  73  #error_log  logs/error.log;
  74  #error_log  logs/error.log  notice;
  75  #error_log  logs/error.log  info;
  76  
  77  #pid        logs/nginx.pid;
  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      #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  90      #                  '$status $body_bytes_sent "$http_referer" '
  91      #                  '"$http_user_agent" "$http_x_forwarded_for"';
  92  
  93      #access_log  logs/access.log  main;
  94  
  95      sendfile        on;
  96      #tcp_nopush     on;
  97  
  98      #keepalive_timeout  0;
  99      keepalive_timeout  65;
 100  
 101      #gzip  on;
 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          # すべてのアクセスをindex.phpに振る。
 115          location / {
 116              try_files $uri /index.php?$uri$args;
 117          }
 118  
 119          # phpを実行できるようにする。
 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              #fastcgi_param  FUEL_ENV production; #リリース時にはコメントを外して有効にする。
 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      # another virtual host using mix of IP-, name-, and port-based configuration
 138      #
 139      #server {
 140      #    listen       8000;
 141      #    listen       somename:8080;
 142      #    server_name  somename  alias  another.alias;
 143  
 144      #    location / {
 145      #        root   html;
 146      #        index  index.html index.htm;
 147      #    }
 148      #}
 149  
 150  
 151      # HTTPS server
 152      #
 153      #server {
 154      #    listen       443;
 155      #    server_name  localhost;
 156  
 157      #    ssl                  on;
 158      #    ssl_certificate      cert.pem;
 159      #    ssl_certificate_key  cert.key;
 160  
 161      #    ssl_session_timeout  5m;
 162  
 163      #    ssl_protocols  SSLv2 SSLv3 TLSv1;
 164      #    ssl_ciphers  HIGH:!aNULL:!MD5;
 165      #    ssl_prefer_server_ciphers   on;
 166  
 167      #    location / {
 168      #        root   html;
 169      #        index  index.html index.htm;
 170      #    }
 171      #}
 172  
 173  }
 174  $ sudo /usr/local/nginx/sbin/nginx -s reload

Xdebugインストール

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設定(Phar設定、Xdebug設定)

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をインストールします。詳細は割愛します。

PDTインストール

Eclipseの[Help] メニューの [Install New Software] からPDTをインストールします。詳細は割愛します。

MakeGoodインストール

Eclipseの[Help] メニューの [Install New Software] からMakeGoodをインストールします。詳細は割愛します。

PHPUnitインストール

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インストール

Gitをインストールします。

   1  $ sudo apt-get install git

インストールされたGitのバージョンを確認します。

   1  $ git --version
   2  git version 1.7.9.5

FuelPHPインストール

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設定

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,

Eclipse/PDT設定

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]ボタンを押して終了します。

posted by Png akanuma on Thu 9 Aug 2012 at 07:52

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry2240
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ