休日を過ごしています。はい。
地元にいて特にやることもない、ということで、いつもは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