Windows AzureでPerlやPython、Ruby、Git、SSH、MySQLを利用しよう 5ページ

デプロイとテスト

 以上の設定やバッチファイル作成が完了したら、ローカル環境でデバックを行ってみよう。ただし、ローカル環境でのデバッグ実行の際はローカル環境に実際にこれらのソフトウェアがインストールされてしまうので注意してほしい。デバッグ終了後には必要に応じて手動でインストールしたソフトウェアのアンインストールなどを行っておく。ローカルのデバッグで問題がなければ、続いてWindows Azure環境へのデプロイを行う。

 Windows Azure環境へのデプロイが完了すると、SSHクライアントからインスタンスのIPアドレスに接続することでインスタンスへのログインが行える(図11、12)。なお、ログインに使用するユーザー名およびパスワードは、リモートデスクトップ接続に利用するものと同一となっている。

図11 接続先IPアドレスは管理ポータルで確認できる
図11 接続先IPアドレスは管理ポータルで確認できる
図12 TeraTermでインスタンスに接続した例
図12 TeraTermでインスタンスに接続した例

 SSHでのログイン後の操作は、一般的なUNIX/Linux環境とほぼ同じである。また、パスさえ適切に設定すればWindowsのコンソールアプリケーションも実行できる。なお、Windows上のドライブはCygwinからは「/cygdrive/<ドライブレター>/」として認識される。たとえばC:\は「/cygdrive/c/」というパスでアクセス可能だ。

 なお、CygwinのmysqlコマンドでMySQLに接続する場合、次のように「--protocol=TCP」オプションを付け、明示的にTCPでデータベースに接続するよう指定する必要がある(図13)。

$ mysql --protocol=TCP
図13 SSH経由でmysqlコマンドを利用する
図13 SSH経由でmysqlコマンドを利用する

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

リスト21 PHPのテストコード(test.php)

<?php
phpinfo();
?>
図14 test.phpの実行結果
図14 test.phpの実行結果

リスト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>';
図15 test.plの実行結果
図15 test.plの実行結果

リスト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>'
図16 test.pyの実行結果
図16 test.pyの実行結果

リスト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>'
図17 test.rbの実行結果
図17 test.rbの実行結果