公開日: 2012年8月13日 17:51:18
最終更新: 2016年11月4日 15:02:50

Apache 2.4 + OpenSSL インストール

Apache + OpenSSL のインストール

OpenSSL のインストール

Scientific Linux 7.2 にて検証。

セキュリティに関わる部分なのでなるべくバージョンの新しいものを、ということで今回もソースからコンパイル & インストールします。
openssl の最新版については公式サイトを確認のこと。
http://www.openssl.org/source/

openssl の共有ライブラリをシステムに登録します。/etc/ld.so.conf.d/openssl.conf を作成します。

共有ライブラリを反映させるため、ldconfig します。

yum で勝手にアップデートされないように、/etc/yum.conf の最後の行に以下の設定を追加します。

exclude=openssl

元の OpenSSL のパスをバックアップしたのち、新しい OpenSSL へのシンボリックリンクを作成します。

試しに ldconfig して Apache2 を再起動してみたところエラーログが吐かれなくなった。

なので /etc/ld.so.conf.d/openssl.conf を作成して再起動。たぶん大丈夫だと思うけど様子を見てみる。 [bash title=""] ## /etc/ld.so.conf.d/openssl.conf [/bash] -->

Apache Web Server のインストール

あらかじめ必要なライブラリをインストールしておきます。

Apache のビルト&インストール

apache をエラー無く動かすための、最低限の設定をします。

Apache.org から apache をソースインストールします。

インストールオプション

・ –prefix=/usr/local/httpd
httpd をインストールする場所の指定です。

・ –enable-so
モジュールを有効化します。

・ –enable-headers
HTTP リクエスト/応答ヘッダの追加・置換・削除が可能となります。

・ –enable-dav
WebDAV を有効化します。http/https 経由でファイル・フォルダを共有することができます。

・ –enable-deflate
mod_deflate を有効にします。データを送信する前に圧縮してデータ転送の効率化を図ります。

・ –enable-rewrite
リクエストされた URL の動的書き換えを行うモジュールです。=shared としてコンパイルすることで、DSO モジュールとして読み込みます。

・ –with-ssl=/usr/local/openssl
SSLを有効化します。ソースインストールしたOpenSSL のパスを指定します 。

・ –with-suexec-caller=apache
suexec によって CGI などのスクリプトを第三者に不正に実行されないようにします。(ユーザーサイト、VirtualHost 利用時)
ここでは httpdの実行ユーザ(「apache」)がユーザの代わりにスクリプトを実行しますので「apache」を指定します。

・ –with-suexec-docroot=/home
suexecが適用されるディレクトリを指定します。ユーザーディレクトリの格納されている /home を指定、/home 以下にある実行可能なスクリプトが suexec の影響を受けます。

・ –with-suexec-logfile=/var/log/httpd/suexec_log
suexec のログを出力するパスの指定です。access_log 等と同じ場所を指定しておきます。

・ –with-ldap
–enable-ldap=shared
–enable-authnz-ldap=shared
ldap 認証を有効にします。(LDAP によるアカウント管理を行っている場合のみ)

インストール後の設定

apache の設定ファイル(httpd.conf)を編集します。

apache を起動するユーザの設定。

User apache
Group apache

apache を起動するたびに警告が出るのも鬱陶しいので、適当な ServerName を設定。

ServerName www.example.com:80

ログファイルの格納場所を /var/log/httpd に合わせます。

    ErrorLog "/var/log/httpd/error_log"
    CustomLog "/var/log/httpd/access_log" common

自動起動とログローテート

サーバ起動時に apache が実行されるよう、起動スクリプトを設定します。
参考: https://blog.apar.jp/linux/3798/

本来なら systemd 対応にしたいところですが、mod_systemd のソースが見つからず…エロい人が何か考えてくれるまでは chkconfig でお茶を濁そうかと(^_^;)

スクリプトのサンプルはソースディレクトリの build/rpm/ 以下にあります。

起動スクリプトの以下の個所をインストールした apache へのパスに修正します。

httpd=${HTTPD-/usr/local/httpd/bin/apachectl}
pidfile=${PIDFILE-/usr/local/httpd/logs/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0

# check for 1.3 configuration
check13 () {
        CONFFILE=/usr/local/httpd/conf/httpd.conf

修正できたら chkconfig コマンドで起動スクリプトとして登録します。

ログの出力先ディレクトリを作成します。
また、ログが肥大化しないようローテートの設定をします。

こちらも実行ファイルへのパスを編集しておきます。

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        #/sbin/service httpd graceful 2> /dev/null || true
        /usr/local/httpd/bin/apachectl graceful 2> /dev/null || true
    endscript
}