72
IP 番号ではなく名前でローカル Web ページを提供する

本日のヒントは、OS X 10.5 の内蔵 Web サーバーと、そのサーバー上で稼働しているサイトに簡単にアクセスできるようにする方法についてです。ご存知ない方のためにお伝えすると、OS X の内蔵 Web サーバーは業界標準の Apache Web サーバーで、世界中の何千ものウェブサイトを支えています。OS X 10.5.5 時点では、Apache バージョンは 2.2.9 です。

では、OS X の組み込み Web サーバで何ができるのでしょうか。ほぼ何でもできますが、 Web ページを外部に公開することは、少なくとも簡単にはできないでしょう。多くの ISP は、標準的な自宅のアカウントで Web サーバを実行することを許可していません。また、許可している場合でも、ファイアウォールやルータのせいで、ユーザーがサイトにアクセスできない場合があります。これらの問題を回避できたとしても、自宅のマシンを指すドメイン名を手配する必要がありますが、これも ISP によっては難しい場合があります。DynDNS などのサービスを使用すると、常に変化する自宅の IP アドレスにドメイン名を割り当てることができるため、これらの問題の一部は解決できます。ただし、ISP がサイトのホスティングを許可していない場合は、依然として問題が残ります。

では、外部にサイトを公開できないのであれば、そもそもなぜ Web サーバーを運用する必要があるのでしょうか? おそらく、私のように、仕事で Web サイトのメンテナンスが必要で、テスト用にローカルにコピーを保存しておきたい場合もあるでしょう。あるいは、Web ホスティング会社にサイトを開設する前に、人気のブログ Web アプリケーション (WordPress、Movable Type) や、数百種類あるコンテンツ管理システム (例えば、macosxhints.com で使用されている Geeklog) を自分の Mac で試してみたい場合もあるでしょう。(余談ですが、macosxhints.com はまさにこの方法でスタートしました。Geeklog をローカルにインストールし、サイトを公開する前に自分の Mac で数か月間運用していました。多くの点で、OS X の組み込み Web サーバーこそが、macosxhints の立ち上げに大きく貢献したテクノロジーと言えるでしょう。)

理由はともかく、OS X では自分の Mac で Web サーバーを実行するのが非常に簡単です。共有システム環境設定パネルの Web 共有ボタンをクリックすることで、内蔵 Web サーバーを有効にすることができます。有効にすると、すべての共有オプションの右側の領域にいくつかのリンクが表示されます。1 つはコンピュータの Web サイトの URL をリストし、もう 1 つは個人サイトの URL をリストします。ほとんどのユーザーの場合、これらのアドレスは一連の (IP アドレス) 数字として表示されます。私の場合は、それぞれ と と表示されますhttp://192.168.1.44。Safarihttp://192.168.1.44/~robgまたはその他の Web ブラウザーを開いてこれらの URL を入力すると、右の図に示すように標準のページが表示されます。上部にコンピュータのページ、下部に個人用ページが表示されます。

これでも十分機能しますが、「本物の」インターネットと同じように、ドメイン名を使ってローカルにホストされているサイトにアクセスできたらもっと便利だと思いませんか?ターミナルで比較的簡単な編集をいくつかするだけで、それが実現できます。Apacheは「名前ベースのバーチャルホスト」と呼ばれる機能をサポートしており、これを有効にすると、サーバーとホストされているサイトに好きな名前を付けることができます。必要な手順は以下のとおりです。

以下の手順では、サイトをユーザーのSitesフォルダにインストールし、使用するパッケージ(WordPress、Movable Typeなど)をそれぞれ専用のサブディレクトリに配置することを前提としています。これは標準的な方法です。また、バージョン10.5を使用していることを前提としています。10.4はApache 2を使用していないため、この方法は機能しません。また、標準の/Library -> WebServer -> Documentsフォルダに保存されているサイトにアクセスする必要がないことも前提としています。ただし、この問題については、このヒントの最後の方に比較的簡単な解決策を記載しています。

サーバーに名前を付ける

まず最初に、サーバーの名前を決めましょう。短くシンプルな名前にし、句読点を入れずに1単語に絞りましょう。入力しやすい名前にするのがポイントです。この例では、サーバー名を と仮定します。ブラウザのURLバーにmysites入力しやすい名前です。http://mysites

サーバ名が決まったら、OS Xにインターネットで検索する前に、ローカルでその名前を探すように指示する必要があります。そのためには、/etc/hostsファイルに簡単な変更を加えます。この手順では、ターミナルベースのテキストエディタ( や など)を使用することを前提としていますvinano、BBEditやTextMateなどのコマンドラインインターフェースを備えたプログラムも使用できます。つまり、ルートアカウント権限で編集できるテキストエディタであればどれでも使えます。

