今回は、Webサーバとして有名なApacheをCentOS8にソースインストールし最初に入っている「It works!」のページを表示する方法について説明します。
目次
実施環境・導入バージョン
OS | CentOS 8 最小限のインストール |
---|---|
Apache | 2.4.43 |
OpenSSL | 1.1.1g |
Nghttp2 | 1.40.0 |
Brotli | 1.0.7 |
APR | 1.7.0 |
APR-util | 1.6.1 |
事前準備
初めに、ApacheおよびApacheのインストールに必要なツール等のコンパイルに必要なものをインストールします。
・ソースファイルのダウンロード用
# dnf install -y wget
・gcc、make等の開発者ツール、コンパイルに必要なネットワーク関連ツール
# dnf groupinstall -y base development network-tools
・OpenSSL、Apacheのコンパイル用
# dnf install -y zlib-devel perl-core pcre-devel expat-devel
・OpenSSLインストール後のdnfが起動しなくなる現象回避用
# dnf install -y lksctp-tools lksctp-tools-devel
・Nghttp2コンパイル用
# dnf install -y jansson-devel libev-devel c-ares-devel
・Brotiコンパイル用
# dnf install -y cmake
・Apacheコンパイル用
# dnf install -y pcre-devel expat-devel
OpenSSLのインストール
Nghttp2とApacheのコンパイル、SSL用としてOpenSSLをソースインストールします。OpenSSLのソースファイルは、下記サイトからリンクをコピーすることができます。
・OpenSSL
・OpenSSLのソースファイルをダウンロードし解凍、解凍したフォルダに移動
# wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
# tar zxf openssl-1.1.1g.tar.gz
# cd openssl-1.1.1g/
・インストール場所を/usr/local/opensslに指定しMakefileを作成、コンパイル、インストール、
#./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/shared enable-md2 enable-rc5 sctp zlib -fPIC
# make
# make install
※参考
今回はインストールしたOpenSSLを共有ライブラリに設定していませんが、ソースインストールしたOpenSSLを共有ライブラリにする場合はOpenSSHのソースインストールも必要となります。OpenSSHのソースインストールについては下記ページを参照してください。
・CentOS8にOpenSSLとOpenSSHをソースインストールする方法
https://www.kdkwakaba.com/archives/408
Nghttp2のインストール
次に、Apacheのコンパイルに必要なNghttp2をインストールします。Nghttp2のソースファイルは、下記サイトからリンクをコピーすることができます。
・Nghttp2のソースファイルをダウンロードし解凍、解凍したフォルダに移動
# wget https://github.com/nghttp2/nghttp2/releases/download/v1.40.0/nghttp2-1.40.0.tar.gz
# tar zxf nghttp2-1.40.0.tar.gz
# cd nghttp2-1.40.0/
・OpenSSLを指定しMakefileを作成、コンパイル、インストール
# env OPENSSL_CFLAGS="-I/usr/local/openssl/include" OPENSSL_LIBS="-L/usr/local/openssl/lib -lssl -lcrypto" ./configure -enable-app
# make
# make install
Brotliのインストール
次に、Apacheのコンパイルに必要なBrotliをインストールします。Nghttp2のソースファイルは、下記サイトからリンクをコピーすることができます。
Brotliのコンパイルはmakeではなくcmakeを使用するため注意が必要です。
・Brotliのソースファイルをダウンロードし解凍、解凍したフォルダに移動
# wget https://github.com/google/brotli/archive/v1.0.7.tar.gz
# tar zxf v1.0.7.tar.gz
# cd brotli-1.0.7/
・コンパイル用のフォルダを作成し移動しコンパイル、インストール
# mkdir build && cd build
# ../configure-cmake
# make
# make install
APR、ARP-utilのインストール
次に、Apacheのインストールに必要なAPR、APR-utilをインストールします。APR、APR-utilのソースファイルは、下記サイトからリンクをコピーすることができます。
・APR、APR-util
・APRのソースファイルをダウンロードし解凍、解凍したフォルダに移動
# wget http://ftp.riken.jp/net/apache//apr/apr-1.7.0.tar.gz
# tar zxf apr-1.7.0.tar.gz
# cd apr-1.7.0/
・Makefileを作成、コンパイル、インストール
# ./configure
# make
# make install
・APR-utilのソースファイルをダウンロードし解凍、解凍したフォルダに移動
# wget http://ftp.riken.jp/net/apache//apr/apr-util-1.6.1.tar.gz
# tar xvzf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1/
・インストールしたAPRを使いMakefileを作成、コンパイル、インストール
# ./configure --with-apr=/usr/local/apr
# make
# make install
Apacheのインストール
Apache本体をソースインストールする準備が整いましたので、Apacheをインストールします。Apacheのソースファイルは、下記サイトからリンクをコピーすることができます。
・Apacheのソースファイルをダウンロードし解凍、解凍したフォルダに移動
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//httpd/httpd-2.4.43.tar.gz
# tar zxf httpd-2.4.43.tar.gz
# cd httpd-2.4.43/
・Apacheインストールに必要なオプションを指定しMakefileを作成、コンパイル、インストール
# ./configure \
--enable-http2 \
--enable-brotli \
--with-brotli=/usr/local/lib \
--enable-ssl \
--with-ssl=/usr/local/openssl \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--enable-so \
--enable-mods-shared=all \
--enable-mpms-shared=all
# make
# make install
Unitファイル作成
Apacheをソースインストールした場合、Unitファイルが作成されないため、起動・停止・再起動用のユニットファイルを作成します。Unitファイル作成後はUnitファイルを再読み込みします。
・ApacheのUnitファイルを作成
# vi /usr/lib/systemd/system/httpd.service
■httpd.service
-------------------------------------------------
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecReload=/usr/local/apache2/bin/apachectl graceful
ExecStop=/usr/local/apache2/bin/apachectl stop
[Install]
WantedBy=multi-user.target
-------------------------------------------------
・Unitファイルを再読み込み
# systemctl daemon-reload
firewallの許可
Apacheでページを表示させるためにはfirewallの80番ポートを開放する必要があります。今回はfirewallでhttpサービスを設定します。
・firewallでhttpを許可する
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload
Apacheの起動、動作確認
firewall設定後、Apacheを起動し再起動後も自動的にサービスが起動するように設定します。
・Apacheを起動し、再起動後も自動的に起動する
# systemctl start httpd
# systemctl enable httpd
※参考
Apacheの起動後に「systemctl status httpd」でApacheの状態を確認すると「AH00558: httpd: Could not reliably determine the server’s fully qualified domain name~」というログが出力されます。これは、Apacheの初期設定でServerNameが設定されていないことによるログのため、今回は無視して問題ありません。
Apache起動後、ブラウザを開き「http://<サーバのIPアドレス>」にアクセスし、以下の「It works!」が表示されればインストール完了です。
