Apache2の設定

pwblog側の準備が整ったので、今まで放ったらかしにしていたapache2の設定をします。apache2はpostgresqlと違い、fink installするだけで自動起動するようにインストールされるので自動起動の設定は必要ありません。しないといけないのは、

  1. apache2の基本設定をする
    • /sw/etc/apache2/sites-available/default
  2. CGIを使うのでCGIモジュールを有効にする
    • /sw/etc/apache2/mods-enabled/cgi.load
  3. pwblog用に設定ファイルを書く
    • /sw/etc/apache2/sites-available/pwblog
  4. 設定を有効にするためにシンボリックリンクを張る
    • /sw/etc/apache2/sites-enabled/pwblog
  5. CGIがpwblogフォルダに書き込みできるようにする
    • ~/unix/sites/pwblog/
  6. Apache2の再起動
    • /sw/sbin/apache2ctl

【1】apache2の基本設定は、私の場合、下記のように編集した。

    • /sw/etc/apache2/sites-available/default
ServerAdmin shinya_ohtani@mail.xxxx.ne.jp

DocumentRoot /sw/var/www/
<Directory />
        Options FollowSymLinks
        AllowOverride None
</Directory>
<Directory /sw/var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        # This directive allows us to have apache2's default start page
            # in /apache2-default/, but still have / go to the right place
            RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /sw/lib/cgi-bin/
<Directory "/sw/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
</Directory>

ErrorLog /sw/var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /sw/var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/sw/share/doc/"
<Directory "/sw/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

ホスト名を複数持つ訳でもないのでVirtualHost設定を削除しただけ。

【2】CGIモジュールを有効にするにはmods-availableに控えているcgi.loadをmods-enabledにシンボリックリンクを張るだけ。

%cd /sw/etc/apache2/mods-enabled/
%ln -s /sw/etc/apache2/mods-available/cgi.load .

【3】pwblog用の設定ファイルは、私の場合は

    • /sw/etc/apache2/sites-available/pwblog
Alias /pwblog/ "/Users/shinya_ohtani/unix/sites/pwblog/"
<Directory "/Users/shinya_ohtani/unix/sites/pwblog/">
        Options MultiViews FollowSymLinks SymLinksIfOwnerMatch ExecCGI
        AddHandler cgi-script .cgi .pl
        AllowOverride None
        <IfModule env_module>
                SetEnv PERL5LIB /sw/lib/perl5:/sw/lib/perl5/darwin
        </IfModule>
</Directory>

環境変数PERL5LIBの設定を忘れると痛いことになります。finkでインストールしたperlモジュールはユーザログインシェルでは、.bashrcや.tcshrcにfinkをインストールした時に書き込まれたfinkの設定により、fink用のperlモジュールフォルダもperlモジュールとして認識してくれますが、apache2経由でwwwがcgiを動かす時にはその設定はないのでfinkでインストールしたperlモジュールが認識されず、まともにcgiを動かすことができません。そこで環境変数PERL5LIBをここで設定しています。設定内容はperl -Vで表示されるものと同じ内容です。

【4】pwblog用の設定を有効にするにはsites-enabledにシンボリックリンクを張るだけ。

%cd /sw/etc/apache2/sites-enabled/
%ln -s /sw/etc/apache2/sites-available/pwblog 001-pwblog

【5】CGIがpwblogフォルダに書き込みできるように権限設定
install.txtにはいろいろ書かれているようだが要するに全部、wwwさんが書き込みできるようになっていれば、とりあえずOK!。ということで、

%cd ~/unix/sites/pwblog/
%sudo chgrp -R www .
%sudo chmod -R g+w .
%sudo chmod a+x `find . -name "*.cgi"` `find . -name "*.pl"`

【6】全部終わったらApache2の再起動

%sudo /sw/sbin/apache2ctl restart

これで、pwblogは動き始めるはず!下記にアクセスしてadminでログインしてパスワードを変更してみよう!