CentOS7.1 64bitにApache2.4.16をRPMからインストール
CentOS7.1の64bit版にApache2.4.16をRPMからインストールする方法を以下に示します。
※CentOS6 64bitをご使用の場合は、当サイトのCentOS6 64bitにApache2.4をRPMからインストールのページをご覧ください。
CentOS7.1の標準リポジトリからインストールできるApacheのバージョンは2.4.6のため、RPMはApacheの公式サイトからダウンロードしたソースを元に作成していきます。
依存関係にあるパッケージで、CentOS7.1の標準リポジトリからインストールできるものについては、特別なものでない限り省略しています。
以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。
ここでRPMの作成に使用しているrpmbuildコマンドについては、当サイトのCentOS7 64bit rpmbuildコマンドによるRPMの作成のページもご覧ください。
libuuid-develのインストール
Apache2.4.16のRPMを作成するには、依存関係となるlibuuid-develが必要となるのですが、このlibuuid-develのインストールを、次に示すAPR1.5.2のRPMを作成する前に行っていないと、APR1.5.2のRPMの作成、インストールには成功しますが、Apache2.4.16のRPMを作成する際に、以下のようなエラーになってしまいます。
/usr/lib64/libaprutil-1.so: undefined reference to `apr_os_uuid_get' collect2: error: ld returned 1 exit status
以下のコマンドを実行して、APR1.5.2のRPMを作成する前に、libuuid-develのインストールを行います。
# yum install libuuid-devel
APR1.5.2のインストール
Apache2.4.16のRPMを作成するには、依存関係となるapr-develのバージョン1.4.0以上が必要となります。
CentOS7.1の標準リポジトリからインストールできるapr-develのバージョンは1.4.8なのですが、こちらを使用した場合、ApacheのRPMの作成時に以下のようなエラーになってしまいます。
RPM ビルドのエラー: ファイルが見つかりません: /xxxxx/BUILDROOT/httpd-2.4.16-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so
※パスの「xxxxx」の部分は、rpmbuildの実行環境により異なります。
CentOS7.1の標準リポジトリからインストールできるAPRでは、eventのMPMのモジュールが作成できないため、APRの公式サイトからAPR1.5.2のソースをダウンロードしてRPMを作成し、インストールを行います。
※Apache2.4.16のRPMを作成する際に依存関係として必要なるapr-util-develは、CentOS7.1の標準リポジトリからインストールできるものを利用可能ですが、apr-util-develのインストールには依存関係としてapr-develが必要となり、先にapr-util-develを標準リポジトリからインストールを行うと、apr-develも標準リポジトリのものがインストールされてしまうため、apr-util-develのインストールは、ここで紹介している手順によるapr-develのインストールが完了した後に行うようにします。
APR1.5.2のソースをダウンロード
以下のコマンドを実行して、APR1.5.2のソースのダウンロードを行います。
※ダウンロード元のURLは、APRの公式サイトから遷移できるアーカイブページにリンクがあります。
(新しいバージョンがリリースされた際にリンク切れにならないよう、ダウンロードページではなく、アーカイブページを使用するようにしています。)
$ wget http://archive.apache.org/dist/apr/apr-1.5.2.tar.bz2
APR1.5.2のRPMを作成
以下のコマンドを実行して、APR1.5.2のRPMの作成を行います。
$ rpmbuild -tb --clean apr-1.5.2.tar.bz2
以下のRPMが作成されます。
- apr-1.5.2-1.x86_64.rpm
- apr-devel-1.5.2-1.x86_64.rpm
- apr-debuginfo-1.5.2-1.x86_64.rpm
APR1.5.2のインストール
以下のコマンドを実行して、APR1.5.2のインストールを行います。
apr-develをインストールするにはaprが必要となるため、一緒にインストールを行います。
# rpm -Uvh apr-1.5.2-1.x86_64.rpm apr-devel-1.5.2-1.x86_64.rpm
apr-util-develのインストール
APRのインストールの冒頭に記載したように、apr-util-develのインストールは、apr-develのインストール後に行います。
以下のコマンドを実行して、apr-util-develのインストールを行います。
# yum install apr-util-devel
distcache-develのインストール
Apache2.4.16のRPMを作成するには、依存関係となるdistcache-develが必要となります。
CentOS7.1の標準リポジトリにはdistcache-develが存在しないため、ここではFedoraのdistcacheのSRPMをダウンロードしてRPMを作成し、インストールを行います。
distcacheのSRPMをダウンロード
以下のコマンドを実行して、distcacheのSRPMのダウンロードを行います。
※ダウンロード元のURLは、Fedoraのアーカイブページにリンクがあります。
$ wget https://archive.fedoraproject.org/pub/archive/fedora/linux/releases/18/Everything/source/SRPMS/d/distcache-1.4.5-23.src.rpm
distcacheのRPMを作成
以下のコマンドを実行して、distcacheのRPMの作成を行います。
$ rpmbuild --rebuild --clean distcache-1.4.5-23.src.rpm
以下のRPMが作成されます。
- distcache-1.4.5-23.x86_64.rpm
- distcache-devel-1.4.5-23.x86_64.rpm
- distcache-debuginfo-1.4.5-23.x86_64.rpm
distcache-develのインストール
以下のコマンドを実行して、distcache-develのインストールを行います。
distcache-develをインストールするにはdistcacheが必要となるため、一緒にインストールを行います。
# rpm -Uvh distcache-1.4.5-23.x86_64.rpm distcache-devel-1.4.5-23.x86_64.rpm
mailcapのインストール
Apache2.4.16のインストールを行うには、依存関係となる/etc/mime.typesが必要となります。
/etc/mime.typesが含まれているパッケージは、以下のコマンドで確認できます。
# yum provides /etc/mime.types :(略) mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations for file types リポジトリー : base 一致 : ファイル名 : /etc/mime.types
この結果により/etc/mime.typesは、mailcapに含まれていることが分かります。
以下のコマンドを実行して、mailcapのインストールを行います。
# yum install mailcap
Apache2.4.16のインストール
Apacheの公式サイトからApache2.4.16のソースをダウンロードしてRPMを作成し、インストールを行います。
Apache2.4.16のソースをダウンロード
以下のコマンドを実行して、Apache2.4.16のソースのダウンロードを行います。
※ダウンロード元のURLは、Apacheの公式サイトから遷移できるアーカイブページにリンクがあります。
(新しいバージョンがリリースされた際にリンク切れにならないよう、ダウンロードページではなく、アーカイブページを使用するようにしています。)
$ wget http://archive.apache.org/dist/httpd/httpd-2.4.16.tar.bz2
Apache2.4.16のRPMを作成
以下のコマンドを実行して、Apache2.4.16のRPMの作成を行います。
$ rpmbuild -tb --clean httpd-2.4.16.tar.bz2
以下のRPMが作成されます。
- httpd-2.4.16-1.x86_64.rpm
- httpd-devel-2.4.16-1.x86_64.rpm
- httpd-manual-2.4.16-1.x86_64.rpm
- httpd-tools-2.4.16-1.x86_64.rpm
- mod_authnz_ldap-2.4.16-1.x86_64.rpm
- mod_lua-2.4.16-1.x86_64.rpm
- mod_proxy_html-2.4.16-1.x86_64.rpm
- mod_socache_dc-2.4.16-1.x86_64.rpm
- mod_ssl-2.4.16-1.x86_64.rpm
- httpd-debuginfo-2.4.16-1.x86_64.rpm
Apache2.4.16のインストール
以下のコマンドを実行して、Apache2.4.16のインストールを行います。
# rpm -Uvh httpd-2.4.16-1.x86_64.rpm
別途PHPのRPMを作成する場合等、httpd-develが必要となるときは、以下のコマンドを実行して、httpd-develのインストールを行います。
# rpm -Uvh httpd-devel-2.4.16-1.x86_64.rpm
インストール後の設定
Apacheのサービスを起動
以下のコマンドを実行して、Apacheのサービスを起動することができます。
# systemctl start httpd.service
尚、サービス名は以下のコマンドで確認することができます。
# rpm -ql httpd | grep init.d :(略) /etc/rc.d/init.d/httpd
Apacheのサービスを自動で起動させる
Apacheのサービスは、インストール時点では自動で起動するようになっていません。
自動起動設定の状態は、以下のコマンドで確認できます。
# systemctl is-enabled httpd.service httpd.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig httpd --level=5 disabled
※自動起動する設定になっている場合は「enabled」、なっていない場合は「disabled」と表示されます。
自動起動する設定になっていない場合、以下のコマンドで自動で起動するように設定できます。
# systemctl enable httpd.service
自動起動しないようにしたい場合は、以下のコマンドを実行します。
# systemctl disable httpd.service
MPMの変更
ここで作成したRPMからインストールしたApache2.4.16では、デフォルトで使用されるMPMはeventになっています。
PHPを使用する場合等、使用するMPMをpreforkにしたい場合は、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」で、MPMのモジュールを読み込む設定を以下のように変更します。
LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so ↓変更 LoadModule mpm_prefork_module lib64/httpd/modules/mod_mpm_prefork.so
使用するMPMをworkerにしたい場合は、以下のように変更します。
LoadModule mpm_event_module lib64/httpd/modules/mod_mpm_event.so ↓変更 LoadModule mpm_worker_module lib64/httpd/modules/mod_mpm_worker.so
尚、これらのモジュールはhttpdに含まれており、モジュールのパスは以下のコマンドで確認することができます。
# rpm -ql httpd | grep mpm :(略) /usr/lib64/httpd/modules/mod_mpm_prefork.so /usr/lib64/httpd/modules/mod_mpm_worker.so :(略)
httpd.confで、「ServerRoot ‘/usr’」と設定されているため、「/usr」以下でのパス指定が行えるようになっています。
現在有効になっているMPMは、以下のコマンドで確認することができます。
# httpd -V :(略) Server MPM: event :(略)
HTTPレスポンスヘッダーに出力されるサーバー情報を制限
ApacheでSSL、PHPを使用している場合、デフォルトではHTTPレスポンスヘッダーにサーバー情報が、以下のように出力されます。
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips PHP/5.6.10
セキュリティも考慮して、出力されるサーバー情報を制限したい場合、Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」に、以下の設定を行います。
ServerTokens Prod
これにより、HTTPレスポンスヘッダーに出力されるサーバー情報は、以下のようになります。
Server: Apache
Apacheへの外部からのアクセスを許可
HTTPでの外部からのアクセスは、iptablesによってデフォルトでは拒否されています。CentOS7になってiptablesの設定には、firewalldを使用するようになっています。
firewalldによるHTTPでの外部アクセス許可の設定については、当サイトのCentOS7 64bit firewalldによるアクセス制御のページをご覧ください。
独自に作成したディレクトリを公開
ドキュメントルートの変更やエイリアスの使用で、独自に作成したディレクトリを公開したい場合に、chownやchmodを使用してアクセス権の設定を行ってもアクセスが拒否されてしまうときは、SELinuxによるアクセス制御が有効になっていることが原因の可能性があります。
SELinuxによるアクセス制御については、当サイトのCentOS7 64bit SELinuxによるアクセス制御のページをご覧ください。
Apacheから外部のデータベースへのアクセスを許可
PHPから外部のMySQLへ接続を行う際に、以下のようなエラーになってしまう場合、
(PHPからローカルのMySQLへの接続、mysqlコマンドを使用しての外部のMySQLへの接続は可能。)
SQLSTATE[HY000] [2002] Permission denied
SELinuxによるアクセス制御が有効になっていることが原因の可能性があります。
SELinuxによるApacheから外部のデータベースへのアクセス許可の設定については、当サイトのCentOS7 64bit SELinuxによるアクセス制御のページをご覧ください。
SSLを使用する場合
Apacheと送受信するデータは、SSLを使用して暗号化することができます。
※SSLの使用については、当サイトのCentOS7 64bit Apache2.4 SSLを使用のページをご覧ください。
SSI(Server Side Includes)を使用する場合
HTML内でヘッダー、サイドバー、フッター等の各ページで共通する部分を別ファイルで作成し、各ページのファイルから読み込めるようにする機能として、SSI(Server Side Includes)というものがあります。
また、Apache2.2と2.4では、SSIの構文に変更されているものもあります。
※SSI(Server Side Includes)の使用については、当サイトのCentOS7 64bit Apache2.4 Server Side Includesを使用のページをご覧ください。
Apache2.4.16のインストールについては、以上です。