SAGA SITE

夢をプロトタイピング

最新の安定版Nginxをaptコマンドでインストールする方法

UbuntuにNginxをインストールする作業の続きです。

 

sagasite.hatenablog.com

 

 

公式サイトからNginxの圧縮ファイルをダウンロード

 

nginx.org

https://nginx.org/en/download.html

 

本日の時点でStable versionの最新版は「nginx-1.26.2」でした。

https://nginx.org/download/nginx-1.26.2.tar.gz

これをWindowsのデスクトップにでもダウンロードして保存します。

 

※本来ならUbuntuSSH接続でログインして、Webサーバー内でダウンロードや解凍などの作業をやるべきなのですが、ここではUbuntuのコマンド操作でダウンロードするために必要なライブラリーの取得などを省略するために、Windowsパソコンでできることはやってしまっています。

 

WinSCPでサーバーにアップロード

WinSCPでサーバーに接続して、ダウンロードしたファイルを転送します。

Nginxのソースコードは、Ubuntuの「/usr/local/src」ディレクトリーに置きます。

 

WinSCPでアップロード

 

アップロードしようとしたらエラーメッセージが出て転送できませんでした。

 

WinSCPでアップロードしたらエラーメッセージが表示されました

 

WinSCPSSH接続しているユーザー名は「Ubuntu」ですが、

接続先の「/usr/local/src」ディレクトリーは所有者が「root」になっていたため、不一致(権限不足)で操作できませんでした。

 

仕方ないので、サーバーにSSHクライアントソフトで接続して、コマンド操作する方法に変更します。

 

(上記の失敗の過程は、今後の参考にために残しておきます。)

(ログインユーザーのホームディレクトリー「/home/ubuntu」ならアクセス権限があるので、いったんここにアップロードして、その後コピー等のコマンド操作をすれば対処可能です。)

 

SSHクライアントでサーバーに接続

RLoginでさくらVPSに接続してログインしたら、

「*** システムの再起動が必要です ***」というメッセージが表示されていました。

(前にログインしたとき、update、upgradeコマンドを実行していたためだと思われます。)

 

Ubuntuで「*** システムの再起動が必要です ***」というメッセージが表示されました

 

Ubuntuを再起動するコマンド「sudo reboot」を入力して、サーバーを再起動させます。

 

Nginx公式サイトのインストールガイドを参照

Nginxの公式サイトにUbuntuに手動でインストールする場合の手順が紹介されています。

基本的には、公式の方法を参考にしてみます。

 

nginx.org

https://nginx.org/en/linux_packages.html#Ubuntu

 

(参考)

qiita.com

https://qiita.com/ran-sakata/items/4fc643e001bca12e5894

 

Ubuntu

(以下、※青字はGoogle翻訳による日本語訳)

 

Install the prerequisites:

前提条件をインストールします:

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

Import an official nginx signing key so apt could verify the packages authenticity. Fetch the key:

apt がパッケージの信頼性を検証できるように、公式の nginx 署名キーをインポートします。キーを取得します。

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Verify that the downloaded file contains the proper key:

ダウンロードしたファイルに適切なキーが含まれていることを確認します。

gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

The output should contain the full fingerprint

573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 as follows:

出力には、次のように完全なフィンガープリント 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 が含まれるはずです。

pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

Note that the output can contain other keys used to sign the packages.

出力には、パッケージの署名に使用される他のキーが含まれる場合があることに注意してください。

To set up the apt repository for stable nginx packages, run the following command:

安定した nginx パッケージ用の apt リポジトリを設定するには、次のコマンドを実行します。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

If you would like to use mainline nginx packages, run the following command instead:

メインラインの nginx パッケージを使用する場合は、代わりに次のコマンドを実行します。

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Set up repository pinning to prefer our packages over distribution-provided ones:

ディストリビューションが提供するパッケージよりも弊社のパッケージを優先するようにリポジトリのピン留めを設定します。

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

To install nginx, run the following commands:

nginx をインストールするには、次のコマンドを実行します。

sudo apt update

sudo apt install nginx

 

ここまで、公式サイトのUbuntuへNginxをインストールする方法を見て、自分が希望している方法ではないことが分かりました。

なので、もう一度別のやり方を調べてみます。

 

Nginx参考書のインストールガイドを参照

手元にはNginxの参考書が何冊かあります。

以前、Nginxの理解を深めたいと思ったときに、衝動的に買い漁ってしまいましたが、読まないまま積読になっていました。

やっとここに来て出番が来ました!(…入手しておいて良かった)

 

nginx実践入門

発行日:2016/1/16

 

この本には、Nginxのコンパイル方法(手動インストール)が詳しく紹介されています。

Nginxの動作を細かく設定したい場合は、「nginx実践入門」が参考になると思います。

本の発行日が2016年と古いですが、基本的な操作は今も大差ないと思います。

 

Nginx ポケットリファレンス

発行日:2015/9/26

 

