Ubuntu 22.04 で Nginx 1.26.2 をソースからビルドして導入する

依存ライブラリのセットアップ

コンパイルを行う前に、必要な開発ツールとライブラリをシステムに登録します。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"

タグ: Ubuntu nginx linux systemd compilation

5月29日 03:45 投稿