SlideShare a Scribd company logo
FuelPHPのScaffoldで作
成した画面をdotcloud
にデプロイしてみた
         2013/03/23
   FuelPHP勉強会 東京 vol.3
       @toshihirock
自己紹介
• @toshihirock
• PHPは今年まで未経験。
• 今年に入って「PHPでプログラム作成し
 て」といわれた。しかも納期は約1ヶ
 月、だと・・・

• 先輩の勧めで「FuelPHP」を利用
• FuelPHPのおかげで無事納品←今ここ
今日のお話
FuelPHPをdotcloudに
 デプロイしてみた
dotcloud?
FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた
dotcloud?
• PaaS。AWSとかHerokuとか
• PHP,Node.js,Ruby,Javaなど対応
• DBはMySQL,PostgreSQLなど対応
• 無料でも使える
• WebSocket使える。サーバーへのsshも
 可能。cronとかも仕込める
目次
• ローカル環境でScaffold画面を作成
• dotcloudの利用準備
• Welcomeページをdotcloudで(メイン)
• Scaffoldで作成した画面を表示 (メイン)
• まとめ
確認内容

• FuelPHP1.5
• MySQL
• ローカル操作はMacOSX
• dotcloudのCLIは0.9
1.ローカル環境で
Scaffold画面を作成
アプリ作成+Scaffold
$ cd ~/Site/

$ oil create blog

$ oil g scaffold post title:varchar[255]
summary:varchar[255] body:text

$ oil refine migrate
http://localhost/blog/public/
2.dotcloud利用準備
アカウント作成




https://www.dotcloud.com/
コマンドラインツー
      ルのインストール
$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud setup


 • 公式:http://docs.dotcloud.com/firststeps/install/
 • Windows,Linuxは上記を確認
 • 「dotcloud setup」でログイン情報など入力
4.Welcomeページを
   dotcloudで
ドキュメント類の削
       除(必須ではない)
$ cd ~/Site/blog/
$ rm *.md
$ rm -rf docs

 • dotcloudにpushする際に時間がかかるため、
   不必要なファイルは削除
dotcloudアプリの作成

$ dotcloud create fuelphpapp
$ dotcloud list

 • 「dotcloud create <アプリケション名>」で
   アプリを作成

 • 「dotcloud list」で作成したアプリ一覧取得
   し、アプリが作成された事を確認
dotcloud.ymlの作成
$ cd ~/Site/blog/
$ vi dotcloud.yml

 • dotcloudにデプロイする際に必須
 • デプロイする言語、利用するDB、Webサイ
   トのDocumentRootなどを指定

 • ファイルはアプリケーションの一番上の階
   層に配置
dotcloud.yml

1 www:
2      type: php
3      approot: public
4 db:
5      type: mysql
push
$ dotcloud connect fuelphpapp
$ dotcloud push

 • 「dotcloud connect <アプリケーション名
   >」で利用するアプリを選択

 • 「dotcloud push」でconncetしたアプリに
   pushする。最後にアクセスするURLが表示
   されるのでブラウザでアクセス
http://[hostname]
5.Scaffoldで作成した
   画面の表示
Nginxの設定
• dotcloudではWebサーバーはNginxを利用
• 「nginx.conf」というファイルをpushすると
 doctloudでnginxの設定が出来る

• URLから「index.php」を取り除く為に
 rewrite設定を行う
nginx.conf

1 try_files $uri /index.php?$uri&$args;
MySQL
• 「dotcloud run db --mysql」でコンソールで
 の操作が可能。以下をSQLで実施。

 • DB作成
 • DB操作ユーザーの作成
 • テーブルの作成
時間の関係で詳細は省略させて頂きます。
DB接続設定
• db.phpを編集し、dotcloudのMySQLに接続す
 る

• 接続ホスト名、接続ポート番号などは
 「dotcloud info <DBのインスタンス名>」で
 確認できる

• dotcloudにenvironment.jsonが存在し、そこ
 にも書いてある
どうやって設定?

• ファイルを確認して直書き
 • 設定ミスがありえる(port番号間違えて
  小1時間悩んだ。。。)

• ファイルから取得して値を設定
 • ミスがないので安心!
db.php
 1   <?php
 2   $filepath = $_SERVER['HOME'].'/environment.json';
 3   $env = json_decode(file_get_contents($filepath), true);
 4   $host = $env['DOTCLOUD_DB_MYSQL_HOST'];
 5   $port = $env['DOTCLOUD_DB_MYSQL_PORT'];
 6   $dbname = 'test_db';
 7   $dsn = 'mysql:host='.$host.';port='.$port.';dbname='.$dbname;
 8
 9   return array(
10       'default' => array(
11           'connection' => array(
12               'dsn'   => $dsn,
13               'username'   => 'dbuser',
14               'password'   => '******',
15               'persistent' => false,
16               'compress' => false,
17           ),
18       ),
19   );
push

$ dotcloud push
http://[hostname]/post/
まとめ
• dotcloud独自の設定は以下のみでOK
 • dotcloud.yml
 • nginx.conf
 • db.php
• dotcloudではSSHログイン、cron設定も無料
 で出来るので結構便利(taskの定期実行など
 も可能かと)
参考にさせて頂いた
                      サイト
•   FuelPHPをNginxで動かしてみる

    •   http://akibe.com/fuelphp%E3%82%92nginx
        %E3%81%A7%E5%8B%95%E3%81%8B
        %E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/

•   Ubuntu 12.04 にて dotCloud の MySQL を試してみる
    (PHP編)

    •   http://www-indblue.blogspot.jp/2012/08/
        ubuntu-1204-dotcloud-mysql-php.html
ご清聴ありがとうご
  ざいました

More Related Content

FuelPHPのscaffoldで作成した画面をdotcloudにデプロイしてみた