Welcome to Mashykom WebSite



Web Server 入門


 通常、インターネットの利用者は閲覧したい web site のURL(Uniform Resource Locator)を指定して、当該 site にアクセスします。URLには、http または https から始まる半角英数のIP アドレス名とファイル名(index.htmlなど)の指定が含まれています。URLによるリクエストを受信したサーバコンピュータは、保存しているファイルの中から指定されたファイルを取り出し、クライアントコンピュータに配信します。このとき、クライアントコンピュータとサーバコンピュータの間では、HTTP 及び HTTPSというプロトコルが使われています。

 ただサーバコンピュータというハードウエアを設置用意しただけでは、インターネット上のこうした閲覧サービスを提供できません。サーバコンピュータ上に、web サーバーと呼ばれるWebサービスを提供するソフトウェアをインストールする必要があります。Webサーバは、HTMLファイルや画像などのファイルをクライアントコンピュータに配信する作業を実行します。このとき、クライアントコンピュータでは Google Crome、Sahari、Mozilla Firefox、Internet Explorerのような Web ブラウザが動作しています。サーバコンピュータから配信されるHTMLファイルを解析し、そのほかのファイルと組み合わせて画面上にWebページを表示するための仕事をします。

 現在、主に使用されているwebサーバーは大きく分けて、Apache サーバーと Nginx と呼ばれる2種類のソフトに分けられます。

Apache Server(アパッチサーバー)は、Apache License2.0の条件でリリースされるフリーでオープンソースのクロスプラットフォームのWebサーバソフトウェアです。Apache はApacheソフトウェア財団の支援のもと、開発者のオープンコミュニティによって開発・保守されています。

 Apache HTTP サーバーのインスタンスの大部分は、初期には、Linuxディストリビューション上で動作するように設計されていましたが、現在のバージョンは Microsoft Windows や様々な Unixライクなシステム上でも動作します。WindowsやLinux系OS、各種Unix系OSなど、様々なOSで動作させることができるようになったので、Apacheは非常に広範囲な分野で使用されていました。

 Nginx(エンジンエックス)とはNGINX社が提供しているフリーかつオープンなWebサーバ用のソフトウェアです。Nginxの強みは以下のようなものです。

 こうした理由から、「メモリ消費が少ない」「高速」「並行処理」などといった従来のApacheでは十分でなかった部分を強みとしています。Nginxは最近急速に人気が出てシェアを拡大しています。これからのクラウド時代にも将来性の高いWebサービスソフトです。開発時から、Nginxは、その強みから「大量のアクセスを高速に処理すること」に向いており、多くの人がオンラインショッピングやSNSなどWeb上のサービスを利用する現代によく合ったものとなっています。

 2020年4月のNetcraftの推定では、Apacheは最もアクセスの多い100万のウェブサイトの29.12%のサーバーで利用され、Nginxは25.54%で利用されています。W3Techsによると、Apacheは上位1000万サイトの39.5%で利用され、Nginxは31.7%で利用されているというデータもあります。2020年8月のNetcraftのWEBサーバー調査結果では、Apacheのシェアは25.87%、Microsoftは9.60%、Nginxが36.45%でした。W3techsのデータソースはこちらです。

Last updated: 2022.6.30


Nginx のインストール


 prebuilt Ubuntu パッケージのインストールは https://docs.nginx.com/に説明があります。以下の Linux 系OSなどにインストールできます。

 以下の手順でインストールします。Raspberry Pi 4 (Bullseye 64bit)での例を紹介します。


$ sudo apt-get update

$ sudo apt-get install nginx

$ sudo nginx -v
nginx version: nginx/1.18.0

$ sudo nginx 
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

 上記の通り、エラーが出ました。lsof コマンドで80番ポートを Listen しているプロセスを調べる。


$ sudo lsof -i:80

----
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3295 root 6u IPv4 21138 0t0 TCP *:http (LISTEN)
nginx 3295 root 7u IPv6 21139 0t0 TCP *:http (LISTEN)
nginx 3297 www-data 6u IPv4 21138 0t0 TCP *:http (LISTEN)
nginx 3297 www-data 7u IPv6 21139 0t0 TCP *:http (LISTEN)
nginx 3298 www-data 6u IPv4 21138 0t0 TCP *:http (LISTEN)
nginx 3298 www-data 7u IPv6 21139 0t0 TCP *:http (LISTEN)
nginx 3299 www-data 6u IPv4 21138 0t0 TCP *:http (LISTEN)
nginx 3299 www-data 7u IPv6 21139 0t0 TCP *:http (LISTEN)
nginx 3300 www-data 6u IPv4 21138 0t0 TCP *:http (LISTEN)
nginx 3300 www-data 7u IPv6 21139 0t0 TCP *:http (LISTEN)

$ sudo service nginx status

----
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
Active: active (running) since Fri 2022-07-08 09:50:21 JST; 4min 16s ago
Docs: man:nginx(8)
Process: 3209 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_proce>
Process: 3210 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (c>
Main PID: 3295 (nginx)
Tasks: 5 (limit: 4164)
CPU: 83ms
CGroup: /system.slice/nginx.service
├─3295 nginx: master process /usr/sbin/nginx -g daemon on; master_>
├─3297 nginx: worker process
├─3298 nginx: worker process
├─3299 nginx: worker process
└─3300 nginx: worker process

7月 08 09:50:21 raspberrypi systemd[1]: Starting A high performance web server>
7月 08 09:50:21 raspberrypi systemd[1]: Started A high performance web server>
...

 ポート80はnginx自身によって使用されています。プロセスをkillします。その後、nginx を起動します。


$ sudo kill 3295 3297 3298 3299 3300

$ sudo service nginx start

 デフォルトのポート番号が 80 になっています。http://[raspberry pi's IP Address]:80 にアクセスすると、以下の表示が出ます。

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

 こうして、「Welcome to nginx!」が表示されれば成功です。

 基本的には、以上の操作でNginxは動きます。あとはセキュリティに関連する設定など、必要に応じて実施します。具体的にはファイアウォールや、ドメインを利用している場合はネームサーバーの設定などもあります。

 /var/www/htmlの中を見てみると以下のファイルがすでに配置されていた。


$ ls /var/www/html/

----
index.nginx-debian.html

index.nginx-debian.html がブラウザで表示されたページです。/var/www/htmlの配下に新しいディレクトリを作って、自作のindex.htmlを配置します。例えば、以下のようにします。


$ cd /var/www/html/
$ sudo mkdir raspi
$ sudo nano raspi/index.html

 http://[raspberry pi's IP Address]:80/raspi にアクセスすると、作成したweb ページの表示が出ます。

このページの先頭に戻る

Web 作成入門のページに行く

トップ・ページに行く