Ubuntu/Debian Apacheのインストールと設定

Ubuntu/DebianのApache2は他のLinuxディストリビューションと比べてちょっと癖があるので何なのですが、慣れてくるとUbuntu/Debianの方が遥かに設定が楽でうまいことできています。昔ながらのhttpd.confの設定に慣れている方にはちょっとややこしいです。

Apache2のインストール


# apt-get -y install apache2

itworks上記コマンドで全部インストール完了します。ネットワークの設定が終わっていれば、インストールした時点ですでにデフォルトの設定でWebサーバーが立ち上げっています。IPアドレスで接続が可能な場合は、そのIPで、またドメインの設定まで完了している際にはそのドメインで接続してみてください。勿論サーバーマシン自体からだと、http://localhost/でも接続可能です。
http://localhost/ この時点で表示される「It's work!」はDocumentRootが/var/www/index.htmlになります。 うまく表示されない場合は、/etc/init.d/apache2 restartで再起動してみてください。

Apache2のWebサーバー詳細設定

 Apacheは単一のWebサーバーだけのみならず複数のWebサーバーを持つことができます。1台のマシンの中に複数のドメインを割り当てて運用することができます。バーチャルサイトとかバーチャルホストというような言い方をすることが多いです。ここではバーチャルホストという呼び方で統一しておきます。 バーチャルホストにはIPベースのバーチャルホストとホストベースのバーチャルホストがあります。ここは1つの固定IPに対して複数のホストを作成するホストベースのバーチャルホスト構築の方法を紹介します。

ユーザーアカウントを作成

 Webサーバーの各ホストを設定するには、まずはマシン内でUbuntu/debianのユーザーアカウントを作成しておきます。仮にここではhogeとしておきます。hogeユーザーのホームディレクトリは/home/hoge/以下になります。# useradd -m hoge

各ホストを設定する

 Ubuntu/Debianは各ホストの設定は/etc/apache2/sites-available/以下で設定します。インストール後の「It's work!」を表示するための設定は、/etc/apache2/sites-available/defaultで行なっています。新しくWebホストを設定するためには、defaultをコピーして任意の名前に変更します。(システムのユーザーアカウントと同じ名前でよいと思います。)# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/hogehogeファイルには以下のようにバーチャルホストを設定します。<virtualHost *:80> DocumentRoot /home/hoge/www ServerName www.example.com</VirtualHost>これで保存します。

設定したホストを有効にする

 この設定がUbuntu/Debianのちょっと特有の匂いがする作業でして、先程設定したhogeホストを有効にするおまじないをします。a2ensite hogeです。これはどこのディレクトリでやってもきちんと設定されます。内部的な動きを見ていると先程設定した/etc/apache2/sites-available/hogeは、以下のように/etc/apache2/sites-enabled/hoge -> /etc/apache2/sites-available/hogeシンボリックリンクを貼っているだけで、何かすごいことをやっているわけではありませんでした。

userdirを有効にする

 /home/hoge/wwwをApacheのバーチャルホストのドキュメントルートとして、各ユーザーごとに共通に設定を反映するようにします。設定内容として、

  • rootのバーチャルホストは作らない。
  • /home/<ユーザー名>/wwwをDocumentRootにする
  • htaccessは全部使えるようにする。AllowOverride All
  • Perlを使えるようにする
  • デフォルトではすべてのクライアントのWebサーバーアクセスを許可
  • /~<ユーザー名>/をチルダなしの/<ユーザー名>/でアクセスできるようにする

