(最終更新月:2023年9月)
✔以下のような方に向けた記事です
「UbuntuでNginxを操作したいが、どうすればいいかわからない」
「Ubuntuを用いたNginxの設定方法を知りたい」
「具体的なUbuntuでのNginx操作の実例を見て学びたい」
✔当記事で伝えたい内容
- UbuntuでのNginxの基本的な使い方
- Nginx設定の書き方及び応用方法
- Ubuntuを使ったNginx操作の実例
当記事では、UbuntuでNginxを操作する基本的な方法から応用方法まで、実際の操作例を交えて詳細に説明します。
ぜひ最後までお読みください。
Nginxの設定を変更したら、以下のコマンドを実施。
— ITC (@ITC202012) September 9, 2023
nginx -t
nginx -s reload
UbuntuにNginxを搭載する方法や複数ドメイン・HTTP化まで解説。
Webサーバーの構築は幅広い知識が必要で、私もまだまだ勉強中。https://t.co/nGtXXVJSlS
UbuntuとNginxの基本
こちらでは、「UbuntuとNginxの基本」についてお伝えしていきます。
- Ubuntuとは
- Nginxとは
Ubuntuとは
Ubuntuは、DebianベースのLinuxディストリビューションのひとつ。
以下はUbuntuに関する基本的な情報です。
- 発行元
Canonical Ltd. がサポートします。 - リリースサイクル
2年ごとにLTS(Long Term Support)バージョンをリリースし、LTSバージョンは5年間のサポートが提供されます。その間に、6ヶ月ごとに通常のリリースがおこなわれる。 - デスクトップ環境
デフォルトのデスクトップ環境としては、以前はUnityを使用していましたが、18.04 LTSからはGNOMEが採用されています。 - 派生版
Ubuntuのコードベースを元にした多くの派生版が存在します。Kubuntu(KDEデスクトップ環境)、Xubuntu(XFCEデスクトップ環境)、Lubuntu(LXQtデスクトップ環境)などがあります。 - 利用シーン
Ubuntuはデスクトップ、サーバー、クラウド、IoTデバイスなど、さまざまな用途で使用されています。 - 特徴
利用者が増えている理由のひとつとして、使いやすさ、豊富なソフトウェアのパッケージ、アクティブなコミュニティ、そしてCanonicalのサポートが挙げられます。
Nginxとは
Nginx(エンジンエックス)は、高性能で軽量なWebサーバーやリバースプロキシサーバーなどとして機能するソフトウェア。
以下はNginxに関する基本的な情報です。
- 高性能・高並行性
Nginxは特に多数の同時接続を効率的に処理することを目的として設計されており、少ないリソースで多くのリクエストを処理できます。 - リバースプロキシ
Nginxはリバースプロキシとしてもよく使用されます。クライアントからのリクエストをバックエンドのサーバーに転送し、そのレスポンスをクライアントに返せます。 - ロードバランサー
Nginxはロードバランシングの機能も持っており、入ってくるトラフィックを複数のサーバーに分散可能。 - 静的コンテンツの配信
Nginxは静的ファイルの配信に非常に効率的であり、高速にコンテンツをクライアントに提供できます。 - 設定の柔軟性
Nginxの設定ファイルは非常に柔軟で、多様なニーズに対応するための詳細な設定が可能です。 - 拡張性
モジュールを使用してNginxの機能を拡張できます。多くのサードパーティモジュールが利用可能で、カスタムモジュールの作成も可能です。 - セキュリティ
NginxはセキュアなWebサーバーとして知られており、多くのセキュリティ機能やモジュールが提供されています。
Nginxは、Apache HTTP Serverなどの他のWebサーバーと比較して、特に高トラフィックの状況でのパフォーマンスやリソースの効率性で優れていると広く認識されています。
大規模なWebサイトや高トラフィックのアプリケーションでの使用に特に適しているソフトウェアです。
前提条件: Ubuntuサーバーの準備
こちらでは、「Ubuntuサーバーの準備」についてお伝えしていきます。
- 必要なハードウェアとソフトウェアの要件
- UbuntuとNginxの準備が出来たかチェック
必要なハードウェアとソフトウェアの要件
UbuntuとNginxでは、とくに最低限必要なスペックは明示されていません。
用途によって、必要なスペックは大きく異なるからです。
最低限のものとして、以下がおすすめです。
- CPU:1GHz以上
- RAM:512MB以上
- ディスク容量:2.5GB以上
- Ubuntu:LTSでサポート期限が切れていないもの
こちらは最低限の用途で使うもの。
より早く、たくさん、使いたいのであれば、サーバーのスペックも高くする必要があります。
UbuntuとNginxの準備が出来たかチェック
インストール後、システムの更新や必要な依存関係のインストールが完了したら、以下のコマンドでバージョンが表示されるかを確認してください。
$ nginx -v
nginx version: nginx/1.25.2
NginxをUbuntuに導入するステップ
こちらでは、「UbuntuにNginxを導入するステップ」についてお伝えしていきます。
- Nginxのインストール
- ファイアウォールの設定
- Webサーバーの動作確認
- Nginxプロセスの管理
- 設定ファイルの確認
Nginxのインストール
UbuntuでのNginxのインストールは非常に簡単。
sudo apt update
sudo apt install nginx
インストール後は、バージョンが確認できたら、以下のコマンドでサービスを起動します。
sudo systemctl start nginx
ファイアウォールの設定
安全な運用のために、UFWファイアウォールを設定し、必要なポートだけを開放しましょう。
通常、HTTPは80番ポート、HTTPSは443番ポートを開放します。
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22 #SSH接続をしているなら22も忘れずに
sudo ufw enable
Webサーバーの動作確認
ブラウザでサーバーにアクセスし、Nginxのデフォルトページが表示されることで動作確認ができます。
Nginxプロセスの管理
Nginxのプロセスをsudo systemctl
コマンドを使用して管理する場合、以下のコマンドを使用できます。
1.Nginxを起動する
sudo systemctl start nginx
2.Nginxを停止する
sudo systemctl stop nginx
3.Nginxを再起動する
sudo systemctl restart nginx
4.Nginxの状態を確認する
sudo systemctl status nginx
5.Nginxを再読み込みする (設定変更後など)
sudo systemctl reload nginx
6.Nginxの自動起動設定を有効にする
システム起動時に自動的にNginxを起動するように設定します。
sudo systemctl enable nginx
7.Nginxの自動起動設定を無効にする
sudo systemctl disable nginx
これらのコマンドを使用することで、Nginxのサービスの管理や状態の確認がおこなえます。
設定ファイルの確認
Nginxの設定は、以下のどちらかでおこないます。
- /etc/nginx/nginx.conf:大元のファイル
- /etc/nginx/conf.d/default.conf等:大元から分割されたファイル
何を変更したいかで、編集すべき設定ファイルが変わってきます。
Webページ公開とサーバーブロック
こちらでは、「Webページの公開とサーバーブロックの設定」についてお伝えしていきます。
- サーバーブロックとそのセットアップ
- Webページの公開方法
サーバーブロックとそのセットアップ
サーバーブロックは、バーチャルホストを設定するNginxの機能です。
異なるドメインやサブドメインで異なるWebページを扱えます。
server {
listen 80;
listen [::]:80;
server_name example.com;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
Webページの公開方法
公開したいWebページを適切なディレクトリに配置。
Nginxの設定ファイルでそのディレクトリを指定することで公開します。
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
反映にはNginxの再起動が必要です。
nginx -t
nginx -s reload
マルチドメインとバーチャルホスト
こちらでは、「マルチドメインとバーチャルホストの設定」についてお伝えしていきます。
- 各ドメインのドキュメントルートディレクトリ作成
- バーチャルホストの設定方法
- 設定ファイルの確認とリロード
各ドメインのドキュメントルートディレクトリ作成
複数のドメインを管理するためには、それぞれのドメインごとにドキュメントルートディレクトリを作成します。
各ドメインが参照するドキュメントを分け、異なる内容を表示できます。
location / {
root /usr/share/nginx/html; ##ここを変更。
index index.html index.htm;
}
バーチャルホストの設定方法
Nginxの設定ファイルで、それぞれのドメインに対応するサーバーブロックを定義し、バーチャルホストを設定します。
server {
listen 80;
listen [::]:80;
server_name example.com;
#必要な設定を書く
}
server {
listen 80;
server_name example01.com
#必要な設定を書く
}
server_nameについて理解すると、設定がスムーズです。
設定ファイルの確認とリロード
同じ設定ファイル内にサーバーブロックの記載もできますが、conf.dディレクトリに別ファイルとして分けることも可能。
例えば以下のようなフォルダツリーでご説明を進めます。
.
|-- conf.d # ここにサーバーブロックを定義した設定ファイルを入れる
| |-- default.conf
| `-- myoriginal.conf #これが新しく作った設定ファイル
|-- nginx.conf #ここがhttpブロックから書かれた大元のファイル
|-- #ほかにもファイルはいろいろとあります。デフォルトのまま
conf.d内に、新たな設定ファイルを作っても、とくにリンクなどを指定する必要はありません。
なぜなら大元のnginx.confで、conf.d内の.confファイルをすべて見るよう記されているからです。
include /etc/nginx/conf.d/*.conf;
ただし設定ファイルの記述が正しいかと、ngixnのリロードを実行する必要はあります。
nginx -t
nginx -s reload
HTTPS対応ステップ
こちらでは、「HTTPS対応のステップ」についてお伝えしていきます。
- Certbotパッケージのインストール
- HTTPSアクセスの確認方法
- サーバ証明書の自動更新テスト
Certbotパッケージのインストール
HTTPSを設定するためにはSSL証明書が必要です。
Certbotは、無料のSSL証明書を提供するLet’s Encryptと連携しています。
sudo apt install certbot python3-certbot-nginx
必要なプラグインも含めてインストールできたら、以下で設定に進みましょう。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
エラーなくできれば完成です。
HTTPSアクセスの確認方法
証明書の取得と設定後、ブラウザでhttps://サーバーのIPアドレス
にアクセスして、正しくHTTPSが動作しているかを確認します。
サーバ証明書の自動更新テスト
Let’s Encryptは90日で更新します。
以下のコマンドを定期的にうつか、cronジョブで設定しましょう。
sudo certbot renew --dry-run
まとめ:UbuntuとNginxの活用方法
当記事では、Ubuntu環境でのNginxの設定と運用について学習してきました。
Webサーバーの運用は奥が深いです。
今後も学び続け、試行錯誤しながらスキルを高めていってください。