注意 (2015-07-31 記載)
当記事は CentOS 6 を対象とした古い記事であり、内容が間違ったままになっている場合もあります。
CentOS 7 を利用している場合は、代わりに CentOS 7 に Apache と MariaDB 10.0 をインストールし SFTP 接続 をご覧ください。
導入
Apache HTTP Server 2.4、及びApache 2.4.7 以降の起動に必要なAPR 1.5、APR-util 1.5は、標準のYumリポジトリなどには存在せず、ApacheはRPMパッケージなどを提供していません。したがって、CentOS上でソースパッケージをビルドし、RPMパッケージを作成する必要があります。
この記事はCentOS 6.4 に Apache 2.4.4 をインストールする:100の人のブロマガ - ブロマガの修正版です。
実運用環境と同じOSがインストールされている開発環境があれば、ApacheのRPMパッケージ作成までは開発環境で行うと良いでしょう。
ビルドの準備
選択したパッケージグループによっては、RPMのビルド環境が整っていないかもしれません。コマンドが見つからなかったりビルドに失敗するようであれば、rpmbuildコマンドやGCCをインストールします。
sudo yum install rpm-build gcc
APRのビルドとインストール
依存パッケージのインストールにyum-builddep
コマンドを利用するので、そのコマンドが含まれるYumUtilsをインストールしておきます。このパッケージにはあとで利用するyumdownloader
コマンドも含まれています。
sudo yum install yum-utils
署名の検証に必要なApacheの公開鍵を取り込んでおきます。
# Apacheの公開鍵を取得
wget https://www.apache.org/dist/httpd/KEYS
# 取り込む
gpg --import KEYS
# ファイルの削除
rm KEYS
ソースパッケージは、ミラーサイトからダウンロードします。APRのダウンロードページから、最寄りのミラーサイトのダウンロードURLを取得できます。
/etc/services
のポート番号指定が、ftp 21/tcp
、ssh 22/tcp
となっていなければ、ビルドの最後でテストに失敗します。ポート番号を変更している場合、一時的にデフォルトのポート番号に書き換えておいてください。
# 旧バージョンのRPMパッケージを作成していれば、削除しておく
rm ~/rpmbuild/RPMS/*/apr{,-devel}-[0-9]*.rpm
# 最新バージョン番号の取得
APR_VERSION=$(wget https://www.apache.org/dist/apr/ --output-document=- | sed --quiet --regexp-extended '/<a name="apr">/ s/.+ ([.0-9]+) .+/\1/p')
# ソースファイルの取得
wget ftp://ftp.riken.go.jp/net/apache/apr/apr-$APR_VERSION.tar.bz2 --directory-prefix ~/rpmbuild/SOURCES
# 署名の取得
wget https://www.apache.org/dist/apr/apr-$APR_VERSION.tar.bz2.asc
# 署名の検証
gpg --verify apr-$APR_VERSION.tar.bz2.asc ~/rpmbuild/SOURCES/apr-$APR_VERSION.tar.bz2
# ソースRPMパッケージの作成
rpmbuild -ts --rmsource ~/rpmbuild/SOURCES/apr-*
# ビルドに必要なパッケージのインストール
sudo yum-builddep ~/rpmbuild/SRPMS/apr-*.src.rpm
# ビルド
rpmbuild --rebuild --clean ~/rpmbuild/SRPMS/apr-*.src.rpm
# 署名ファイル、ソースRPMパッケージの削除
rm apr-*.asc ~/rpmbuild/SRPMS/apr-*.src.rpm
# インストール
sudo rpm --upgrade --verbose --hash ~/rpmbuild/RPMS/*/apr{,-devel}-[0-9]*.rpm
途中、gpg
コマンドで署名を検証しています。gpg: “Jeff Trawick (CODE SIGNING KEY) <trawick@apache.org>”からの正しい署名
などと表示されれば、ダウンロードしたファイルに誤りはないということです。1
APR-utilのビルドとインストール
APR-utilのビルドに必要なFreeTDSは、標準のYumリポジトリに存在しません。先にEPELリポジトリからインストールしておきます。
# EPEL6リポジトリの公開鍵を取り込む
sudo rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
# EPEL6リポジトリを追加する
sudo rpm --upgrade --verbose --hash https://dl.fedoraproject.org/pub/epel/6/$(uname --hardware-platform)/epel-release-6-8.noarch.rpm
# EPELリポジトリを無効化する
sudo yum-config-manager --disable epel
# EPELリポジトリを一時的に有効化してFreeTDSをインストールする
sudo yum install freetds --enablerepo=epel
# 旧バージョンのRPMパッケージを作成していれば、削除しておく
rm ~/rpmbuild/RPMS/*/apr-util-*.rpm
# 最新バージョン番号の取得
APR_UTIL_VERSION=$(wget https://www.apache.org/dist/apr/ --output-document=- | sed --quiet --regexp-extended '/<a name="aprutil">/ s/.+ ([.0-9]+) .+/\1/p')
# ソースファイルの取得
wget ftp://ftp.riken.go.jp/net/apache/apr/apr-util-$APR_UTIL_VERSION.tar.bz2 --directory-prefix ~/rpmbuild/SOURCES
# 署名ファイルの取得
wget https://www.apache.org/dist/apr/apr-util-$APR_UTIL_VERSION.tar.bz2.asc
# 署名の検証
gpg --verify apr-util-$APR_UTIL_VERSION.tar.bz2.asc ~/rpmbuild/SOURCES/apr-util-$APR_UTIL_VERSION.tar.bz2
# ソースRPMパッケージの作成
rpmbuild -ts --rmsource ~/rpmbuild/SOURCES/apr-util-*
# ビルドに必要なパッケージのインストール
sudo yum-builddep ~/rpmbuild/SRPMS/apr-util-*.src.rpm
# ビルド
rpmbuild --rebuild --clean ~/rpmbuild/SRPMS/apr-util-*.src.rpm
# 署名ファイル、ソースRPMパッケージの削除
rm apr-util-*.asc ~/rpmbuild/SRPMS/apr-util-*.src.rpm
# インストール
sudo rpm --upgrade --verbose --hash ~/rpmbuild/RPMS/*/apr-util-*.rpm
distcacheのビルドとインストール
distcacheは、Apacheのビルドに必要なパッケージですが、APR 1.5、APR-util 1.5と同じく標準のYumリポジトリなどには存在しません。また、distcacheのソースファイルには、SPECファイルが含まれていません。そこで、FedoraリリースのソースRPMパッケージを利用します。2 3
まず廃止されたパッケージ署名鍵から目的の公開鍵が置かれているURLを捜し、取り込みます。
# Fedora18の公開鍵を取り込む
sudo rpm --import https://fedoraproject.org/static/DE7F38BD.txt
以下のリポジトリ定義ファイルを新規作成し、リポジトリを追加します。リポジトリ定義ファイル (*.repo) でシンタックスハイライトを有効化する場合は、*.repo のシンタックスハイライトを参照してください。
[fedora-source-18]
name=Fedora 18 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/18/Fedora/source/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-18&arch=$arch
failovermethod=priority
enabled=0
# 旧バージョンのRPMパッケージを作成していれば、削除しておく
rm ~/rpmbuild/RPMS/*/distcache-*.rpm
# ソースRPMパッケージの取得
yumdownloader --source --enablerepo=fedora-source-18 distcache --destdir ~/rpmbuild/SRPMS
# 署名の検証
rpm --checksig ~/rpmbuild/SRPMS/distcache-*.src.rpm
# ビルドに必要なパッケージのインストール
sudo yum-builddep ~/rpmbuild/SRPMS/distcache-*.src.rpm
# ビルド
rpmbuild --rebuild --clean ~/rpmbuild/SRPMS/distcache-*.src.rpm
# ソースRPMパッケージの削除
rm ~/rpmbuild/SRPMS/distcache-*.src.rpm
# インストール
sudo rpm --upgrade --verbose --hash ~/rpmbuild/RPMS/*/distcache-*.rpm
途中、rpm
コマンドで署名を検証しています。distcache-1.4.5-23.src.rpm: rsa sha1 (md5) pgp md5 OK
などと表示されれば問題ありません。署名の検証ができなかったときは、pgp
が返りません。4
Apacheのビルドとインストール
Apacheのダウンロードページから、最寄りのミラーサイトのダウンロードURLを取得できます。
# 旧バージョンのRPMパッケージを作成していれば、削除しておく
rm ~/rpmbuild/RPMS/*/{httpd,mod_authnz_ldap,mod_lua,mod_proxy_html,mod_socache_dc,mod_ssl}-*.rpm
# 最新バージョン番号の取得
HTTPD_VERSION=$(wget https://www.apache.org/dist/httpd/ --output-document=- | sed --quiet --regexp-extended '/CURRENT-IS-/ s/.+>CURRENT-IS-([.0-9]+)<.+/\1/p')
# ソースファイルの取得
wget ftp://ftp.riken.go.jp/net/apache/httpd/httpd-$HTTPD_VERSION.tar.bz2 --directory-prefix ~/rpmbuild/SOURCES
# 署名ファイルの取得
wget https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2.asc
# 署名の検証
gpg --verify httpd-$HTTPD_VERSION.tar.bz2.asc ~/rpmbuild/SOURCES/httpd-$HTTPD_VERSION.tar.bz2
# ソースRPMパッケージの作成
rpmbuild -ts --rmsource ~/rpmbuild/SOURCES/httpd-*
# ビルドに必要なパッケージのインストール
sudo yum-builddep ~/rpmbuild/SRPMS/httpd-*.src.rpm
# ビルド
rpmbuild --rebuild --clean ~/rpmbuild/SRPMS/httpd-*.src.rpm
# 署名ファイル、ソースRPMパッケージの削除
rm httpd-*.asc ~/rpmbuild/SRPMS/httpd-*.src.rpm
# index.htmlが存在すれば退避
cp /var/www/html/index.html ./
# インストール
sudo rpm --upgrade --verbose --hash ~/rpmbuild/RPMS/*/httpd{,-tools,-devel}-[0-9]*.rpm
# index.htmlを復元
sudo rm /var/www/html/index.html
sudo mv --force index.html /var/www/html/
実運用環境には、apr
、apr-util
、httpd
、httpd-tools
の4つのRPMパッケージをコピーし、インストールします。
# index.htmlが存在すれば退避
cp /var/www/html/index.html ./
# インストール
sudo rpm --upgrade --verbose --hash {apr,httpd}-*.rpm
# index.htmlを復元
sudo rm /var/www/html/index.html
sudo mv index.html /var/www/html/
Apacheの操作
コマンド | 効果 |
---|---|
apachectl -v |
バージョンを表示します。 |
apachectl configtest |
設定ファイルに文法ミスが無いか確認します。 |
sudo apachectl start |
サービスを開始します。 |
sudo apachectl stop |
サービスを終了します。 |
sudo service httpd reload |
設定ファイルを再読み込みします。 |
sudo apachectl graceful |
緩やかに再起動します。クライアントと通信中の子プロセスを強制終了せず、通信が終わったプロセスから順に新しいプロセスに置き換えていきます。 |
sudo apachectl restart |
サービスを再起動します。 |
sudo service httpd restart |
親プロセスも含めて、サービスを完全に再起動します。 |
sudo tail /var/log/httpd/error_log |
tail コマンドでエラーログの末尾10行を表示します。一般ユーザーには/var/log/httpd 以下の読み込み権限が与えられていないため、エラーログやアクセスログの読み取りにはroot権限が必要です。 |
sudo tail /var/log/httpd/access_log |
tail コマンドでアクセスログの末尾10行を表示します。 |