ラベル Apache の投稿を表示しています。 すべての投稿を表示
ラベル Apache の投稿を表示しています。 すべての投稿を表示

2009年2月20日金曜日

MacPortsでMySQLとApache

そう言えば、MacPortsで入れたMySQLとApacheを自動起動する様に設定するのを忘れていた。

MacPorts で Apache をインストール

を参考にさせて頂き、自動起動を設定した。

% launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
% launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

これでMySQLとApacheの自動起動が設定できた。かつ、サーバ起動もこの時点で完了。

簡単だ。

2009年1月30日金曜日

PHPスクリプトの出力が文字化け

EUC-JPで書かれたPHPスクリプトの出力が文字化けしました。mbstring関係の設定をいじっても効果がありません。ApacheのAddDefaultCharsetディレクティブも記述されていないし、何でだろうと思って色々と調べたら分かりました。/opt/local/etc/php.iniのdefault_charset設定が悪さをしていた模様です。

default_charset = "utf-8"

という行をコメントアウトして文字化けは解消しました。

MacPortsのApacheでVirtualHost

とりあえず、MacOS XデフォルトのApacheで設定したVirtualHostの設定ファイルとMacPortsのApacheの設定ファイルを比較してみる。

% diff /opt/local/apache2/conf/extra/httpd-vhosts.conf /etc/apache2/extra/httpd-vhosts.conf

見たところ、自分が追加したVirtualHostの設定以外は違いが無さそうなので、採用。オリジナルをバックアップして、設定ファイルをコピーする。更に、メインの設定ファイルhttpd.confも比較してみる。

% diff /opt/local/apache2/conf/httpd.conf /etc/apache2/httpd.conf

こちらは、DSOモジュールへのパスなどの違いから沢山の差分が表示されるが、肝は恐らくIncludeディレクティブの部分かと。

% diff /opt/local/apache2/conf/httpd.conf /etc/apache2/httpd.conf | grep Include
< #Include conf/extra/httpd-mpm.conf
> Include /private/etc/apache2/extra/httpd-mpm.conf
< #Include conf/extra/httpd-multilang-errordoc.conf
> #Include /private/etc/apache2/extra/httpd-multilang-errordoc.conf
< #Include conf/extra/httpd-autoindex.conf
> Include /private/etc/apache2/extra/httpd-autoindex.conf
< #Include conf/extra/httpd-languages.conf
> Include /private/etc/apache2/extra/httpd-languages.conf
< #Include conf/extra/httpd-userdir.conf
> Include /private/etc/apache2/extra/httpd-userdir.conf
< #Include conf/extra/httpd-info.conf
> #Include /private/etc/apache2/extra/httpd-info.conf
< #Include conf/extra/httpd-vhosts.conf
> Include /private/etc/apache2/extra/httpd-vhosts.conf
< #Include conf/extra/httpd-manual.conf
> Include /private/etc/apache2/extra/httpd-manual.conf
< #Include conf/extra/httpd-dav.conf
> #Include /private/etc/apache2/extra/httpd-dav.conf
< #Include conf/extra/httpd-default.conf
> #Include /private/etc/apache2/extra/httpd-default.conf
< #Include conf/extra/httpd-ssl.conf
> #Include /private/etc/apache2/extra/httpd-ssl.conf
> Include /private/etc/apache2/other/*.conf

色々と違うなあ。。。httpd-vhostsとhttpd-manualについては自分でコメントアウトを外したから良いとして、httpd-mpmとhttpd-autoindex、httpd-languages、httpd-userdir辺りがMacOS XデフォルトのApacheではアクティブになってますな。後は、最後のother/*.confのところか。まぁ、MacPortsのApacheにはotherというディレクトリがそもそも存在しないですからね。この辺りをMacPorts版Apacheにも反映する事にします。

とりあえず、MacOS XデフォルトのApacheを止めます。

% /usr/sbin/apachectl stop

更に、MacPortsのApacheの設定ファイルをテストします。

% /opt/local/apache2/bin/apachectl configtest
Syntax OK

次に、PHP5用のmod_phpの設定をチェックします。設定ファイルは/opt/local/apache2/conf/extras-conf/mod_php.confです。とりあえずデフォルトで良さそうです。あと、PHP絡みでメインの設定ファイルを修正します。

  1. DirectoryIndexにindex.phpを追加
  2. Include conf/extras-conf/mod_php.confを最後尾に追加

PHPに関してはPHP自体の設定も必要です。php.iniファイルがありませんので、サンプルからコピーします。

% cp /opt/local/etc/php.ini-dist /opt/local/etc/php.ini

PHPの設定で変更する箇所は以下の通り。

short_open_tag = Off (デフォルトのOnから変更)
default_charset = "utf-8" (デフォルトの"iso-8859-1"から変更)
mbstring.language = Japanese (コメントアウトされているので先頭の";"を削除)
mbstring.internal_encoding = utf-8 (コメントアウトを解除しデフォルトの"EUC-JP"から変更)

じゃあ、Apacheを起動しますか。

% /opt/local/apache2/bin/apachectl start
% netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
(snip)
tcp46 0 0 *.http *.* LISTEN
(snip)

ちゃんと80番ポート(http)をバインドしてますね。良さそうです。最後に、MacOS Xデフォルトではユーザ毎に保持されている設定ファイル/etc/apache2/users/.confの記述を移植します。

2009年1月29日木曜日

ApacheでVirtualHost

プライベートも含めて幾つかのウェブサイトを開発しているので、開発機のMacBook君にVirtualHostを設定することに。

以下、備忘録です。

  1. まずhostsファイルを編集して必要なドメインを登録
    /etc/hostsに"127.0.0.1 hoge.com"みたいな記述を追加
  2. 次にApacheのVirtualHost用設定ファイルを編集
    /etc/apache2/extra/httpd-vhosts.confを編集
  3. 更にApacheのVirtualHostを有効化
    /etc/apache2/httpd.conf内のhttpd-vhosts.confに関するIncludeディレクティブを有効化
  4. 設定ファイルのチェック
    % apachectl configtest
  5. そしてApacheを再起動
    % apachectl restart
VirtualHostの設定ではIPではなくホスト名ベースの設定を採用。適宜VirtualHost毎にDocumentRoot, ErrorLog等を設定。

元々のVirtualHost設定ファイルには"CustomLog /path/to/log common"みたいな記述があるが、これがチェックで引っ掛かる。ここは"TransferLog /path/to/log"と書き直して対応。最後の"common"が残らない様に注意。ここの記述って、Apacheのバージョンによって違うのかな??

とりあえずこれでVirtualHostの設定が完了。

次はPostgreSQL対応のPHP5を入れます。

2009年1月28日水曜日

MacOS XのPHP

いわゆるLAMP (Linux, Apache, MySQL, and PHP) ならぬMAMP (MacOS X, Apache, MySQL, and PHP) な環境でソフト開発をしていたんですが、今度はMySQLの代わりにPostgreSQLを使うことになり、早速MacOS X用のインストーラを落としてきて入れました。

ところが、何とMacOS XデフォルトのPHP5はPostgreSQLに対応していません。phpinfo()で見ると、ビルド時のconfigureオプションでPostgreSQLを有効にしていないのです。

何たる割り切り・・・orz

というわけで、何とかしてMySQLもPostgreSQLも使えるPHP5を導入しなければいけなくなりました。MA(M|P)Pって感じです。(←分かり辛っ)