今回は、Ubuntu Server 22.04にWebサーバの一種であるnginxをUbuntuの標準のリポジトリではなく、nginxのリポジトリからインストールしていきます。
なお、Ubuntuの標準リポジトリではなく、nginxからのリポジトリを使うメリットはUbuntuの標準リポジトリに比べ、アップデートが早いため不具合の修正などが早いなどのメリットがあります。
ただ、Ubuntuの標準外のリポジトリのため、本番環境への導入時はその点を気をつける必要があります。
Ubuntu Server 22.04にApacheをインストールする手順はこちらになります。
期待する目標
本手順で期待する目標は以下の通りです。
- Ubuntu 22.04にnginxのリポジトリを追加することができる
- Ubuntu 22.04にnginxをインストールすることができる
- ブラウザより構築したWebサーバにアクセスできる
前提条件
Ubuntu Server 22.04にnginxをインストールする環境は以下の通りです。
なお、本環境は検証環境のため本番環境で使用する場合は、しっかりとしたサイジングが必要になります。
- CPU : 2vCPU
- MEM : 4GB
- DISK : 60GB
- Kernel : 5.15.0-46-generic
- OS : Ubuntu 22.04.1 LTS
また、Ubuntu Server 22.04のインストールについては、省略しています。
Ubuntu Server 22.04のインストールについては、こちらをご覧ください。
また、nginxをインストールするに当たり、インストールするUbuntu Serverがインターネットに接続できる必要があります。
インストールについては、CLIでインストールを行うため、Ubuntu Serverに対しSSH接続できる方が楽に作業ができます。
nginxのリポジトリ追加
Ubuntu Server 22.04へリポジトリの追加を行っていきます。
なお、以下のコマンドを実行し、Ubuntu Serverのパッケージを最新化しておきます。
~$ sudo apt update
~$ sudo apt upgrade
パッケージの最新化が完了したら、以下のコマンドを実行し、nginxのインストールに必要な前提パッケージをインストールしていきます。
~$ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
- curl : URLベースのデータ取得ツール
- gnupg2 : データの暗号化や復号化、署名を確認するツール
- ca-certificates : CA(認証局)ツール
- lsb-release : Linux Standard Base(コマンドの最適化ツール)
- ubuntu-keyring : Ubuntuのパスワード管理ツール
前提パッケージのインストールが完了したら、以下のコマンドを実行し、nginxの署名をインポートします。
~$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
ここでは、CURLコマンドを使用して、nginxの署名をダウンロードし、署名をgpgファイルに保存します。
これを行うことで、APTのパッケージ管理ソフトがこのレポジトリを信頼し、Ubuntu標準レポジトリ殻だけでなく、nginxのレポジトリからもパッケージを引っ張ってくることができます。
レポジトリの署名をインポートしたら、その署名が正しいものかを以下のコマンドを使用して検証します。
~$ gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>
コマンドを実行すると、[pub]のセクションにフィンガープリントの情報が含まれています。
このフィンガープリントが以下であることを確認します。
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
このフィンガープリントが一致していない場合、CURLで取得してきたファイルが間違っている可能性があるため、削除してnginxの公式のリポジトリを確認します。
以下のコマンドを使用して、APTにnginxのリポジトリを追加します。
ここでは2パターンの追加方法があります。
1. nginxの安定版のリポジトリを追加する場合(サーバ用途であればこちらを推奨)
~$ 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
2. 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
現時点の状態だとまだ、Ubuntuの標準リポジトリが優先されてしまうため、nginxの公式リポジトリをUbuntuの標準リポジトリより優先度を上げてnginxのリポジトリを優先するように設定します。
~$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900
以上で、nginxのリポジトリを追加は完了です。
nginxインストール
APTへのリポジトリ追加とnginxの設定が完了したら、APTでインストールすることができます。
以下のコマンドを実行して、nginxをインストールします。
~$ sudo apt update
~$ sudo apt install nginx
nginxのインストールが完了したら、サービスの状態を確認します。
~$ systemctl status nginx
○ nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: https://nginx.org/en/docs/
インストール直後だと、nginxのサービスが起動していないため、起動させます。
~$ sudo systemctl start nginx
~$ systemctl status nginx
● nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-08-21 02:13:38 UTC; 7s ago
Docs: https://nginx.org/en/docs/
Process: 26687 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 26688 (nginx)
Tasks: 3 (limit: 4534)
Memory: 3.5M
CPU: 6ms
CGroup: /system.slice/nginx.service
tq26688 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
tq26689 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
mq26690 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Aug 21 02:13:38 dev-nginx systemd[1]: Starting nginx - high performance web server...
Aug 21 02:13:38 dev-nginx systemd[1]: Started nginx - high performance web server.
nginxの[Active]が[active (running)]となっていることを確認します。
以上で、nginxのインストールと起動が完了しました。
また、ついでにUbuntuの起動時にnginxが起動するように設定します。
~$ sudo systemctl enable nginx
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx
nginxのインストールと自動起動の設定が完了したら、以下のコマンドでインストールされているnginxのバージョンを確認してみます。
~$ nginx -v
nginx version: nginx/1.22.0
2022年8月22日時点だとnginxのバージョンは[1.22.0]でした。
以上でnginxのインストールは完了です。
nginx稼働確認
nginxをインストールが完了したら、nginxの稼働確認をします。
nginxをインストールしたサーバからアクセス可能なネットワークに所属するPCから、ブラウザを起動して、以下のURLへアクセスします。
http://<nginxをインストールしたサーバのIP or FQDN>
ブラウザより、[Welcome to nginx!]のページが表示されたら、問題なくnginxが動作しています。
以上でUbuntu Server 22.04へnginxのインストールは完了です。
まとめ
今回は、Ubuntu 22.04にnginxの公式レポジトリを追加して、安定版のnignxをインストールする手順を記事にしました。
Ubuntuの標準のレポジトリでも問題ないのですが、Ubuntuの標準レポジトリだとバージョンの更新が遅かったり、メリットよりもデメリットのほうが多いと判断したので、nginxの公式から安定版のインストールにしてみました。
Ubuntuの標準レポジトリよりも若干手数は踏みますが、これで比較的新しいnginxでWebサーバを運用することができると思います。
ただ、この設定だけだとほぼデフォルトの設定のため、リリースするにはもう少し設定が必要だと思います。
この部分については、後で記事に設定したいと思います。
おまけ
本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
コメント