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