CentOS 7でのNginxソースコンパイルインストール手順

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 ./nginx

    Nginxが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サービスファイルを作成し、自動起動を有効にします。

  1. サービスファイルの作成:

    /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
  2. systemd設定のリロード:

    新しいサービスファイルを認識させるために、systemdデーモンをリロードします。

    sudo systemctl daemon-reload
  3. Nginxサービスの有効化と起動:

    システム起動時にNginxが自動的に起動するように設定し、サービスを即座に起動します。

    sudo systemctl enable nginx
    sudo systemctl start nginx
  4. サービスの状態確認:

    Nginxサービスが正しく起動しているか確認します。

    sudo systemctl status nginx

これで、NginxがCentOS 7システムにソースからインストールされ、systemdによって管理されるようになりました。

タグ: nginx CentOS linux Webサーバー ソースコンパイル

8月4日 18:01 投稿