CygwinでApache その1

ちょっと間が空きすぎました。


自作NASは環境構築のためにいろいろ試していますが、ちょっと仕事が忙しくUpdateできるほどの記事がかけていない・・・
取り急ぎ、やらなければいけないことを優先させて、ついでにそのことをここにメモりたいと思う。


さて、Windows上でデータベースを構築しインターフェイスとしてブラウザを使いたいと思っているのだが
IIS+Active PerlPostgreSQLという環境で目的の構成は完成したもののなぜかDBD-Pgの挙動がおかしく、errorを吐く。
http://blog.batarnyo.net/2008/07/28/
こんな記事を発見し、事象はまったく同じである。
DBD-PgPPを試してみたところ、確かに問題なく動くものの " 風が語りかけます、遅い、遅すぎる " といった状況。
もちろん、DBへのアクセスはチューニングすることで改善することはできると思うが、性能的には劣ることと思う。
自分用のDBなので自分さえ我慢すればよい話ではあるのだが、我慢するよりは問題解決をする方が生産的かなと思うので、ちょっと環境を変えて再度チャレンジ!


最高の環境としてはLinuxApachePerlPostgreSQLかなと思っている。
但し、Windows上で動くことは条件なのでこの環境をvm上で動かすって言う選択肢もあると思うのだが、果たしてパフォーマンスが出るのかなっといった不安がある。
そこで、実際にうまくいくものなのかはやってみないとわからないわけだが、CygwinApachePerlPostgreSQLという選択肢を考えて見たいと思う。
うまくいくかは・・・本当にやってみないと判らないけど。

サービス起動

さて、サービスを起動する前に、設定に問題がないか確認する。

$ /usr/sbin/httpd2 -k start
httpd2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.2 for ServerName
Bad system call


詠人の環境では二つのエラーが表示される。


httpd2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
については、/etc/hostsに登録した hostname をhttpd.confへ記載する必要がある。
/etc/apache2/httpd.confの
# ServerName gives the name and port that the server uses to identify itself.
#ServerName www.example.com:80
#ServerName hostname:80


#(コメントアウト)を消して、hostname 部分に登録したホストネームを入力。


Bad system call
については、apacheのスタートにはcygserverが起動している必要がある。


環境変数 CYGWIN に server を設定しておく必要がある。
でcygserverの設定を実施

$ cygserver-config
Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes


あとは、$ cygserver & でバックグラウンドでcygserverを起動すれば
$ /usr/sbin/httpd2 -k start で何もエラーが帰ってこなければOK


詠人の環境では $ cygserver-config 実行時に
cygrunsrvがないと怒られてしまった。
cygwinのsetup.exeからAdminのなかのcygrunsrvをインストール後、$ cygserver-config 実行で無事設定できた。



Windowsのサービス上ではCYGWIN cygserver
ここで自動起動に設定しておけば、わざわざ起動する必要もなし。



ApacheWindowsのサービスとして設定できる。
$ cygrunsrv -I httpd -d "CYGWIN httpd" -p /usr/sbin/httpd2


これで、Windowsサービスとして操作ができる。


ちなみに
$ cygrunsrv -S httpd → サービススタート
$ cygrunsrv -Q httpd → 設定確認
$ cygrunsrv -L → 全サービス確認
$ cygrunsrv -R httpd → サービス削除
$ cygrunsrv -E httpd → サービスストップ