UbuntuとNginxでのWebサーバー構築方法【初心者向け】

Nginx(エンジンエックス)は、Apache(アパッチ)に次ぐ人気のWebサーバーです。

Nginx(エンジンエックス)、Apache(アパッチ)それぞれの内容については以下の記事で詳しく解説しています。

Nginxとは。Webサーバーソフトとしての強みや将来性を解説

Apacheとは。Webサーバーソフトとしての特徴や将来性を解説

Nginxは高いパフォーマンスとスケーラビリティを提供する軽量で高速なWebサーバーであり、Apacheは柔軟性が高く、多くのモジュールを使用して機能を拡張できるWebサーバーです。

どちらを使用するかは、使用目的や要件によって異なります。

本記事では、Ubuntu環境にNginxを構築し、SSLの設定を行うまでの手順を紹介します。

Apacheでの構築方法は、以下の記事でわかりやすく解説しています。
UbuntuとApacheでのWebサーバー構築方法【初心者向け】

UbuntuVPSで利用するなら
ミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す

Nginxのインストール

前提条件

今回は、仮想マシン上にUbuntuおよびNginxを構築します。

仮想マシンのスペックは以下のとおりです。

    • CPU:2vCPU
    • Memory:4GB
    • Disk:50GB

Ubuntu、Nginxは以下のバージョンを利用しています。

    • Ubuntuのバージョン:Ubuntu 22.04.2 LTS
    • Nginxのバージョン:Nginx 1.18.0(Ubuntu)

コマンドの標記については、実際に入力するコマンドを太字、コマンドを実行後に入力を求められる箇所については赤字、補足の内容を青字で記載しています。

Unix系OS専門のホスティングサービス「ミライサーバー」

Nginxのインストール手順

今回はUbuntuにデフォルトで利用できるソフトウェアリポジトリを使用してNginxをインストールします。

Nginxをインストールするには、管理者権限が必要です。

rootアカウントを使用するか、通常ユーザー(以下の例では、testuser)をsudoグループに追加しておきましょう。

# usermod -aG sudo testuser

次に、Nginxをインストールします。

以下の例では、先ほどsudoグループに追加した通常ユーザーを使って、sudoコマンドからNginxパッケージをインストールしています。

$ sudo apt update

$ sudo apt install nginx

インストールが完了すると、すでに起動した状態になるため、起動の確認とNginxのバージョンを確認します。

$ sudo systemctl status nginx

● nginx.service – A high performance web server and a reverse proxy server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: active (running) since Sat 2023-05-06 11:18:47 JST; 1min 42s ago

Docs: man:nginx(8)

Process: 29866 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Process: 29867 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Main PID: 29957 (nginx)

Tasks: 3 (limit: 4617)

Memory: 4.0M

CPU: 16ms

CGroup: /system.slice/nginx.service

├─29957 “nginx: master process /usr/sbin/nginx -g daemon on; master_process on;”

├─29960 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “”

└─29961 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “”

5月 06 11:18:47 Ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server…

5月 06 11:18:47 Ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

※Nginxのバージョン確認

$ nginx -v

nginx version: nginx/1.18.0 (Ubuntu)

 

実際にブラウザを起動し、WebサーバーにアクセスするとNginxのデフォルトページが表示されます。

※ブラウザを起動し、以下のURLにアクセス

http://[WebサーバーのIPアドレスまたはホスト名]

または、Webサーバー上でブラウザを起動し、以下のURLを実行

http://localhost

 Nginxのプロセス管理

ここで、インストールしたNginxのプロセス管理の方法について、紹介します。

インストールした直後はすでにWebサーバーが起動した状態ですが、停止や起動、自動起動の設定を行いたい場合は、以下のコマンドを実行します。

操作コマンド
Nginxの停止$ sudo systemctl stop nginx
Nginxの起動$ sudo systemctl start nginx
Nginxの再起動$ sudo systemctl restart nginx
設定のリロード$ sudo systemctl reload nginx
自動起動の有効化$ sudo systemctl enable nginx
自動起動の無効化 sudo systemctl disable nginx

Unix系OS専門のホスティングサービス「ミライサーバー」

SSL証明書の設定

Nginx Webサーバーをインストールし、デフォルトページが表示されているので、Webサーバーの構築は完了です。

次に、SSL証明書を作成・配置して、セキュリティの高い「https」通信による接続ができるように設定を追加していきます。

SSLサーバー証明書については、以下の記事で詳しく解説しています。

SSLサーバー証明書とは?暗号化通信に必須。具体的に解説します。

SSL証明書の作成

SSL証明書は、本来であれば認証局(CA)に認証してもらうことで発行されるを導入しますが、今回は仮となる自己証明書を作成します。

自己証明書は、第三者によって認証がされていないため、信用度が低いです。

外部に公開する場合は、自己証明書を使用しないようにしましょう。

自己証明書の作成は、rootユーザーで行います。

手順1. rootユーザーへ変更

$ sudo su

※←プロンプトがシャープに変わる

手順2.  秘密鍵の作成

# mkdir /etc/nginx/certificate

# cd /etc/nginx/certificate

# openssl genrsa -aes128 -out [秘密鍵ファイル名] 2048