この本には、Nginxのコンパイル方法(手動インストール)が簡潔に紹介されています。

とりあえずサクッとコンパイルしたい場合は、「Nginx ポケットリファレンス」も参考になると思います。

本の発行日が2015年と古いですが、基本的な操作は今も大差ないと思います。

 

nginx実践ガイド

発行日:2017/2/16

 

この本には、Nginxのコンパイル方法(手動インストール)がほとんど記載されていません。

辛うじて第10章にオマケ的にちょこっと記載されているだけです。

基本的にこの本の方針は、Linuxディストリビューションで用意されている標準パッケージのNginxを使うとのことです。

Nginxのインストール方法よりも、運用のノウハウの説明にページを割いているかんじでした。

なので、コンパイル方法を知りたい場合は、「nginx実践ガイド」はあまり参考にならないと思います。

 

ハイパフォーマンスHTTPサーバ Nginx入門

発行日:2011/4/21

 

この本には、Nginxのコンパイル方法(手動インストール)が詳しく紹介されています。

さらにシンボリックリンクを張って、複数のNginxを切り替える方法も紹介されています。

Nginxのコンパイルオプションをいろいろ変えてみて、希望のビルドを使用したい場合は、「ハイパフォーマンスHTTPサーバ Nginx入門」が参考になると思います。

本の発行日が2011年と古いですが、基本的な操作は今も大差ないと思います。

 

要点はシンボリックリンクを張り変えるだけなので、コンパイルする作業は他の本と基本的には同じです。

 

シンボリックリンクを変更するコマンド

ln -s /usr/local/nginx-1.26.2 /usr/local/nginx

みたいに「/usr/local/nginx」の参照先を変えるだけの話です。

 

F5社のインストールガイド

Amazonで見かけるNginxの参考書は、発行日が古くて、最近出版された本がないようでした。

情報の陳腐化が気になる方は、F5社(現在のNginxの開発元)のインストールガイドも参考にしてみたら良いと思います。

→ザッと見たかんじ、上記の本で紹介されているコンパイル方法と基本的には同じような内容でした。

 

docs.nginx.com

https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#compiling-and-installing-from-source

Compiling and Installing from Source

ソースからのコンパイルとインストール

 

Compiling NGINX Open Source from source affords more flexibility than prebuilt packages: you can add particular modules (from NGINX or third parties), and apply latest security patches.

ソースから NGINX オープンソースコンパイルすると、ビルド済みのパッケージよりも柔軟性が高まります。特定のモジュール (NGINX またはサードパーティ製) を追加したり、最新のセキュリティ パッチを適用したりできます。

 

ここまでソースコードからコンパイルして、Nginxを手動でインストールする方法や、複数のNginxを切り替える方法を確認してみました。

 

今回用意するWebサイトは、それほど細かい設定が必要となるサーバーではないため、手動でNginxをインストールするのは面倒くさいと思いました。

 

なので、Nginx公式サイトのaptコマンドでサクッと最新のNginxをインストールできる方法を試してみたいと思います。

ここまで引っ張っておいて、なんですが、優柔不断かつ面倒くさがりなので仕方ありません。

 

やっぱNginx公式サイトのインストールガイドを真似してaptコマンドで自動インストール

nginx.org

 

qiita.com

 

Nginx公式サイトの説明通りにやったら、サクッと最新の安定版「Nginx 1.26.2」がインストールできました。

 

Nginxインストールの様子

 

Nginxの起動

sudo systemctl start nginx

 

Nginxの動作状況を確認

sudo systemctl status nginx

nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-11-20 23:32:43 JST; 13s ago
       Docs: https://nginx.org/en/docs/
    Process: 6784 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 6785 (nginx)
      Tasks: 4 (limit: 2275)
     Memory: 3.7M (peak: 3.9M)
        CPU: 11ms
     CGroup: /system.slice/nginx.service
             ├─6785 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ├─6786 "nginx: worker process"
             ├─6787 "nginx: worker process"
             └─6788 "nginx: worker process"

11月 20 23:32:43 ***-***-***** systemd[1]: Starting nginx.service - nginx - high performance web server...
11月 20 23:32:43 ***-***-***** systemd[1]: Started nginx.service - nginx - high performance web server.

 

「Active: active (running) 」と表示されていたらOK、とのこと。

 

Nginxのバージョン確認

nginx -v

nginx version: nginx/1.26.2

 

Webブラウザーでサーバーにアクセス

ブラウザーのURL欄に、サーバーのIPアドレスを直接入力して、ネットワーク越しにアクセスしてみます。

Nginxのデフォルトページが表示されたら、WebサーバーソフトとしてNginxが動作していることが外部から確認できます。

 

Nginxのデフォルトページ

 

以上で、UbuntuサーバーにNginxのインストールが完了しました。

 

次は、DNSの設定を変更して、旧サーバーから新サーバーへとドメインの紐づけを変更する作業を行う予定です。