AB × LinuxでWebアプリ開発は可能なのか!?
abdev 2月 18th, 2007休日を過ごしています。はい。
地元にいて特にやることもない、ということで、いつもはABと関連性の薄いLinuxとWebサービスの方面に触れてみたいと思います。
以前、このブログでwine(※)についてキャプチャとかしていたのですが、今日はコマンドラインベースで色々と動かせるかどうかを検証してみました。結果をまとめてみます。
※wine … Linux上でWin32APIを再現してくれるソフト
まずはウチの開発用Linuxサーバ(dev.activebasic.com)にwineをインストールしてみます。ちなみに、wineはX Windowが入っていなくても動きます。コマンドベースだけでもいけるとは、頼もしいヤツです。
# yum -y install wine Loading "installonlyn" plugin Setting up Install Process Setting up repositories core [1/3] core 100% |=========================| 1.1 kB 00:00 updates [2/3] updates 100% |=========================| 1.2 kB 00:00 extras [3/3] extras 100% |=========================| 1.1 kB 00:00 Reading repository metadata in from local files primary.xml.gz 100% |=========================| 391 kB 00:01 updates : ################################################## 1070/1070 Added 66 new packages, deleted 61 old in 4.99 seconds primary.xml.gz 100% |=========================| 1.9 MB 00:25 extras : ################################################## 6348/6348 Added 337 new packages, deleted 197 old in 25.08 seconds Parsing package install arguments Resolving Dependencies --> Populating transaction set with selected packages. Please wait. ---> Downloading header for wine to pack into transaction set. wine-0.9.30-1.fc5.i386.rp 100% |=========================| 16 kB 00:00 ...省略 Complete! You have new mail in /var/spool/mail/root
これでwineインストールは完了。
ABで下記のようなプログラムを書いてみます。
#console Sub Output( text As String ) Print text + Ex"n"; End Sub Output( Ex"Content-type:text/htmln" ) Output( "<html>" ) Output( "<head>" ) Output( "<meta http-equiv='content-type' content='text/html; charset=shift_jis'>" ) Output( "</head>" ) Output( "<body>" ) Output( "<h1>Hello World!</h1>" ) Output( "</body>" ) Output( "</html>" )
早速コンパイル。残念ながら、コンパイルはX Window環境がないとできないので、手元のWindowsで行います。できあがったhello.exeをサーバにアップロード。で、hello.cgiにリネーム(あらかじめ、.cgiがCGIとして動作するようにApacheの設定をしておきます)。
これは妄想ですが、ABコンパイラを完全なコマンドラインベースのツールに書き直した暁には、”# abc hello.ab” などというコマンドでLinux + wineの環境でコンパイルができるようになるかもしれません。
ためしに、シェルから動かせるかをテストしてみます。
# ./hello.cgi Content-type:text/html <html> <head> <meta http-equiv='content-type' content='text/html; charset=sjis'> </head> <body> <h1>Hello World!</h1> </body> </html>
イッパツで動きました。問題Nothingです。では、これをWeb上からアクセスしてみましょう。期待する出力は得られるのでしょうか…。
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.
ここでエラーです。なにやら、サーバー側の問題らしいです。管理者へ連絡しろとのことです。ちなみに、管理者は私です。早速エラーログを拝見してみます。すると、下記のようなエラーが!
[Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] wine: [Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] can't get temp file name for /var/www/.wine [Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] : Permission denied [Sat Feb 17 23:37:52 2007] [error] [client 192.168.24.230] Premature end of script headers: hello.cgi
ようは、.wineディレクトリがないよって話らしいです。ちなみに、.wineディレクトリはWindowsの構成そのものを管理するための非常に重要なデータを格納しています。たぶん、どこかのiniで場所を指定できると思うのですが、他の場所にあった.wineディレクトリを一旦 “/var/www” に丸ごとコピーします。これで動くでしょう…。たぶん…。
リロード。
できました~!成功!
というわけで、Linux上で動作するWebサービスの作成、ABでできそうです。肝になってくるのは、セキュリティ性やDBとの接続の手軽さ辺りでしょうか…。
Linux+wine上用のWebアプリを作ることを想定したIDEという発想、色々とできそうなことがありそうですね。
Recent Comments