2010年2月27日土曜日

Apacheのインストール

いろいろと紹介する前に、基本のApacheの設定を書いておきます。

■前提条件
・OS
CentOS5.3
(別にFedoraでもいいです。RedHat系が好きです)
・インストール場所
/opt/local/apache

■ソースダウンロード
・Apacheホームページ
http://httpd.apache.org
downloadページへいって"Unix Source"を取得します

■インストール方法
$ su -
$ cd /opt/local/src
$ wget http://ftp.riken.jp/net/apache/httpd/httpd-2.2.14.tar.gz
$ tar zxvf httpd-2.2.14.tar.gz
$ cd httpd-2.2.14
$ ./configure --enable-mods-shared=most --enable-so --enable-rewrite=shared --prefix=/opt/local/apache
$ make
$ make install

これでApacheのインストールは終了です。
ちなみに、configureのログは下記で見れます
$ cat /opt/local/src/httpd-2.2.14/config.log


では、Apacheを起動してみましょう!
$ cd /opt/local/apache
$ ./bin/apachectl start

公開出来ているでしょうか?
IP確認しましょう!
$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 01:30:1B:BD:7A:E5
inet addr:192.168.1.13 Bcast:192.168.1.255 Mask:255.255.255.0

では、私のApacheをインストールしたマシンは192.168.1.13ということがわかったので
http://192.168.1.13/
をブラウザのURLに入力しましょう!

きっと、ファイヤーウォールを有効にしている場合はアクセス出来ないと思います。

■ファイヤーウォールの設定
Apacheの使用する80番ポートを開放します。
(Apacheのポート番号は$APACHE_HOME/conf/httpd.confに"Listen 80"こんな風に書いてあります)
下記手順でiptablesに1文を追加してください。
$ cd /etc/sysconfig/
$ vi iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

これで、設定ファイルの修正が終わりました。
これだけだと、設定ファイルを修正をしただけなので、ファイヤーウォールの再起動をします。
$ /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]

では、先程のURLを入力してみましょう!
画面に"It works!"と表示されると思います!


これで、Apacheのインストール終了です。

■外部公開
これまでの設定だと、家の中(イントラ環境)からしかアクセスできません。
外から(職場とか、学校とか)見れるようにするためには、ルータの設定をする必要があります。

今回は、固定IPを持っていない動的IP環境での設定を記述します。
(固定IPを持っていても、この設定でいけますが)

動的IPとは、接続する度にIPアドレスが変化するモノをいいます。
通常のプロバイダ契約だと、動的IPになっていると思います。

IPが動的に変わるのに、どうやって自分のサイトにアクセスするんだよ?
って感じると思いますが、世の中にはダイナミックDNS(以下、DDNSとする)というサービスを提供してくれている人がいます。
今回はこのサービスで、しかも無料のものを使って設定したいと思います。

DDNSについて詳しく知りたければ、ググってください。

ちなみに、私は"Dynamic DO!.jp"様のサイトを利用させていただいています。
なので、以下の説明も"Dynamic DO!.jp"の設定になります。

まずは、サイトにてドメインを取得してください。
このドメインと、自宅のIPを常にマッピングし続ける必要があります。
マッピング自体はDDNSにてやってもらえますが、自宅のIPアドレスを定期的に教えてあげる必要があります。

そのため、この様なシェルを作りましょう!
※"Dynamic DO!.jp"用の設定になるので、他のサービスを利用している場合は、別の方法でやってください。
※/home/apahe/binにシェルを置いた場合の設定です。

cd /home/apache/bin
vi ddns.sh
#!/bin/bash

HOME="/home/apache"

cd $HOME/bin
source ../.bashrc

wget -O - 'http://free.ddo.jp/dnsupdate.php?dn=ドメイン名&pw=パスワード'


このシェルを定期的に実行することによって、ドメインと、このリクエストを飛ばしたIP(要するに自宅のIP)をマッピングしてもらえます。

定期的に、自分でこのシェルを実行してもいいのですが、寝ているあいだとかは無理なのでcron登録しましょう。
下記コマンドを実行し、下記1文を記述しましょう!
$ crontab -e
*/20 * * * * /home/apache/bin/ddns.sh >/dev/null 2>&1


これで、20分毎にこのシェルを実行してもらえます!

以上がDDNSの設定になります。

ただ、これで終わりではありません!

これだけだと、きっと自宅のルータに邪魔をされています。
ファイヤーウォールの設定と同じように、ルータにもポートフィルタリング機能があるため、ルータの80番ポートも開放する必要があります。

この設定自体はルータによって違うので、説明書を読んでみてください。
普通は(192.168.1.1とか192.168.0.1)にブラウザからアクセスするとできると思います。

基本的には、80番ポートへのアクセスを、内部のIPアドレス(今回で言うと192.168.1.13)の80番ポートにマッピングします。
この設定はGUI上でできるので、簡単にできると思います。

これで、外部から自宅のWEBサーバへアクセスすることができます!
外に出て、登録したドメイン名でアクセスしてみましょう!
(めんどくさかったら携帯電話からアクセスしてみてください)

1 件のコメント:

  1. iptablesの設定で「RH-Firewall-1-」を付けて再起動すると以下のようなエラーがでました。
    Applying firewall rules: iptables-restore: line 13 failed

    「RH-Firewall-1-」を消すと問題なくfirewallルールが適用されたみたいです。
    OSはFedora10,gccは4.3.2

    同じようなエラーが起きた人用にめもっておきます。

    返信削除