Apache2 の導入

UbuntuのTaskselではLAMPという形でまとまってしまっているので、Apache単独でのインストールを行うにはapt-getからする必要があります。

Apacheのインストール

sudo apt-get install apache2

デフォルトでコンテンツのルートディレクトリとなる/var/wwwは所有者がrootになりますので、場合によっては所有者や権限等調整した方が運用しやすいかもしれません。

インストールが完了したら使用したい機能で、標準では有効になっていないものを有効化します。今回はrewriteとproxy_ajpを有効化しました。

$ sudo a2enmod rewrite
$ sudo a2enmod proxy_ajp

必要となるモジュールがまとめて有効化されます。

$ service apache2 restart

ですると完了です。

Apacheの設定

installされた形式を踏襲するのであれば、/etc/apache2/sites-availableにconfファイルを作成して、/etc/apache2/sites-enabledにそのリンクを置くという形になりますが、面倒だし、自分の作るconfは1つだけなので直接/etc/apache2/sites-enabledにconfファイルを作成してしまいます。なお、デフォルトで存在する000-Defaultリンクは削除しないと自分のconfとバッティングする可能性があります。逆に言うと必要なものは自分のconfにも書いてしまったほうが良いです。000-Defaultはその雛形のようなものですので。

/etc/apache2/sites-enabledに置かれたファイルはIncludeされるように予めapache2.confに記載されていますのでapache2.conf等その他のconfファイルに変更を加える必要は基本的にはありません。

ドメインの統合

元々、筆者のWebPageはwww.dodoit.infoというドメインで運営していたのですが、いつの間にかdodoit.infoもGoogleウェブマスターツールの管理対象になってしまっていて、全く変わらないコンテンツなのに二重管理みたいな形になってしまっていました。それをどちらかに統一しようと思ってrewriteモジュールを導入しました。

どちらに統一しようか悩んだのですが、簡潔なURLの方が好ましいことと、wwwというサブドメイン名の存在意義が薄れてきていることからサブドメイン名なしの方向に統一しようと考えました。散散苦労しましたが、

RewriteEngine on
RewriteCond %{HTTP_HOST} ^.+dodoit\.info
RewriteRule ^/(.*)$ http://dodoit.info/$1 [R=301,L]

これを<VirtualHost *:80>タグ内に記述しました。ずっと、そのさらに<Directory />タグ内に記述していて、うまく動かないなぁなんて悩んでいたんですが、当たり前です。<Directory>タグ内はURIが確定して、実際のファイルの在処を探すときに初めて生きてくるところなので、ここでドメイン名をどうこうしようとするのでは遅すぎるのでした。

index.htm(l)の有無の統合

今回はさらに/index.htmlを/に統一させようとも試みています。

RewriteCond %{REQUEST_URI} index\.html?$
RewriteRule ^/(.*)index\.html?$ /$1 [R=301,L]

index.htmまたはindex.htmlを省いてリダイレクトする設定です。上記ともども301指定しているのはGoogleさんに恒久的に変更するのですよと伝えるためです。この指定をしないと302で返ってしまうためGoogleさんが保持するURIが変わってくれず古いままになってしまいます。

Proxyの設定

Proxyの設定は前回と一緒です。

<IfModule mod_proxy.c>
        ProxyRequests Off
        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyVia On
</IfModule>

AJPプロトコルによるGlassfish連携の設定

そして、今回はApacheが直接htmlファイルを返してしまうものと、Glassfishに制御を渡すものとの区別をURIで行おうとしました。

<IfModule mod_proxy_ajp.c>
        ProxyPassMatch ^/$ ajp://localhost:8009/
        ProxyPassMatch ^/(.+/)$ ajp://localhost:8009/$1
        ProxyPassMatch ^/(.*\.html)$ ajp://localhost:8009/$1
</IfModule>

URIのルート以下が"/"の場合、"/"で終わる場合、".html"で終わる場合にGlassfishに渡すようにしています。1行目と2行目がまとめられそうな気もするのですが、先頭の/は外出ししておかないとバグるという問題が現在のApacheにはあるそうなので、上記のように記載しました。

エラー時のhtmlなど固定でApacheから直接返したいコンテンツは".htm"で終わるようにして、Glassfishには渡さないようにしています。

ServerNameの解決

さて、

apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.xxx.xxx for ServerName

みたいなワーニングメッセージがapacheサービスの起動時、終了時に出ているかと思います。

上記confファイルの<VirtualHost *:80>タグ内にServerNameも記述しておきましょう。

ServerName dodoit.info

rewriteでwwwアクセスのドメインをdodoit.infoに統一するようにしたので不要なのかもしれませんが、一応エイリアスも書いておきましょうか。

ServerAlias *.dodoit.info

そして、DNSサーバーを持っていない場合は/etc/hostsファイルにdodoit.infoを登録すればApache起動時のワーニングは出なくなります。

192.168.xxx.xxx dodoit.info www.dodoit.info

後ろのwww.dodoit.infoは無くてもいいです。

[記事作成日: 2013-09-10]

Homepage banner and link for this title's top page
Top > Knowledge > Ubuntu 12.04 LTS Server > Apache2 の導入
このエントリーをはてなブックマークに追加
DELL Web広告 限定ページ
【HP】広告掲載おすすめキャンペーン
Fujitsu Quality Offer (わけあり品)icon
NECパソコンお買い得情報
mouse computer 今月のキャンペーン一覧はこちら!
mouse computer お急ぎの方に!最短当日出荷モデルicon
Fujitsu わけあり品 ビジネス向けicon
東芝ダイレクトクーポンキャンペーン実施中!
デル株式会社マウスコンピューター/G-TuneHP Directplus オンラインストア