さくらのVPSを使ってシステム開発に必要な知識を学ぶ 〜第8回〜

はじめに

本連載は、システム開発に必要な知識を得るために、一通りの流れを学ぶことを目指しています。

前回から、実際の業務を想定したメモアプリを例に、開発の流れを解説しています。今回からはサーバーの構築について解説します。

Web3層アーキテクチャ構造

多くのプロダクトで利用されているサーバー構成は、下記の通りです。

種類役割代表的なソフトウェア
Web(ウェブ)サーバーWebブラウザなどを通じてユーザの指示を受け付ける窓口です。Apache, nginx, IIS
AP(アプリケーション)サーバーWebサーバーからのリクエストを実行するプログラムの置き場所です。Apache Tomcat, IIS
DB(データベース)サーバーWebサイトに必要なデータの保存や出し入れをします。Oracle, MySQL, PostgreSQL

インフラエンジニア観点で見るともっともっと複雑ですが、基本構成を理解する上では上記の通りになります。

一般的に上記3つのサーバーでの構成をWeb3層アーキテクチャ構造といいます。

Web3層アーキテクチャは、大規模WebシステムやWebアプリケーションを支える技術の1つです。メリットは下記の通りです。

  • 導入やメンテナンスが容易
    • システムのメンテナンスが、Webサーバー、APサーバー、DBサーバーに対して行うだけになります。
  • 情報処理の負荷を軽減
    • 処理負荷が、Webサーバー、APサーバー、DBサーバーそれぞれに分散されます。

今回の記事では、Web3層アーキテクチャに登場するサーバーの中からWebサーバーを構築します。

さくらのVPSにSSHで接続

Webサーバーの構築を始める前に、構築対象のサーバーにSSHで接続します。

接続に必要な情報を入手

接続に必要な情報は、サーバーのホスト名、ユーザー名、パスワードです。

サーバーのホスト名は、さくらのVPSのコントロールパネルから入手します。コントロールパネルにアクセスし、サーバー情報の画面にある「ホスト名」に表示されているものを使用します。(ちなみに、ホスト名の右にあるコピーボタンを押すとコピーできます)

以降の説明では、サーバーのホスト名を「host-name.vs.sakura.ne.jp」とします。

ユーザー名とパスワードは「さくらのVPSを使ってシステム開発に必要な知識を学ぶ 〜第7回〜」で設定したものを使います。

PC(macOS/Windows/Linux)からのSSH接続確認

ターミナルを起動し、下記コマンドを実行してログインできたら成功です。

$ ssh ubuntu@host-name.vs.sakura.ne.jp
ubuntu@host-name.vs.sakura.ne.jp's password:

実行例を以下に示します。(下図はmacOSでの例)

Webサーバーの構築

Webサーバーの構築に使用するソフトウェアは、主にApache, nginxになります。
※ IIS(Internet Information Services)は、基本的にWindows用のソフトウェアです。現在はLinuxでも構築可能になっています。

Apacheについては、ネコでもわかる!さくらのVPS講座 ~第三回「Apacheをインストールしよう」で解説されています。そこで今回は、nginxでの構築を解説します。

nginxのインストール

SSHを使用してサーバーにログインし、nginxをインストールします。以下はUbuntuにおけるコマンド例です。

$ sudo apt-get update -y
$ sudo apt-get install -y nginx

nginxの設定

nginxが自動起動されるように設定されているか確認します。

$ sudo systemctl is-enabled nginx
enabled

次にnginxが起動しているかを確認します。

$ sudo systemctl status nginx

「Active: active (running)」と表示されていれば、nginxは起動しています。

ファイアウォールの設定

ファイアウォールを設定します。Webサーバーなので、80番ポート(HTTP)と443番ポート(HTTPS)をファイアウォールで許可します。

ファイアウォールの起動

まずは現状のファイアウォールの設定を確認します。

$ sudo ufw status

「Status: active」と表示されていれば起動しています。ファイアウォールが起動していない場合(「Status: inactive」と表示された場合)は、次のコマンドで起動します。

$ sudo ufw enable

ファイアウォールの設定内容

デフォルトでは次のようにファイアウォールで何も許可されていないと思います。

$ sudo ufw status
Status: active

ufwではアプリケーションプロファイルを用いて設定を行います。nginxをインストールしたときに、次の3つのプロファイルが追加されています。

  • Nginx Full
  • Nginx HTTP
  • Nginx HTTPS

それぞれのプロファイルを適用したときに許可されるポートは以下の通りです。

  • Nginx Full: TCPの80番と443番ポート
  • Nginx HTTP: TCPの80番ポート
  • Nginx HTTPS: TCPの443番ポート(80番は許可されない)

今回は「Nginx Full」で設定します。

また、SSHのポートも許可する必要があります。これはOpenSSHというプロファイルを有効にすることで設定できます。許可されるポートは以下の通りです。

  • OpenSSH: TCPの22番ポート

設定の実施

下記のコマンドを実行して、ポートの許可設定を行います。

$ sudo ufw allow 'Nginx Full'
$ sudo ufw allow OpenSSH

許可後の設定を確認します。

$ sudo ufw status
Status: active

To Action From

---

OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)

変更した内容を有効にするためにファイアウォールをリロードします。

$ sudo ufw reload
Firewall reloaded

Webサイトの表示確認(初回)

さくらのVPSのコントロールパネルを開きます。サーバー一覧から、現在作業中のサーバをクリックすると、サーバーの基本情報が表示されます(下図)。

表示されたら、「ホスト名」もしくは「IPv4」の右横にあるコピーボタンを押して、ホスト名もしくはIPアドレスをコピーします。

次に、ブラウザのURLバーに下記のように入力してenterキーを押下します。

  • http://ホスト名
  • http://IPアドレス

しばらく経つと下図のように表示されるはずです。

これは、さくらのVPSでパケットフィルターの設定が必要だからです。

さくらのVPSのパケットフィルター設定

さくらのVPSのコントロールパネルを開き、「パケットフィルター設定」のタブをクリックします。

「パケットフィルターを設定」ボタンをクリックします。

「パケットフィルターを追加する」ボタンをクリックします。

フィルターの種類は「Web」を選択し、「追加」ボタンをクリックします。

「設定を保存する」ボタンをクリックします。

これで、さくらのVPSのパケットフィルターの設定が完了しました。

Webサイトの表示確認(パケットフィルター設定後)

再度、Webサイトにアクセスします。nginxのWelcomeページが表示されたら設定完了です。

まとめ

今回はさくらのVPSにnginxを用いてWebサーバーを構築する手順を解説しました。次回もサーバーを構築していきます。