ウェブサイト検索

Linux でソースから NGINX をコンパイルしてインストールする方法


Nginx は、無料のオープンソース モジュラー モデル、高いパフォーマンス、安定性、シンプルな設定ファイル、非同期アーキテクチャ (イベント駆動型)、および低リソースにより、現在インターネットに接続されているパブリック サーバーで最も急速に成長している Web サーバーです。実行するために必要です。

公式システム リポジトリはバイナリ パッケージを提供していないため、このチュートリアルでは、Nginx の最新の安定バージョンを RHEL ベースのディストリビューションにソースからインストールする方法を説明します。

ソースのインストールを回避したい場合は、公式のNginx リポジトリを追加し、示されているように yum または dnf パッケージ マネージャーを使用してバイナリ パッケージをインストールできます。

方法 1: Yum リポジトリを使用して NGINX をインストールする

nginx をインストールする前に、RHEL とその派生製品 (CentOS、Rocky Linux、AlmaLinux、Oracle Linux など) で nginx パッケージ リポジトリを有効にする必要があります。その後、リポジトリから nginx をインストールして更新できます。

まず、 図に示すようにyum-utils パッケージをインストールします。

# yum install yum-utils

nginx 公式 yum リポジトリを有効にするには、次の内容を含む /etc/yum.repos.d/nginx.repo という名前のファイルを作成します。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

次に、リポジトリからnginxをインストールして更新できます。

# yum install nginx

重要: 上記の公式 nginx yum リポジトリに従うと、古いバージョンの nginx が提供されることに注意してください。本当に最新バージョンの Nginx をビルドしたい場合は、以下に示すように、ソースのインストールに従うことをお勧めします。

ソースのコンパイルとインストールを使用すると、利用可能な最新バージョンをインストールしたり、モジュールを追加または削除して Nginx 構成を調整したり、インストール システム パスやその他の重要な設定を変更したりできるため、いくつかの利点があります。つまり、インストールプロセス。

方法 2: ソースから NGINX をコンパイルしてインストールする

Nginx のコンパイルとインストールのプロセスを開始する前に、C/C++ コンパイラPCRE (Perl 互換の正規表現)、 > Zlib 圧縮ライブラリOpenSSL (SSL サポートを使用して Nxing を実行する場合) パッケージを、次のコマンドを実行してマシンにインストールします。

# yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel

Nginx ソースをダウンロード

次に、Nginx ダウンロード ページに移動し、次の wget コマンドを使用して Nginx ソース tarball の最新の安定バージョンを取得し、nginx アーカイブを抽出して、 図に示すようにNginx 抽出ディレクトリに移動します。

# wget http://nginx.org/download/nginx-1.23.4.tar.gz
tar xfz nginx-1.23.4.tar.gz 
cd nginx-1.23.4
ls -all

ソースから Nginx をコンパイルする

次のステップでは、configure ファイルを使用してNginx インストール プロセスをカスタマイズし、次のコマンドを使用して Nginx コンパイル プロセスに必要な構成オプションとモジュールを視覚化します。

# ./configure --help

次に、特定の構成と有効または無効なモジュールを使用して Nginx をコンパイルします。このチュートリアルでは、次のモジュールと仕様が使用されましたが、必要に応じてコンパイルを調整できます。

  • --user=nginx – Nginx を実行するシステム ユーザーを設定します。
  • --group=nginx – Nginx が実行されるシステム グループを設定します。
  • --prefix=/etc/nginx – サーバー ファイル (nginx.conf ファイルおよびその他の設定ファイル) のディレクトリ – デフォルトは /usr/local/nginx ディレクトリです。
  • --sbin-path=/usr/sbin/nginx – Nginx 実行可能ファイルの場所。
  • --conf-path=/etc/nginx/nginx.conf – nginx.conf 構成ファイルの名前を設定します。これは変更できます。
  • --error-log-path=/var/log/nginx/error.log – Nginx エラー ログ ファイルの場所を設定します。
  • --http-log-path=/var/log/nginx/access.log – Nginx アクセス ログ ファイルの場所を設定します。
  • --pid-path=/var/run/nginx.pid – メイン プロセス ID ファイルの名前を設定します。
  • --lock-path=/var/run/nginx.lock – Nginx ロック ファイルの名前を設定します。
  • --with-http_ssl_module – HTTPS モジュールの構築を有効にします – デフォルトでは構築されず、OpenSSL ライブラリが必要です。
  • --with-pcre – PCRE ライブラリのソースへのパスを設定します – デフォルトではビルドされず、PCRE ライブラリが必要です。

