日本プログラミング物語

プログラミング技術を磨きながら愛国心を養うサイト

Apacheのインストール

Apacheとは

ブラウザで何らかのサイトを表示するときには、その背後でウェブサーバーが動いています。
Apacheは、ウェブサーバーの一種で、ウェブサイトを表示するためのソフトウェアです。
無料で使えます。

ここでは、CentOS 6.4にApache2.4系(2.4.6)をソースインストールする方法について説明していますが、開発用サーバーなどで、特にApacheの最新バージョンが必要でないということであれば、

$ sudo yum -y install httpd

と入力すれば、あっという間にインストール完了です。:-)
ただし、ソースインストールしたときと設定ファイルの場所が変わります。

OpenSSLヘッダファイルのインストール

Ruby on Railsなどで必要になるためインストールします。

$ sudo yum -y install openssl-devel

PCREのインストール

PCREは、ApacheでPerl互換の正規表現を使用するためのライブラリです。
これもApacheのコンパイルに必要なのでインストールします。

$ sudo yum -y install pcre-devel

APR/APR-utilのインストール

これらを先にインストールしておかないと、ソースコンパイルの時に「APR not found.
」エラーになります。
Apache Portable Runtime(APR)から、APRとAPR-utilのソースファイルをダウンロードして、以下の手順でコンパイルとインストールを行ってください。
» ダウンロードページ

この記事でダウンロードしたのは、apr-1.4.8.tar.gzとapr-util-1.5.2.tar.gzです。

$ tar xvzf apr-1.4.8.tar.gz
$ cd apr-1.4.8
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

※ configureを実行すると、
`libtoolT': No such file or directory
と表示されるかもしれませんが、特に問題はありません。

$ tar xvzf apr-util-1.5.2.tar.gz
$ cd apr-util-1.5.2
$ ./configure --prefix=/usr/local --with-apr=/usr/local/apr
$ make
$ sudo make install

最後におまじない。

$ sudo ldconfig

ソースファイルのダウンロード

Apache公式サイトより、Apache2のソースファイルをダウンロードします。
ダウンロードページ

この記事でダウンロードしたのは、httpd-2.4.6.tar.gzです。

Apache用アカウントの作成

rootユーザーでApacheを起動するのはセキュリティー的に好ましくないので、Apache専用のユーザーアカウントを作成します。

$ sudo /usr/sbin/groupadd apache
$ sudo /usr/sbin/useradd -g apache -d /usr/local/apache -s /sbin/nologin apache

Apacheのコンパイル&インストール

以下の手順にしたがって、ソースファイルのコンパイルとインストールを行ってください。

$ tar xvzf httpd-2.4.6.tar.gz
$ cd httpd-2.4.6
$ ./configure --enable-so --enable-ssl --enable-modules=rewrite \
--prefix=/usr/local/apache
$ make
$ sudo make install

Apacheの起動

CentOSの初期状態では、80番ポートが塞がっているので、ファイアーウォールの設定を変更し、これを開けます。
まず、ファイル/etc/sysconfig/iptablesを開きます。

$ sudo vi /etc/sysconfig/iptables

そして、「--dport 22」を含む行の下あたりに、以下の行を追加します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

作業手順としては、「--dport 22」の行をコピー&ペーストして、「22」を「80」に書き換えます。
修正が終わったら、ファイアーウォールを再起動してください。

$ sudo /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter        [  OK  ]
iptables: モジュールを取り外し中:                         [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]

※sudoコマンド、またはrootユーザーで実行しないと何も表示されないので注意して下さい。

以下のコマンドを入力すれば、Apacheを起動することが出来ます。

$ sudo /usr/local/apache/bin/apachectl start

apachectlの引数をstopにすれば、Apacheが停止します。
また、restartにすれば、Apacheが再起動します。

Apacheの自動起動の設定

OSを再起動するたびにapachectlコマンドを打ち込むのはめんどくさいので、自動起動するように設定しましょう。

$ sudo cp httpd-2.4.6/build/rpm/httpd.init /etc/rc.d/init.d/httpd
$ sudo chmod 755 /etc/rc.d/init.d/httpd

/etc/rc.d/init.d/httpdの一部を修正する。

httpd=${HTTPD-/usr/local/apache/bin/httpd} #60行目付近
pidfile=${PIDFILE-/var/run/httpd.pid} #61行目付近
CONFFILE=/usr/local/apache/conf/httpd.conf #67行目付近(check13()の下)

httpd.confに以下の行を追加する。

PidFile /var/run/httpd.pid

Apacheを起動サービスに登録する。

$ sudo chkconfig httpd on

これで、OS起動時にApache2が自動起動します。
また、以下のコマンドでもApache2の起動/停止/再起動ができます。

$ sudo service httpd start #起動
$ sudo service httpd stop #停止
$ sudo service httpd restart #再起動

エラー対処

Apache起動時に「error while loading shared libraries: libapr-1.so.0:」が出るとき。

$ sudo vi /etc/ld.so.conf

で設定ファイルを開き、

/usr/local/apache/lib

を追加する。
その後、

$ sudo ldconfig

を打ち込む。