(例:openssl genrsa -aes128 -out testssl.key 2048

Enter PEM pass phrase: ※秘密鍵のパスフレーズを入力

Verifying – Enter PEM pass phrase: ※秘密鍵のパスフレーズをもう1度入力

パスフレーズは、秘密鍵のパスワードのようなものです。

Nginxの設定が読み込まれるたびにパスフレーズの入力が求められます。

これが煩わしく感じる場合は、以下のコマンドでパスフレーズを削除することもできます。

# openssl rsa -in [秘密鍵ファイル名] -out [秘密鍵ファイル名]

(例:openssl rsa -in testssl.key -out testssl.key)

Enter pass phrase for testssl.key: ※設定した秘密鍵のパスフレーズを入力

writing RSA key

手順3. CSRファイルを作成

これは、証明書を発行するために必要な情報を入力していくものです。

以下は設定例です。

# openssl req -new -days 365 -key [秘密鍵ファイル名] -out [CSRファイル名]

(例: openssl req -new -days 365 -key testssl.key -out testssl.csr)

Ignoring -days without -x509; not generating a certificate

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.’, the field will be left blank.

—–

Country Name (2 letter code) [AU]:JP ※国のレターコード(日本だとJP)

State or Province Name (full name) [Some-State]: ※サーバーの所在(市区町村)

Locality Name (eg, city) []: ※サーバーの所在(都道府県)

Organization Name (eg, company) [Internet Widgits Pty Ltd]: ※組織名

Organizational Unit Name (eg, section) []: ※部署名

Common Name (e.g. server FQDN or YOUR name) []: ※サーバー名またはFQDN

Email Address []: ※メールアドレス

 

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []: ※空白のまま

An optional company name []: ※空白のまま

手順4. 自己証明書の作成

CSRファイルをもとに、自己証明書を作成します。

以下は設定例です。

# openssl x509 -in [CSRファイル名] -out [自己証明書ファイル名] -req -signkey [秘密鍵ファイル名] -days 365

(例: openssl x509 -in testssl.csr -out testssl.crt -req -signkey testssl.key -days 365)

Certificate request self-signature ok

subject=C = JP, ST = Some-State, O = Internet Widgits Pty Ltd

※実際は、CSRファイル作成時に設定した内容が表示されます

 

#

# ls -lrt

total 12

-rw——- 1 root root     1704  5月  8 07:21 testssl.key ※秘密鍵ファイル

-rw-r–r– 1 root root      956  5月  8 07:26 testssl.csr ※CSRファイル

-rw-r–r– 1 root root     1123  5月  8 07:32 testssl.crt ※自己証明書ファイル

Unix系OS専門のホスティングサービス「ミライサーバー」

手順5. Nginxの設定変更

Nginxの設定ファイルは、デフォルトとして「default.conf」がありますが、今回はSSL用の設定ファイル(ssl.conf)を新たに作成し、そこに設定するようにします。

以下は例として、最低限HTTPSでアクセスできる設定を記載しています。

# vi /etc/nginx/conf.d/ssl.conf

※以下の行を記載

 

server {

#SSLの設定

#HTTPSポートを指定(デフォルトは443)

listen 443 ssl;

#サーバー名

server_name test-nginx;

#Webサーバーのrootディレクトリ

location / {

#htmlファイルなどを置くパスを定義

root /usr/share/nginx/html;

#デフォルトで表示するファイル

index  index.html index.htm;

}

#50x系エラー時のファイル処理

error_page   500 502 503 504  /50x.html;

#50x系エラー時に表示するファイル定義

location = /50x.html {

#50x系エラー時に表示するファイルパス

root /usr/share/nginx/html;

}

 

#作成したSSL証明書のパス

ssl_certificate /etc/nginx/certificate/testssl.crt;

#作成した秘密鍵のパス

ssl_certificate_key /etc/nginx/certificate/testssl.key;

}

手順6. Nginxの再起動

設定したら、Nginxを再起動します。

# systemctl restart nginx

# systemctl status nginx

 

● nginx.service – A high performance web server and a reverse proxy server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

Active: active (running) since Mon 2023-05-08 07:54:10 JST; 25s ago

Docs: man:nginx(8)

Process: 8406 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Process: 8408 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)

Main PID: 8409 (nginx)

Tasks: 3 (limit: 4614)

Memory: 4.8M

CPU: 23ms

CGroup: /system.slice/nginx.service

├─8409 “nginx: master process /usr/sbin/nginx -g daemon on; master_process on;”

├─8410 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “”

└─8411 “nginx: worker process” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “” “”

5月 08 07:54:10 Ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server…

5月 08 07:54:10 Ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.

実際にブラウザを起動し、Webサーバーにhttpsでアクセスします。

※ブラウザを起動し、以下のURLにアクセス

https://[WebサーバーのIPアドレスまたはホスト名]

または、Webサーバー上でブラウザを起動し、以下のURLを実行

https://localhost

今回設定した証明書は自己証明書であるため、以下のような警告が表示されます。

Firefoxで接続した場合では、「詳細へ進む」→「危険性を承知で接続」を選択すれば、先ほどと同様Nginxのデフォルトページが表示されます。

まとめ

今回はUbuntuおよびNginxを使用したWebサーバーの構築方法について説明しました。

NginxはApache HTTP Serverに次ぐ人気の高いWebサーバーソフトウェアです。

今回のように少ない手順で簡単に構築することができるので、ぜひ参考にしてみてください。

Unix系OS専門のホスティングサービス「ミライサーバー」

UbuntuをVPSで利用するならミライサーバー

ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。

ミライサーバーのVPSでは、高速処理が可能なSSD全プランに搭載しています。

OSは、UbuntuDebianAlmaLinuxなどの豊富なラインアップから選択することができます。

2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。

▼ミライサーバーについてはこちら▼Unix系OS専門のホスティングサービス「ミライサーバー」

VPSなら「ミライサーバー」

・全プランSSD搭載
・2週間無料

▶ ミライサーバーを無料で試す

関連記事

特集記事

TOP