Windows AzureでPerlやPython、Ruby、Git、SSH、MySQLを利用しよう 5ページ
デプロイとテスト
以上の設定やバッチファイル作成が完了したら、ローカル環境でデバックを行ってみよう。ただし、ローカル環境でのデバッグ実行の際はローカル環境に実際にこれらのソフトウェアがインストールされてしまうので注意してほしい。デバッグ終了後には必要に応じて手動でインストールしたソフトウェアのアンインストールなどを行っておく。ローカルのデバッグで問題がなければ、続いてWindows Azure環境へのデプロイを行う。
Windows Azure環境へのデプロイが完了すると、SSHクライアントからインスタンスのIPアドレスに接続することでインスタンスへのログインが行える(図11、12)。なお、ログインに使用するユーザー名およびパスワードは、リモートデスクトップ接続に利用するものと同一となっている。


SSHでのログイン後の操作は、一般的なUNIX/Linux環境とほぼ同じである。また、パスさえ適切に設定すればWindowsのコンソールアプリケーションも実行できる。なお、Windows上のドライブはCygwinからは「/cygdrive/<ドライブレター>/」として認識される。たとえばC:\は「/cygdrive/c/」というパスでアクセス可能だ。
なお、CygwinのmysqlコマンドでMySQLに接続する場合、次のように「–protocol=TCP」オプションを付け、明示的にTCPでデータベースに接続するよう指定する必要がある(図13)。
$ mysql --protocol=TCP

PHPやPerl、Python、Rubyが正しく利用できるかを確認するには、簡単なテストコードを用意して表示させてみれば良い。以下のリスト21~24および図14~17はPHP、Perl、Python、Ruby用のテストコードおよびその表示結果だ。今回はこれらのコードをWebサーバーで公開しているディレクトリ(Azure Drive以下の「WWWRoot\test」ディレクトリ)にコピーし、Webブラウザで表示させている。
リスト21 PHPのテストコード(test.php)
<?php phpinfo(); ?>

リスト22 Perlのテストコード(test.pl)
print "Content-type:text/html\r\n\r\n"; print '<html>'; print '<head>'; print '<title>Hello Word - First CGI Program</title>'; print '</head>'; print '<body>'; print '<h2>Hello Word! This is my first Perl CGI program</h2>'; print '<ul>'; foreach $k (keys %ENV) { print "<li>$k : $ENV{$k}</li>"; } print '</ul>'; print '</body>'; print '</html>';

リスト23 Pythonのテストコード(test.py)
import os print "Content-type:text/html\r\n\r\n" print '<html>' print '<head>' print '<title>Hello Word - First CGI Program</title>' print '</head>' print '<body>' print '<h2>Hello Word! This is my first Python CGI program</h2>' print '<ul>' for i in os.environ: print '<li>', i, ':', os.environ[i], '</li>' print '</ul>' print '</body>' print '</html>'

リスト24 Rubyのテストコード(test.rb)
puts "Content-type:text/html\r\n\r\n" puts '<html>' puts '<head>' puts '<title>Hello Word - First CGI Program</title>' puts '</head>' puts '<body>' puts '<h2>Hello Word! This is my first Ruby CGI program</h2>' puts '<ul>' ENV.each { |k,v| print "<li>#{k} : #{v}</li>\n" } purts '</ul>' puts '</body>' puts '</html>'
