CentOS 7環境にWebサーバーとして広く利用されるNginxをソースコードからビルドし、インストールする手順を解説します。ソースからのインストールは、特定のコンパイルオプションを適用したり、最新の安定版を利用したい場合に特に有用です。
1. 必要な開発ツールの準備
Nginxをソースからビルドするには、C言語コンパイラや関連ライブラリが必要です。以下のコマンドで必要なパッケージをインストールします。
まず、gccなどのビルドツールが含まれる「Development Tools」グループをインストールします。
sudo yum groupinstall "Development Tools" -y
次に、Nginxが利用する主要なライブラリをインストールします。
-
PCRE (Perl Compatible Regular Expressions): NginxのHTTPモジュールで正規表現を処理するために必要です。
sudo yum install pcre pcre-devel -y -
zlib: HTTPコンテンツの圧縮(gzip)機能を提供するために必要です。
sudo yum install zlib zlib-devel -y -
OpenSSL: HTTPSプロトコル(SSL/TLS)のサポートのために必要です。
sudo yum install openssl openssl-devel -y
2. Nginxソースコードのダウンロード
Nginxの公式ウェブサイトから、最新の安定版ソースコードをダウンロードします。ここでは例として、1.26.0バージョンを使用します。wgetコマンドがインストールされていない場合は、sudo yum install wget -yで事前にインストールしてください。
cd /usr/local/src
wget https://nginx.org/download/nginx-1.26.0.tar.gz
3. ソースコードの展開
ダウンロードしたアーカイブファイルを展開し、展開されたディレクトリに移動します。
tar -zxvf nginx-1.26.0.tar.gz
cd nginx-1.26.0
4. Nginxのコンパイルオプション設定
configureスクリプトを実行して、Nginxのビルドオプションを設定します。--prefixオプションでインストール先ディレクトリを指定するのが一般的です。HTTPSを有効にする--with-http_ssl_moduleなど、必要に応じてモジュールを追加します。
ここでは、/opt/nginxにインストールし、SSLモジュールを有効にする例を示します。
./configure \
--prefix=/opt/nginx \
--with-http_ssl_module \
--sbin-path=/opt/nginx/sbin/nginx \
--conf-path=/opt/nginx/conf/nginx.conf \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log
5. コンパイルとインストール
設定が完了したら、makeコマンドでコンパイルし、make installコマンドで指定されたディレクトリにNginxをインストールします。
sudo make
sudo make install
インストールが完了すると、Nginxの実行ファイルは--prefixで指定したディレクトリ(この例では/opt/nginx/sbin/nginx)に配置されます。
6. Nginxの基本的な操作
インストールしたNginxは、以下のコマンドで起動、停止、設定のリロードが行えます。
Nginxを実行するディレクトリに移動します。
cd /opt/nginx/sbin/
-
Nginxの起動:
sudo ./nginxNginxがHTTPポート(デフォルトは80番)を使用しているため、他のプロセスが既に80番ポートを使用している場合、起動に失敗することがあります。その際は、以下のコマンドで80番ポートを使用しているプロセスを特定し、停止してください。
net-toolsパッケージがインストールされていない場合は、sudo yum install net-tools -yでインストールします。sudo netstat -tulnp | grep :80 -
Nginxの停止 (グレースフルシャットダウン):
現在のリクエストの処理を完了させてからNginxプロセスを終了します。
sudo ./nginx -s quit -
Nginxの停止 (強制停止):
即座にNginxプロセスを終了します。
sudo ./nginx -s stop -
Nginx設定のリロード:
nginx.confファイルを変更した場合、Nginxを再起動することなく新しい設定を適用します。sudo ./nginx -s reload -
Nginxプロセスの確認:
ps aux | grep nginx
7. システム起動時の自動実行設定 (systemd)
CentOS 7では、systemdを使用してNginxをサービスとして管理するのが一般的です。以下の手順でNginxのsystemdサービスファイルを作成し、自動起動を有効にします。
-
サービスファイルの作成:
/etc/systemd/system/nginx.serviceというファイルを作成し、以下の内容を記述します。sudo vi /etc/systemd/system/nginx.serviceファイル内容:
[Unit] Description=The Nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/opt/nginx/sbin/nginx -t ExecStart=/opt/nginx/sbin/nginx ExecReload=/opt/nginx/sbin/nginx -s reload ExecStop=/opt/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target -
systemd設定のリロード:
新しいサービスファイルを認識させるために、
systemdデーモンをリロードします。sudo systemctl daemon-reload -
Nginxサービスの有効化と起動:
システム起動時にNginxが自動的に起動するように設定し、サービスを即座に起動します。
sudo systemctl enable nginx sudo systemctl start nginx -
サービスの状態確認:
Nginxサービスが正しく起動しているか確認します。
sudo systemctl status nginx
これで、NginxがCentOS 7システムにソースからインストールされ、systemdによって管理されるようになりました。