CentOS 6.5環境でのNginx 1.20の構築手順
本ガイドでは、CentOS 6.5環境にWebサーバーとしてNginx 1.20をソースコードからビルドおよびインストールする詳細な手順を解説します。SSL/TLSモジュールやステータスモジュールを含め、Nginxを効果的に運用するための設定も網羅します。
1. 事前準備と開発環境の構築
Nginxおよびその依存ライブラリのビルドには、C++コンパイラやその他の開発ツールが必要です。まず、以下のyumコマンドで必要なパッケージを導入します。
$ sudo yum update -y
$ sudo yum install -y gcc gcc-c++ make
これにより、基本的なコンパイル環境が整います。
2. Nginxおよび依存ライブラリのソースコード取得
Nginx本体およびその依存関係にあるOpenSSL (FIPS版), Zlib, PCREのソースコードをダウンロードします。今回は、すべてのソースコードを/usr/local/srcディレクトリに配置して作業を進めます。
$ mkdir -p /usr/local/src
$ cd /usr/local/src
# Nginx 1.20.0 をダウンロード
$ wget http://nginx.org/download/nginx-1.20.0.tar.gz
# OpenSSL FIPS 2.0.16 をダウンロード (SSL/TLS機能のため)
$ wget https://www.openssl.org/source/openssl-fips-2.0.16.tar.gz
# Zlib 1.2.11 をダウンロード (HTTP圧縮機能のため)
$ wget http://zlib.net/zlib-1.2.11.tar.gz
# PCRE 8.42 をダウンロード (正規表現ベースのURL書き換え機能のため)
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.42/pcre-8.42.tar.gz
3. 依存ライブラリのビルドとインストール
ダウンロードした各ライブラリのソースコードを展開し、システムにコンパイルしてインストールします。これらのライブラリはNginxが利用する主要な機能を提供します。
3.1 OpenSSL FIPSライブラリ
$ cd /usr/local/src
$ tar xzf openssl-fips-2.0.16.tar.gz
$ cd openssl-fips-2.0.16
$ ./config
$ make
$ sudo make install
3.2 Zlibライブラリ
$ cd /usr/local/src
$ tar xzf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make
$ sudo make install
3.3 PCREライブラリ
$ cd /usr/local/src
$ tar xzf pcre-8.42.tar.gz
$ cd pcre-8.42
$ ./configure
$ make
$ sudo make install
これらのmake installコマンドにより、各ライブラリは通常/usr/local/libや/usr/local/binなどの標準的なシステムパスにインストールされます。
4. Nginxのビルドとインストール
依存ライブラリが準備できたら、Nginx本体をビルドし、インストールします。ここでは、SSL/TLSモジュールとステータスモジュールを有効にしてコンパイルします。--prefixオプションでNginxのインストール先を指定します。
$ cd /usr/local/src
$ tar xzf nginx-1.20.0.tar.gz
$ cd nginx-1.20.0
# Nginxを /usr/local/nginx にインストールし、SSLおよびステータスモジュールを有効にする
# OpenSSL FIPSのソースディレクトリを明示的に指定します。
$ ./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-openssl=/usr/local/src/openssl-fips-2.0.16
$ make
$ sudo make install
インストールが完了したら、Nginxが意図したモジュールと共にビルドされたかを確認できます。
$ /usr/local/nginx/sbin/nginx -V
出力に--with-http_ssl_moduleが含まれていれば、SSLモジュールが正常に組み込まれています。
5. Nginxの起動と管理
Nginxを起動し、停止、再起動、設定のリロードなどの基本的な管理コマンドを習得します。
# Nginxの起動
$ sudo /usr/local/nginx/sbin/nginx
# 設定ファイルをリロードして再起動 (設定変更時)
$ sudo /usr/local/nginx/sbin/nginx -s reload
# Nginxの停止
$ sudo /usr/local/nginx/sbin/nginx -s stop
6. 共有ライブラリのロードエラー対処
Nginx起動時に「error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory」のようなエラーが発生する場合があります。これはNginxがPCREライブラリを見つけられないために起こります。
lddコマンドでNginxの実行ファイルが必要とする共有ライブラリと、それが見つからないことを確認します。
$ ldd /usr/local/nginx/sbin/nginx
libpcre.so.1 => not foundと表示された場合、システムが参照するライブラリパスにシンボリックリンクを作成して解決します。PCREライブラリは通常/usr/local/lib/libpcre.so.0.0.1としてインストールされるため、libpcre.so.1へのリンクを作成します。
$ sudo ln -s /usr/local/lib/libpcre.so.0.0.1 /usr/local/lib/libpcre.so.1
# もし /lib64 ディレクトリにも必要であれば、同様にリンクを作成
# $ sudo ln -s /usr/local/lib/libpcre.so.0.0.1 /lib64/libpcre.so.1
# 共有ライブラリのキャッシュを更新
$ sudo ldconfig
その後、再度Nginxを起動してみてください。
7. Nginxの動作確認
Nginxが正常に動作しているかを確認します。
# Nginx設定ファイルの構文チェック
$ /usr/local/nginx/sbin/nginx -t
# Nginxプロセスが稼働しているか確認
$ ps -ef | grep nginx
# Nginxがリッスンしているポート (通常80番ポート) を確認
$ sudo netstat -anp | grep :80
8. ファイアウォールの設定
Nginxが外部からのアクセスを受け付けるように、ファイアウォール(iptables)を設定し、HTTP (80番ポート) および HTTPS (443番ポート) の通信を許可します。
$ sudo vi /etc/sysconfig/iptables
以下の行を-A INPUT -j REJECT --reject-with icmp-host-prohibited行の前に追加します。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
変更を保存後、iptablesサービスを再起動して設定を適用します。
$ sudo /etc/init.d/iptables restart
9. Webブラウザからのアクセス確認
CentOSサーバーのIPアドレスまたはホスト名を使って、Webブラウザからhttp://<サーバーのIPアドレス>/にアクセスします。Nginxのデフォルトのウェルカムページが表示されれば、インストールと設定は成功です。