ターミナルでhostsファイルを編集するにはsudo nano /etc/hosts、 と入力し、プロンプトが表示されたらパスワードを入力します。nanoエディタが開き、次のような画面が表示されます。

### ホストデータベース## localhost は、システム起動時にループバックインターフェースを設定するために使用されます。このエントリは変更しないでください。##127.0.0.1 test.super127.0.0.1 localhost255.255.255.255 broadcasthost...

255.255...カーソルをその行の先頭に置いて Return キーを押して行のすぐ上に行を追加し、矢印キーを使用して上に移動し、次のエントリを追加します。

127.0.0.1 マイサイト

mysitesをサーバーに選択した名前に置き換え、ファイルを保存してエディターを終了します ( を使用している場合は、Ctrl + X キーを押して終了し、Y キーを押して変更を保存し、Return キーを押してファイル名を受け入れますnano)。

Apacheのセットアップ

mysitesサーバーに名前を付けたら、ApacheにMacのIPアドレスへの変換方法を指示して、Webページを表示できるようにする必要があります。変更が必要なファイルは にあります/etc/apache2/usersので、cdまずは から始めましょう。cd /etc/apache2/usersこのフォルダには、Macの各ユーザー用の「.conf」ファイルがあります。このファイルを自分のユーザー用に編集するには、ルート権限が必要です。sudo nano username.conf(username短縮ユーザー名)と入力し、プロンプトが表示されたらパスワードを入力してください。カーソルをファイルの末尾に移動し、以下の行を追加します。

NameVirtualHost *:80<VirtualHost *:80> DocumentRoot /Users/username/Sites ServerName mysites</VirtualHost>

ユーザーの短縮ユーザー名に置き換えusername、ファイルmysitesを編集する際に使用したサーバー名に変更しますhosts。ファイルを保存してエディターを終了します。

標準の /Library -> WebServer -> Documents フォルダ内のサイトにもアクセスする必要がある場合は、さらにファイルを編集する必要があります。まず、 を使って適切なディレクトリに移動しcd /etc/apache2/extrahttpd-vhosts.confファイルを編集します(ここでも を使用しますsudo)。最後に以下の行を追加します。

NameVirtualHost *:80<VirtualHost *:80> DocumentRoot /Library/WebServer/Documents ServerName localhost</VirtualHost>

ファイルを保存すると、http://localhostURL アドレス バーに入力してこれらのサイトにアクセスできるようになります。また、名前付きサーバーを使用すると、ユーザーのサイト フォルダー内のページが表示されます。

試してみる

必要な編集はこれだけです。ただし、変更を有効にするには、2つの作業が必要です。まず、LeopardはDNSクエリをキャッシュするため、hostsファイルを再度読み込めるようにキャッシュをクリアする必要があります。ターミナルで次のコマンドを入力し、Returnキーを押します。dscacheutil -flushcacheもう1つは、Apacheウェブサーバーを再起動することです。これは、システム環境設定の共有パネルでウェブ共有をオフにしてからオンに戻すことで実行できます。ターミナルでは、次のコマンドを使用できますsudo apachectl graceful

Apacheが再起動したら、お気に入りのブラウザを開き、URLバーにサーバー名(http://mysites)を入力して、新しい名前付きサーバーをテストしてください。ユーザーのSitesフォルダ内のデフォルトページをまだ置き換えていない場合は、ページが読み込まれたときにそのページが表示されるはずです。これで、さまざまなWebパッケージをサブフォルダにインストールすると、http://mysites/wordpresshttp://mysites/geeklogなどとしてアクセスできるようになります。(必要に応じて、サブフォルダに完全に別のサイト名を付けることもできます。その場合は、上記の変更をhostsファイルと.confファイルにコピーし、新しいサーバー名とパスをサブフォルダに直接指定します。)

自宅に他のMacがあり、そこから配信ページにアクセスしたい場合は、それも簡単にできます。hosts他のMacでも上記と同じようにファイルを編集しますが、サーバーアドレスの代わりに127.0.0.1、Webサーバーを実行しているMacのIPアドレスを使用します(IPアドレスはシステム環境設定の「Web共有」パネルで簡単に確認できます)。ファイルを編集した後は、キャッシュをクリアすることを忘れないでください。そうすれば、ホストMacで配信されているページに、定義したサーバー名でアクセスできるようになります。

上記の説明が分かりやすく、簡単に理解していただければ幸いです。2台のMacでテストしましたが、説明どおりに動作しました。もし動作に問題がある場合は、質問を投稿してください。できる限りお答えします。このヒントは社内でホストされているサイトのみを対象としており、ローカルネットワーク外のユーザーにアクセスを提供することはできません。