すべての Nginx モジュールのリストを表示するには、http://wiki.nginx.org/Modules にある Nginx ドキュメント Web ページにアクセスしてください。

Nginx に特定のモジュールをインストールする必要がない場合は、次のコマンドを使用して無効にすることができます。

--without-module_name

次のコマンドを発行してNginx のコンパイルを開始します。これにより、上記で説明したすべての構成とモジュールが使用されます (コマンドが 1 行に収まるようにしてください)。

# ./configure --user=nginx --group=nginx --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 --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --with-http_ssl_module --with-pcre

コンパイル プロセスでは、GNU C コンパイラ、PCRE、OpenSSL ライブラリなどのシステムに必要なユーティリティがすべて検証された後、make.conf ファイルが作成され、すべての設定の概要が出力されます。

Configuration summary
  + using system PCRE2 library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/etc/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

ソースから Nginx をビルドする

最後のステップは、make コマンドを使用してバイナリをビルドすることです。これは、マシンのリソースによっては完了するまでに時間がかかる場合があります。次に、make を使用してシステムに Nginx をインストールします。 install コマンド。

make install コマンドでインストールを実行するには root 権限が必要であることに注意してください。そのため、root アカウントでログインしていない場合は、sudo を持つ特権ユーザーを使用してください。

# make
make install

インストールプロセスが正常に終了したら、nginx システムユーザー (/etc/nginx/ をホームディレクトリとし、有効なシェルを持たない) を追加します。このユーザーは Nginx の次の useradd コマンドを発行すると、次のように実行されます。

# useradd -d /etc/nginx/ -s /sbin/nologin nginx

Nginxファイルの構成

コンパイル中に、Nginxnginx システム ユーザーから実行され、nginx.conf ファイルを開いてユーザー ステートメントを に変更するように指定しました。 >nginx

# nano /etc/nginx/nginx.conf
OR
vi /etc/nginx/nginx.conf

ここでは、次のオプションを使用してユーザーを検索して変更し、ルートの場所のステートメントも文書化します。

user nginx;
location / {
                root /var/www/html;
                autoindex on;
                index index.html index.htm;

Nginx を開始する前に、Web ドキュメントのルート パスが作成されていることを確認し、次のコマンドを使用して nginx を開始します。

# mkdir -p /var/www/html
/usr/sbin/nginx

シェル プロンプトを使用してNginx が実行されているかどうかを確認する場合は、netstat コマンドを実行して TCP 接続を確認します。

# netstat -tulpn | grep nginx

ファイアウォールで Nginx を開く

リモート システムから Nginx を確認するには、ポート 80443 で外部への接続を開くファイアウォール ルールを追加します。

# firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl restart firewalld

最後に、ブラウザを開いて、次のサーバーの IP アドレスに URL を送信します。

http://server_IP

Nginxサービスを管理する

Nginx プロセスを管理するには、次のコマンドを使用します。

# /usr/sbin/nginx -V         [show Nginx modules and configurations]
/usr/sbin/nginx -h         [help options]
/usr/sbin/nginx -t         [check configuration file]
/usr/sbin/nginx            [start Nginx process]
/usr/sbin/nginx -s stop    [stop Nginx process]
/usr/sbin/nginx -s reload  [reload Nginx process]

systemd スクリプトを通じて Nginx デーモン プロセスを管理する必要がある場合は、/lib/systemd/system/nginx.service に次のファイルを作成します。その後、systemctl コマンドを使用してプロセスを管理できます。

# vi /lib/systemd/system/nginx.service

次のファイル内容を追加します。

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Nginx systemd ファイルが作成されたら、以下のコマンドを使用してデーモンを管理します。

# systemctl start nginx
systemctl stop nginx
systemctl status nginx

それだけです!これで、RHEL ベースのディストリビューションに最新バージョンのNginx がインストールされました。次のチュートリアルでは、Nginx FastCGI Gateway を介して PHP-FPM プロセス マネージャーをインストールして有効にする方法について説明します。

関連記事: