依存ライブラリのセットアップ
コンパイルを行う前に、必要な開発ツールとライブラリをシステムに登録します。Nginx の機能拡張には PCRE、Zlib、OpenSSL 等が不可欠です。
sudo apt-get update
sudo apt-get install -y build-essential libpcre3-dev zlib1g-dev libssl-dev
ソースアーカイブの入手と展開
公式リリースページから対象バージョンのパッケージを取得し、適切なディレクトリに配置します。
# ワークディレクトリの作成
mkdir -p /opt/src
cd /opt/src
# ダウンロード(curlを使用)
curl -O https://nginx.org/download/nginx-1.26.2.tar.gz
# 解凍とディレクトリ移動
tar -xzf nginx-1.26.2.tar.gz
cd nginx-1.26.2
コンパイルオプションの指定
インストール先パスや有効化したい機能を ./configure コマンドで定義します。ここでは標準的な Web サーバーとしての利用を想定しています。
./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_gzip_static_module
--prefix: コンフィグや静的ファイルのベースディレクトリ--with-http_ssl_module: HTTPS 通信に対応させるためのモジュール--with-http_v2_module: HTTP/2 プロトコルのサポート
ビルドと設置作業
設定が完了すれば、ソースコードのコンパイルを実行します。エラーなく進めば、最終的に実行ファイルを配置します。
# コンパイル処理の実行
make -j$(nproc)
# インストール許可の確認後に実装
sudo make install
コマンドラインからのアクセス設定
ソースビルドでは自動的にパスに追加されないため、必要に応じてシンボリックリンクを作成します。これにより、任意のディレクトリから nginx コマンドを参照可能になります。
# シンボリックリンクの作成例
sudo ln -s /usr/sbin/nginx /usr/bin/nginx
# バージョン情報の確認
nginx -v
Systemd ユニットファイルの定義
サービスとして管理するため、systemd の設定ファイルを記述します。/etc/systemd/system/ 配下に新規作成するのが推奨されます。
[Unit]
Description=Nginx HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
設定後、systemd が認識するように反映させます。
sudo systemctl daemon-reload
サービスの起動とステータス管理
作成したユニットファイルを使用してプロセスを制御できます。自動起動の有効化も可能です。
# サービス開始
sudo systemctl start nginx
# 状態の確認
sudo systemctl status nginx
# 起動時に自動開始させる
sudo systemctl enable nginx
# プロセスの確認
ps aux | grep "[n]ginx"