お問い合わせはこちら

サバ管への道!VPS道場~第3回 LAMP 環境の構築 ‐ LAMPって何? ‐ ~

公開
更新
LAMP 環境の構築方法の紹介

連載第2回ではサーバーを作成し、自分のPCから接続・コマンド操作できるようになりました。(第1回から読みたい方は こちら から)
サービスを提供する 箱=ハードウェア は用意できたので、この中に自分専用のWEB公開環境を構築していきます。皆さんが普段訪問しているWEBページや企業公式のホームページなどにおいても、稼働している仕組みに大きな違いはありません。もちろん利用者の多いサイトの場合は専門の技術者によって複雑な構成がとられる場合もありますが、基礎となる技術・知識は共通部分も多く、この部分をしっかり理解しておくことで応用が可能です。学習始めの段階では少し難易度が高そうと思われるかもしれませんが基礎部分をしっかり理解しておくことで、今まで何となく利用していたインターネットの世界が明確になってくるはずです。
できるだけ初めての方でもわかりやすいように進めていきますが、ここがわからないという点があれば カゴヤ・ジャパン 公式Twitter にご質問いただければ、随時内容の改善を進めてまいります。皆様のメッセージをお待ちしております。(公式アカウント:@kagoya_inc
ハッシュタグ #VPS道場 をつけてぜひメッセージをお寄せください。

今回の記事は下記の手順で進めていきます。

STEP 1 http サーバー とは?「LAMP」って何?

STEP 2 Apache をインストールする

STEP 3 ファイアーウォールを設定する

※ Apache のインストール・起動の手順を終えると、インターネットからのアクセスが可能になります。特に必要が無ければ、サーバーを操作していないときは公開を停止するか、サーバーを停止しておきましょう。

http サーバー とは?「LAMP」って何?

http サーバー とは、サーバーの役割の一種

連載第1回の記事を思い出してみてください。サーバーとは「サービスを提供する役割を担う」コンピュータであると説明しましたが、ここでいう「サービス」とは何でしょうか?普段スマートフォンを利用されている方は各アプリを思い浮かべてみてください。WEBページを閲覧するアプリはもちろん、地図情報を表示するアプリや家計簿を記録するアプリ、SNSやメッセージアプリなどを「サービス」と考えるとわかりやすいかもしれません。私たちはアプリの開発・提供元から、スマートフォンというクライアントを通してサービスを利用しています。これらのサービスを提供するサーバーの中で、クライアントに http 接続を提供するものを「http サーバー」と呼びます。この記事では自分のサーバーに http サーバーの役割を持たせるために必要な手順を紹介していきます。

http サーバー

多くの方は http という言葉を聞いたことがあると思います。このページを表示しているブラウザ上部のアドレス欄にも http(s)://~~ という表示がありませんか?ブラウザによって省略されている場合は、アドレスバーの範囲をダブルクリックしてみてください。省略されていない http(s)://~~ という形になっていることが確認できます。http とは「Hyper Text Transfer Protocol」の略称で、PCやスマートフォンなどのクライアントと、サーバーの間で情報のやり取りを行うための取り決めを指します。先に取り決めをしておけば、クライアントもサーバーもやり取りの度に「どうやって通信しよう?」と考える手間が省けます。人間同士のコミュニケーションにおいても世界各国で使用されている言語が違うため、共通言語を取り決めしておいた方が円滑に進むと想像できるのではないでしょうか。クライアントは http(s)://~~ の形で、サーバーに「http 通信に基づいて~~という内容を渡してください」とリクエストします。※ http(s) の (s) の部分は http 通信のセキュリティを高めた通信の取り決めです。こちらに関しては今後の連載で詳しくご紹介する予定です。

Apache とは?

Apache とはここまで説明してきた、自分のサーバーに http サーバー の役割を持たせるためのソフトウェアです。正式名は「Apache HTTP Server」で、オープンソースとして提供されているため無料で利用することが可能です。世の中には多くの http サーバー 用ソフトウェアがありますが、この Apache は最も人気なソフトウェアの一つであり、永くにわたり利用され続けています。「オープンソース」や「昔からある」と聞くと、セキュリティ的な不安を感じる方もいるかもしれませんが、オープンソースとして第一線で利用されているからこそ改良が繰り返され洗練されており、安定したソフトウェアとしておすすめできます。

「LAMP」について

また、Apache を用いてサービスを提供する環境のスタンダードとして、「LAMP 環境」というものがあります。 LAMP とは、L:Linux, A:Apache, M:MySQL(MariaDB), P:PHP を意味しており、このうち Linux の部分については今回 Ubuntu を利用しています。これらはオープンソースとして提供されるため、前述の Apache が持つメリットを備えています。また、「LAMP環境」という言葉が界隈では一般的になるほど利用されており、その機能性や安定性を示していると言えるでしょう。現段階では Linux(Ubuntu) と Apache の部分にしか言及しておりませんが、その他についても連載の中で実装していきます。「WEBサービス提供の際の標準的な構成」として覚えておいてください。

※このようないくつかのソフトウェアをまとめて環境を表現する際に、スタックと呼ぶことがあります。スタックは LAMP に限らず、MEAN などトレンドを取り入れたものもあるので、是非調べてみてください。

では Apache のインストールを進めていきましょう。

Apache をインストールする

Apache インストール手順

前回同様、まず自分のPCからサーバーにssh接続を行います。(接続手段は Tera Term やブラウザベースのものなどお好きなものをお使いください)

操作ユーザーは、前回設定した sudo 権限を持ったユーザーで行っています。 root権限で操作したい場合は各コマンドの sudo 部分は省略可能です。

第2回でサーバーを作成した時からある程度時間が経っている場合は、更新コマンドを実行しておきます。

~$ sudo apt update
~$ sudo apt upgrade

Apache のインストールコマンドです。

~$ sudo apt install apache2

コマンド実行後、インストールが実行されるのでしばらく待ちます。

After this operation, 6,985 kB of additional disk space will be used.
Do you want to continue? [Y/n]  y

インストール実行中に、上記のように 続けてインストールを実行してもよいか と聞かれるので、Yes を意味する「y」を入力してEnterを押してください。

Processing triggers for libc-bin (2.27-3ubuntu1.4) ...
Processing triggers for systemd (237-3ubuntu10.44) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for ufw (0.36-0ubuntu0.18.04.1) ...
Processing triggers for ureadahead (0.100.0-21) ...
~$ 

処理が終わり、コマンド受け付け状態に戻ればインストールは完了です。必要な関連パッケージなども自動でインストールがされています。続いて、Apache の稼働状況を確認するため以下のコマンドを実行します。

~$ sudo systemctl status apache2

下記のような表示の「Active:」部分に注目してください。active となっていればすでに稼働しています。

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Thu 2021-03-04 15:28:24 JST; 1min 37s ago

ブラウザからサーバーへアクセス

インストール自体はコマンド1行の入力のみなので、あっという間に終わってしまいます。現時点では何が起こっているのかピンと来ないかもしれません。一旦目で見える形で確認するため、ブラウザからサーバーにアクセスしてみましょう。お持ちのPC、スマートフォン上でブラウザを立ち上げ、アドレス欄に自分のサーバーIPアドレスを入力します。

以下のような Apache のデフォルト画面が表示されればOKです。

ファイアーウォールを設定しよう

コントロールパネルからファイアーウォールを設定する

Apache では公開ポートのデフォルトの値が 80番 になっています。以下の手順では接続ポートを変更し、指定したポート以外のアクセスは受け付けないように設定しています。

この連載記事の手順通りに進めていただいている場合、ファイアーウォールは未設定になっているかと思います。ファイアーウォールは、あらかじめ定めたルールに従い、許可したIPアドレスからのアクセスのみを受け付けます。またポート指定をすることで、公開ポート以外からのアクセスを拒否することが可能です。サーバーに複数の機能を持たせる場合、Apache のように公開したいサービスと、機密情報などが保存されるデータベースなどの公開したくないサービスが混在する場合もあります。これらの公開・非公開の設定においてファイアーウォールは有用なセキュリティ対策です。

ファイアーウォールの設定は、直接コマンドで操作することも可能ですが、カゴヤのVPS ではコントロールパネルから設定することが可能です。今回はコントロールパネルを利用して設定しますが、ご興味があればコマンドで設定する場合の手順も調べてみてください。

  1. VPSコントロールパネルにログインします。
    ログイン後、上部のメニューから「セキュリティ」タブにマウスを移動させ、表示されるプルダウンの「セキュリティグループ」をクリックします。

  2. セキュリティグループ一覧のページで 「セキュリティグループ追加」をクリックします。
    ※過去にセキュリティグループを設定していなければ、一覧は空白の状態です。

  3. 今回は下記の内容で設定しました。
    詳しい設定のマニュアルはサポートサイトをご確認ください。

    セキュリティグループ名 apache
    アクセス許可の内容 すべてのIP「*」からの
    22番ポート へのアクセスを許可
    22番ポートはssh接続の際に使用するポートです。引き続き自分のPCからのssh接続を許可するため、22番ポートへのアクセスを許可しています。
    すべてのIP「*」からの
    8080番ポート へのアクセスを許可
    Apache で設定されているデフォルトのポートは前述のとおり80番ポートです。Apache の設定を書き換える練習をするため、今回は変更を加え8080番ポートを設定します。
  4. セキュリティグループの追加が完了したら、サーバーへ設定を適応させます。コントロールパネルの「インスタンス一覧」画面に戻り、サーバーを選択します。

  5. サーバーの情報が表示されますので、セキュリティグループの項目の歯車アイコンをクリックします。

  6. プルダウンから先ほど追加したセキュリティグループを選択し「設定」をクリックします。これでコントロールパネルの操作は完了です。

続いてサーバー側の操作を行います。

一旦 Apache を停止させるため、以下のコマンドを入力します。

~$ sudo systemctl stop apache2

停止したか確認するために status コマンドを入力し、Active:部分が inactive となっていることを確認します。

~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: inactive (dead) since Thu 2021-03-04 15:34:29 JST; 21s ago

Apache のポート設定が記載されたファイルを vimエディタで編集します。下記コマンドを入力し、該当部分を確認、変更しましょう。

~$ sudo vi /etc/apache2/ports.conf

Listen 80 を Listen 8080 に変更します。

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 8080
  # デフォルトは Listen 80 です


        Listen 443



        Listen 443


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

上書き保存完了後、変更内容を反映させるため Apache を再起動します。下記コマンドを入力します。

~$ sudo systemctl start apache2

ブラウザでアクセスして設定が反映されたか確認してみましょう。まずはデフォルトで設定されていた80番ポートでアクセスします。
※IPアドレスの末尾に :80 などを入力することで接続するポートを指定できます。特に何も指定しない場合は80番での接続を試みます。

80番での接続は許可していないので、接続はタイムアウトしてしまうはずです(Apache のデフォルト画面が表示されてしまう場合は、設定がうまく反映されてない可能性がありますので手順を見直しましょう)。

続いて8080番ポートでアクセスします。8080番でアクセスすることを明示するため、末尾に :8080 と入力します。
例.) IPアドレスが 123.456.789.012 の場合… 123.456.789.012:8080 と入力。

