二回続けてのdotCloudエントリ
本エントリはUbuntu 12.04 にて dotCloud の MySQL を試してみる (コマンドライン編) の続きです。前回はコマンドラインで、helloworldサービスを作り、データベースとテーブルを作って、データをINSERTするところまでやりました。
今回はPHPからMySQLを操作してみます。
このエントリの目次
- PHP + MySQLのサービスにする
- environment.json
- PHPでMySQLに接続する
- PHPでMySQLを操作する
- 参考にさせて頂いたサイト
- さいごに
1.PHP + MySQLのサービスにする
dotcloud.ymlを下のように書きます。my_www: type: php my_database: type: mysqlmy_www や my_database は好きな文字列を指定できます。
あとは、下のコマンドを打てばOKです。
dotcloud push helloworld # upload ~/work/dotcloud/helloworld ssh://dotcloud@uploader.dotcloud.com:443/helloworld # rsync building file list ... done ./ (中略) Deployment finished. Your application is available at the following URLs my_www: http://helloworld1-windblue.dotcloud.com/ www: http://helloworld-windblue.dotcloud.com/
2.environment.json
dotCloudにはenvironment.jsonという設定ファイルがあり、そこに色々な情報が入っています。ホスト名やポート番号などのMySQLに関する情報も入っていて、それらはDOTCLOUD_MY_DATABASE_MYSQL_XXXというキーに格納されています。
PHPからMySQLに接続するにあたって、その設定ファイルを確認します。
詳しくはdotCloudのドキュメントにも載っているのでそちらも参照して下さい。
PHPからenvironment.jsonを確認
ローカルにてdotcloud.ymlと同じディレクトリにindex.phpを作り、下のようなソースを書いて dotcloud push します。<?php // environment.json ファイルから接続に必要な情報を取得 $filepath = $_SERVER['HOME'].'/environment.json'; $env = json_decode(file_get_contents($filepath), true); foreach ($env as $key => $value) { print_r($key . "=" . $value . "<br />"); }
作ったページにアクセスすると、設定値一覧が見れます。
SSH接続して直接environment.jsonを確認
PHPからじゃなくても、直接dotCloudのサーバに入って確認することもできます。下のコマンドでサーバに入ります。
dotcloud ssh helloworld.my_wwwhelloworld.my_wwwは <作ったサービス名>.<dotcloud.ymlに書いたキー です。
サーバに入ると、カレントディレクトリは
/home/dotcloud/になります。
ls コマンドで見ると、environment.json がありました。
$ ls code current environment.json environment.yml php-env revisions rsync-1345870675271
environment.yml というファイルもありましたが、内容は大体同じのようです。
3.PHPでMySQLに接続する
index.php を下のように書けばOKです。<?php // environment.json ファイルから接続に必要な情報を取得 $filepath = $_SERVER['HOME'].'/environment.json'; // 'DOTCLOUD_MY_DATABASE_MYSQL_MYSQL_XXX' というキーでMySQL関連のデータが入っている $host = $env['DOTCLOUD_MY_DATABASE_MYSQL_HOST']; $user = $env['DOTCLOUD_MY_DATABASE_MYSQL_LOGIN']; $pass = $env['DOTCLOUD_MY_DATABASE_MYSQL_PASSWORD']; $port = $env['DOTCLOUD_MY_DATABASE_MYSQL_PORT']; //前回のエントリで作成したデータベース「nujabes」 $dbName = 'nujabes'; //mysqliオブジェクト作成 $mysqli = new mysqli($host, $user, $pass, $dbName, $port);
PDOで接続したい場合はDotCloudでのMySQL,Redis,MongoDBの使い方 | Rest Termが非常に参考になります(ただしenvironment.jsonの、MySQLに関するキーが古いようですので そこだけご注意を)。
4.PHPでMySQLを操作する
もうあとは通常のMySQL操作と同様です。//前回のエントリで作成した「songs」というテーブルから全行取得するSQLを発行 $result = $mysqli->query('SELECT * FROM songs;'); //結果を取得していく $rows = array(); while ($row = mysqli_fetch_assoc($result)) { $rows[] = $row; } //実行結果を表示 print_r($rows);これで作ったページにアクセスすると、
Array ( [0] => Array ( [id] => 0 [title] => Luv (Sic) Pt. 2 ) )と表示されます。
やったね!
5.参考にさせて頂いたサイト
5.さいごに
あとはnginx、cronの使い方を覚えれば、超基本的なバックエンドサービスは実現できそうです。PHP のフレームワークはどうするかと悩んでいるところですが…。
あと、少し日付が古いですが、dotcloudのpostgres(たぶんmysqlも)はデフォルトで全接続を許可するので気をつけよう | uuu という不穏な記事も見つけたので、こちらも確認していきます。
それでは。
0 件のコメント:
コメントを投稿