細かいところ抜きにして、こんなところです。/etc/apache2/mods-available/userdir.confを編集します。<IfModule mod_userdir.c>        UserDir www        UserDir disabled root        AliasMatch ^/([^/]+)/(.*) /home/$1/www/$2        <Directory /home/*/www>                AllowOverride All                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI                <Limit GET POST OPTIONS>                        Order allow,deny                        Allow from all                </Limit>                <LimitExcept GET POST OPTIONS>                        Order deny,allow                        Deny from all                </LimitExcept>        </Directory></IfModule>編集が終わったら保存します。最後にa2enmod userdirで設定を有効にします。これも/etc/apache2/mods-enabled/にシンボリックを貼って有効にしているだけです。

CGIの設定を有効にする

 各ユーザーでCGIが使える設定はすでに終わっていますが、拡張子の設定がまだ終わっていません。.cgiや.plなどどの拡張子で実行権限を与えるかを設定します。MovableTypeとかCMS入れるのだったら、perlは必要になるし、だいたい入れておいた方が無難です。 私個人は基本的にはapache2.confをできるだけ触らないようにしています。ですので、/etc/apache2/conf.d/以下にオリジナルの設定をおいてどの設定をカスタマイズしたかがわかるようにしています。CGIの設定は仮にenable.cgiというファイルに設定を書いてゆくことにします。vi enable.cgiみたいな感じで作ればいいと思います。AddHandler cgi-script .cgi .pl .rbDirectoryIndex index.cgi index.pl index.rb index.phpcgiを実行する拡張子を .cgi .pl .rb、index.*にアクセスがあった場合の有効な拡張子を併せて設定しておきます。このファイルには特に有効にするようなコマンドが必要ないので、/etc/init.d/apache2 restartで再起動させて設定を反映させます。一応ドキュメントルート以下でCGIを実行してみてテストしてみるべきでしょう。

Apacheの文字コードを設定する

 Debianは基本的には何もしなくてもUTF-8で動くみたいなところがあるのですが、ここでもあえて文字コードの指定はしてあげた方がいいです。文字コードの指定をしたからと言って他の文字コードで全く動かない...みたいなこともないですからご安心を。/etc/apache2/conf.d/charsetを開いて、#AddDefaultCharset UTF-8↓AddDefaultCharset UTF-8コメントアウトを外します。ここも、/etc/init.d/apache2 restartで再起動させて設定を反映させます。

phpのインストールと設定

 Apacheをインストールしたら自動的にPHPも使えるようになっているような気がしますが、ここでは、便利なものをいろいろ入れてしまいます。apt-get -y install php5 libapache2-mod-php5 php5-mysql php-pear php5-gd大雑把に説明すると、

  • php5 PHP本体です。
  • libapache2-mod-php5 Apacheでphpを走らせるモジュールみたいなものです。
  • php5-mysql MySQLとPHPをつなぐモジュールみたいなものです。Wordpressとかに必要
  • php-pear PHPのライブラリーです。いろいろ便利です。
  • php5-gd PHPのモジュールでグラフィック関係が強力になります。

/etc/init.d/apache2 restart再起動で反映させます。 php.iniの設定は概ね以下のような設定にしておくとよいでしょう。いずれにしろ自宅サーバー的なものなので、メモリなんかはふんだんに使ってよしです。memory_limit = 256M 256Mに増やすupload_max_filesize = 32M 32MBに増やすmbstring.language = Japanese コメントアウト外すmbstring.internal_encoding = UTF-8 UTF-8に変更mbstring.http_input = auto コメントアウト外すmbstring.http_output = UTF-8 コメントアウト外してUTF-8に変更mbstring.encoding_translation = On コメントアウト外してOnに変更mbstring.func_overload = 0 コメントアウトを外す

mod_rewiteを有効にする

 Apacheには強力なリダイレクト機能みたいなものがついています。正規表現を使ったりしてアクセスURLを自由自在にできます。WordpressなんかのCMSだと必要になってくるかと思うので有効にしておいた方が無難です。
a2enmod rewrite
だけでOKです。Apacheを再起動すれと言われるので、再起動して設定を反映させます。

Webサーバーにアクセスしてみる

/home/hoge/www/index.htmlを適当に作成して、http://<設定のドメイン>/hoge/にアクセスして表示されたら成功です。phpやcgiのテストもしておきましょう。