Blow Up by Black Swan

docker+nginx(ubuntu)でWEBサーバを構築してみる

前回に続き、今回はnginxでWEBサーバを構築してみました。

ただ、残念ながらpythonのflaskではなぜか実行できておらず、今回は静的なHTMLファイルの表示までのまとめです。

1. nginxとは?特徴やapacheとの相違点など

nginxは、Apacheの問題点を解決するために開発されたWEBサーバです。このApacheの問題点とはC10K問題と言われるもので、同時に1万台からアクセスがあると処理しきれなくなるというものです。この1万台というのは比喩のようですが、nginxでは多量のアクセスを処理できるように軽量、高い処理性能と並列性、メモリ使用量の少なさという特徴を持つよう開発されました。なお、現在ではApacheでも昨日の改善等により、この問題は解決できているようです。

2. 全体の流れや構築環境

今回の構築環境は以下になります。

#前提環境
PC: Macbook Air
docker: 18.09ver

#構築していくもの
dockerイメージ: ubuntu(18.04bionic)
webサーバ: apache2(aptの標準リポジトリから入手)

また、今回の構築の流れは以下のようになります。

# 静的なHTMLファイルの表示
1. dockerコンテナ構築
   イメージ: ubuntu

2. nginxのインストール
   パッケージ: nginx

3. テスト用HTMLファイルの作成

4. サーバの起動

5. ブラウザからアクセス

3. ubuntuをOSとするときのnginxの設定フォルダの構成

ubuntuをOSとするとき、nginxの設定フォルダはCentOSなどの場合と異なる構成になります。

/etc/nginx
 |-- conf.d              # その他用の設定ファイル
 |-- fastcgi.conf        # fastcgi用の基本設定ファイル
 |-- fastcgi_params      # fastcgiの基本設定事項
 |-- koi-utf             # 文字コードの設定ファイル
 |-- koi-win             # 文字コードの設定ファイル
 |-- mime.types          # レスポンスにMIMEtypeをマップするための設定ファイル
 |-- modules-available   # モジュールの設定ファイル
 |-- modules-enabled     # モジュールを有効にするためのシンボリックリンク設定用フォルダ
 |-- nginx.conf          # 初期設定ファイル
 |-- proxy_params        # プロキシの基本設定事項
 |-- scgi_params         # scgiの基本設定事項
 |-- sites-available     # バーチャルホストの設定ファイル
 |-- sites-enabled       # ヴァーチャルホストを有効化するためのシンボリックリンク設定用フォルダ
 |-- snippets
 |-- uwsgi_params        # uwsgiの基本設定事項
 '-- win-utf             # 文字コードの設定ファイル

4. 静的ファイルを表示してみる

次は、実際に静的ファイルを表示して見ます。

<1. dockerコンテナ構築>

まずは、dockerコンテナを作ります。

$ docker run --name nginx-test -p 2000:80 -it ubuntu:latest

<2. nginxのインストール>

次にnginxとファイル編集のためのvimをインストールしていきます。

:/# apt update
:/# apt install -y nginx vim

<3. テスト用HTMLファイルの作成>

テスト用のtest.htmlファイルを作成します。

:/# vim /var/www/html/test.html

test.htmlの記載内容

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <h1>Test</h1>
    </body>
</html>

<4. サーバの起動>
サーバを起動します。

:/# nginx    # "service nginx start"でも起動する

サーバの停止やサーバの状態を確認するためのコマンドは下記になります。

:/# nginx -s stop    # "service nginx stop"も可能
:/# service nginx status    # サーバの状態を表示する

<5. ブラウザからアクセス>

最後にブラウザから「http://localhost:2000/test.html」にアクセスすることでtest.htmlが表示されます。

apache-html

5. まとめ

以上が今回の記事になります。flaskを利用したアプリサーバとの連携につまづいていますが、こちらもうまくいけばまたまとめたいと思います。