LAMP環境は古い?AWSでのLAMP環境構築方法と今後のトレンドを解説

    • このページをはてなブックマークに追加

    公開日:2020年10月17日 最終更新日:2020年10月17日

    古い参考書ではLAMP環境がサーバー構築のスタンダードとなっていますが、もっといい方法があるんじゃないかと考えているエンジニア達も多いのではないでしょうか。たしかにAWSやGCPなどのクラウドサービスの普及により、時代は変わりつつあります。今回は、本当にLAMP環境が古いのかどうか、AWSで構築してできることは何かについて解説していきます。

    1. LAMP環境とは

    1.1 LAMP環境は4つのオープンソースの頭文字

    LAMP環境とは「Linux」、「Apache」、「MySQL」、「PHP」の4つのオープンソースでWebシステムを開発する環境のことをいいます。
    以下で、それぞれのオープンソースの解説をします。


    1.1.1 Linux

    Linuxは、世界で最も普及している、オープンソースのオペレーティングシステム(OS)です。いわゆるUNIX系OSの一種で、プログラムが公開されており誰でも自由に入手や使用、改変、再配布することができます。オンプレミスだけでなくクラウド環境でも採用される他、家庭用ゲーム機やデジタル家電、スーパーコンピュータまで様々な用途で組み込みシステム開発にも採用されます。

    Linuxのメリットは「オープンソース」であり、無料かつ改変可能なことです。WindowsやUNIXは「現状のまま変更不可」で提供されるOSのため、開発中にエラーが発生し、原因がOS起因であることが疑われる場合に、その中身がブラックボックスであることがネックになります。

    一方、Linuxはオープンオースのためエラーログを確認後、必要に応じてコードを改変しエラーに対策することができます。OSとして透明性があり、改変自由なため管理しやすく安全性が高いです。また無料のため、コストパフォーマンスに優れる所もメリットです。

    ▲ページトップへ戻る


    1.1.2 Apache

    Apacheは、オープンソースのWebサーバーソフトウェア(HTTPサーバー)で、リクエストを処理し、それらを分析し、そして訪問者のブラウザで見えるように対応するドキュメントを渡す役割を担います。Webページをユーザーのブラウザに配信するために使用されます。1995年初版のソフトウェアで、レンタルサーバープランを使用する場合にはあらかじめプランに組み込まれていることも多いです。

    ▲ページトップへ戻る


    1.1.3 MySQL

    MySQLは、RDBMS(リレーショナルデータベース)と呼ばれる種類のデータベースソフト。たとえばWordPressでブログを作成する場合、投稿内容・ユーザー情報・プラグイン情報などは全てデータベースで管理されます。情報はデータベースの中で、それぞれ異なるテーブルに保管され、情報同士がキーで関連づけられます。

    そしてサイトが、特定の情報を呼び出す必要がある場合、SQLでMySQLデータサーバーにリクエストが送信される仕組みです。

    ▲ページトップへ戻る


    1.1.4 PHP

    PHPは、サーバーサイドの開発に採用される主流プログラミング言語の1つです。WordPressのコアソフトウェアの大部分がPHPで開発されている他、国内ではぐるなびにPHPが採用されていることでも有名です。また海外では、facebookが「Hack」を採用しています。HackはPHPをベースに、facebook社内で独自にカスタマイズを行なったプログラミング言語です。

    ▲ページトップへ戻る

    2. AWSにLAMP環境をインストールする方法

    続いて、AWSにLAMP環境をインストール方法を図を用いながら、わかりやすく説明していきます。ちなみにAWSとは、アマゾンウェブサービスの略でWebサービスの土台となるものです。自前でサーバーを用いなくても、AWSを使えば環境を構築することができます。

    ▲ページトップへ戻る

    2.1 AWSにEC2インスタンスを作成

    まずは以下の手順に従ってEC2インスタンスを作成しましょう。



    【1】仮想マシンを起動するをクリック



    【2】Amazon Linux AMIを選択



    【3】各種の設定はデフォルトのままでOK

    セキュリティグループの設定では以下の画像のように設定してください。
    設定できたら、確認と作成を押します。



    【4】インスタンスの作成では、必ず秘密鍵の設定が必要

    新しいキーペアの作成を選択し、キーペア名を適当に「hoge_key」と設定してください。 キーペアのダウンロードを行い、大切に保存してください。 完了したら、インスタンスの作成をクリックして終了です。

    ▲ページトップへ戻る

    2.2 EC2インスタンスにSSHログイン

    続いて、EC2インスタンスにSSHログインします。

    WindowsとMacの場合でやり方が異なります。
    Macの方はこちらの記事を参考にしてください。
    参考:【初心者向け】Amazon EC2にSSH接続する【Windows、Macintosh】

    Windowsの場合は、SSHのクライアントソフトをインストールする必要があります。


    【1】Tera Termの最新版をインストール

    こちらからインストールできます。
    設定はデフォルトのままで大丈夫です。



    【2】ホストの所にグローバルIPかDNS名を入力



    【3】「このホストをknown hostsリストに追加する」のチェックを外す



    【4】ユーザー名・パスフレーズ・秘密鍵を設定

    ユーザー名は「ec2-user」、パスフレーズは空欄に設定し、秘密鍵は先ほど作成したものを設定してください。



    【5】接続が出来たら完了

    ▲ページトップへ戻る

    2.3 Apacheをインストール


    【1】yum uadateを行う

    sudo su
    yum update

    と入力してyum uadateを行います。



    【2】Apacheをインストール

    yum install httpd

    と入力してApacheをインストールします。



    【3】自動起動の設定もオン

    service httpd start
    chkconfig httpd on

    と入力して自動起動の設定をオンにし、完了です。

    ▲ページトップへ戻る

    2.4 PHPをインストール


    【1】利用可能なphpのバージョンを表示

    yum list | grep php

    と入力すると、利用可能なphpのバージョンが表示されます。



    【2】今回は例としてPHP7をインストール

    yum install php70

    と入力して、PHP7をインストールしましょう。

    このような画面が出てきたら成功です。

    ▲ページトップへ戻る

    2.5 MySQLをインストール


    【1】利用可能なパッケージを確認

    yum list | grep mysql

    と入力して、利用可能なパッケージを確認します。



    【2】今回は例としてMySQL5.6をインストール

    yum install mysql56

    と入力して、MySQL5.6をインストールしましょう。

    このような画面が出てきたら成功です。

    ▲ページトップへ戻る

    2.6 動作確認用のindex.phpをドキュメントルートに設置


    【1】動作確認用のindex.phpファイルを作成

    cd /var/www/html
    touch index.php

    と入力して、動作確認用の「index.php」ファイルを作成します。



    【2】コマンド入力で編集画面に入る

    vim index.php

    と入力して、編集画面に入ります。



    【3】編集画面に以下の内容を追加

    <?php phpinfo();

    ▲ページトップへ戻る

    3. LAMP環境はもう古い?オワコン?

    AWSやGCPといったクラウド環境が主流になる中で、LAMP環境は今でもデファクトスタンダードと言えるのか、古い・オワコンたという声もチラホラ囁かれていますが実際はどうなのでしょうか?結論から言えば、大量の同時アクセスへの対応やビッグデータ解析など様々な要件に合わせて「ApacheではなくNginxを選ぶ」「MySQLとBigQueryを併用する」など様々なカスタマイズがされることは当たり前になっています。

    ただし基礎的な部分は変わってはいません。また企業でエンジニアとして働く場合、最初のうちは古いシステムの保守運用を任されることもあり、そうしたケースで採用されているのがLAMPということもあります。LAMPの知識があると取り組みやすいということもあり、学んでおいて損はないでしょう。

    ▲ページトップへ戻る

    3.1 【Linux】クラウド環境を支えるOS・開発環境のスタンダード

    例えばAWSではAmazon Linuxを提供しており、Cent OSとほぼ同じように使えてなおかつAmazonのサポートも受けられるディストリビューションとして注目を集めています。GCPでもCentOSを使用した仮想マシンのセットアップなども行えます。

    Amazon Linux、CentOSのいずれでも使いこなすにはLinuxの正しい知識が必要です。このように事実上、Linuxはクラウド技術の基盤となっている技術であり、クラウドに対応したLinuCも資格としてスタートしました。またパブリッククラウドが広がっているとはいえ既存データセンターや物理サーバを使っている企業も多く、なおかつ置き換え需要もあるため特定のクラウドに依存しないより汎用的な技術としてLinuxを学ぶのも強くおすすめします。

    ▲ページトップへ戻る

    3.2 【Apache】Nginxの導入例が増加傾向

    NginxはApacheとは異なる設計思想で生まれたWebサーバーソフトウェアです。ApacheはWebサーバーのスタンダードだが「一度の大量のアクセスがあった際に捌き切れない」という「クライアント1万台問題」とも呼ばれる弱点を持ちます。

    同時の大量アクセスを裁くために生まれたのがNginxです。Apacheが重い処理も全て処理するのに対し、Nginxは同時リクエストを処理することに特化しているため、軽量な点がメリットです。一方でPHPの処理機能がないため動的コンテンツに対応できないといった弱点があります。

    用途や技術課題に合わせて、ApacheをNginxに移行して高負荷の処理に対応したり、ApacheとNginxを共存させるケースが増えています。

    ▲ページトップへ戻る

    3.3 【MySQL】ビッグデータを扱う業務でBigQueryに移行するケースが増加

    企業がアクセスログや過去の販売データのビッグデータを分析する際、レコード数が数億になることがあります。また機械学習と併用したいニーズもあり、大規模データを扱う際にMySQLでは遅く、スケーラビリティが低く、機械学習に不向きなケースがあります。
    そうしたケースでBigQueryに移行するケースが出てきています。

    例えばマネーフォワードでは、データ分析基盤としてBigQueryを利用しています。数億レコードに対してMySQLだけでは遅く、BigQueryに移行した所分析や調査で高速の検索が可能になりました。

    またMySQL環境とBigQueryを同期させて共存させるケースもあります。

    例えばメルカリでは、数百GBの膨大なデータをMySQLからBigQueryへ移行させようとしました。しかしながら、BigQueryの更新に制限があり全てアップロードすることはできませんでした。

    そこで、差分同期の方法を取ることで共存させるようにしました。
    具体的には、同期させたい期間のレコードを定期的に検索して、その結果をBigQueryの作業用テーブルへ上書きし、作業用テーブルとアップロード先のテーブルをマージさせるという方法です。

    ▲ページトップへ戻る

    3.4 【PHP】Ruby・Goなど用途別に言語が多様化

    クックパッドはRuby、TalknoteはGoなどITサービスが多様化する中で、用途に合わせて選ぶ言語も多様化しています。

    例えば、メディアやブログなどの運営に必須なCMSなどを始めとするWebアプリを作りたいならPHPが圧倒的なシェアを誇りますし、SNSやマッチングアプリなどはRuby on Railsを使うと楽に各種機能を作れるのでRubyが向いていると言えるでしょう。

    GoはJavaのように環境に依存されず高いパフォーマンスを誇る言語で、JavaやC++並みの高さを誇ります。そのためネットショッピングの決済処理といったアクセスが多く、素早い処理が求められるシステムの開発に向いています。

    ▲ページトップへ戻る

    4. まとめ

    今回は、LAMP環境について、AWSにLAMP環境を構築させる方法、本当にLAMP環境が古いのかについてお話させていただきました。

    LAMP環境は次世代環境に比べて古いと言われていますが、基礎的な部分は変わらず、LAMPの知識を持っていると取り組みやすいです。これからは、大量の同時アクセスへの対応やビッグデータ解析など様々な要件に合わせてカスタマイズしていくことで効率的な運用が可能になるでしょう。

    ▲ページトップへ戻る


    最新求人情報をチェック!

    月額単価70万円〜80万円
    勤務地 東京都 渋谷区
    勤務地 大阪府
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    フリーランス

    【PHP(Laravel)/JavaScript】フルスタックエンジニア★ビッグデータを活用した広告プラットフォーム開発 NEW

    月額単価 :70万円〜80万円

    BtoB向けの来店者計測ツールを活用し収集したビッグデータを基にリアル広告 (チラシ)×Web広告を出稿でき...

    フリーランス

    【Vue.js(Nuxt.js)/TypeScript/HTML/CSS】フロントエンドエンジニア★不動産業向けDX支援プラットフォーム開発他 NEW

    月額単価 :90万円〜

    同社は、不動産業界向けDX支援プラットフォームをはじめ、複数の自社プラットフォームを展開している企...

    フリーランス

    【PHP/Laravel/Vue.js】フルスタックエンジニア★Fintech領域のセルフレジプラットフォーム開発 NEW

    同社は自社サービスでクラウド型POSシステム等の開発、運営を行っている企業です。 今回はFintech領域...

    フリーランス

    【Java/Kotlin】Androidアプリ開発エンジニア★クラウド型POSプラットフォームの開発 NEW

    同社は自社でクラウド型POSプラットフォームやセルフオーダーシステムの開発、運営を行っている企業です...