さくらの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サーバーを構築する手順を解説しました。次回もサーバーを構築していきます。