ファイアウォール設定前と同じデフォルト画面が表示されればOKです。

今回はここまで

お疲れさまでした。
ここまでの手順でWEBサーバーの構築が完了しました。現時点でも該当のフォルダにhtmlファイルを保存することで静的なサイトを表示させることは可能です。次回はデータベースのインストールに進みます。データベースの操作・活用はある程度慣れが必要な場合が多く専門的な知識を要求されますが、操作ツールを導入することである程度簡易化することが可能です。

昨今では様々なホームページ作成・公開のサービスが提供されており、サーバーを意識することなく誰でもコンテンツ配信できるようになってきましたが、自分好みのカスタマイズや創作的なアイディアを反映させたい場合には、サーバー部分を理解しておくとあらゆることを実現できるようになります。作業の時間が取れない場合でも、流し読みで概要などを一読いただけると幸いです。

【次回】 第4回 LAMP 環境の構築 ‐ MariaDBとPHP ‐

第4回となる次回は、より深い知識が要求されるデータベースの導入へと進んでいきます。データベースは特に専門性が高く、スキルとしても評価されやすい分野です。掘り下げていくと連載の目的と多少方向が変わるため、必要な知識の説明にとどめる予定ですが、連載記事をとっかかりとして興味を持たれた方は是非掘り下げてみてください。ではまた次回お会いしましょう。


感想など皆様のメッセージもお待ちしております。(公式アカウント:@kagoya_inc
ハッシュタグ #VPS道場 をつけてぜひメッセージをお寄せください。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。