一人でLAMP環境を作れるようになるまでの勉強フロー。
プログラミング学習 インフラ

一人でLAMP環境を作れるようになるまでの勉強フロー。

2020.07.12

こんにちはjunです。私はフロントエンド エンジニアとして2019年の12月にWeb系会社に入りましたが、社員数が少ない上に複数のお取引先のサイトを保守しているのでサーバーの知識がまず必要になりました。

入社前まではサーバーというとXserverのようなレンタルサーバーにFTPを使ってファイルを転送したり、MAMPやXAMMPを用いてサーバーに似た環境を整えるといったぐらいの知識しかありませんでした。

ですがなんやかんや勉強したり仮想環境を用いて構築を行いました。おかげで入社3ヶ月目には実務上必要なLAMPサーバー構築作業ができるようになり、本番用のサーバーの構築も行い現在稼働しています。さらにインフラ部分とフロント部分との繋がり、またWebサービスの提供がどうやって行われるのかをよく理解できました。

今回の記事では実務上に求められるサーバー構築ができ、そしてある程度インフラ部分がわかるようになるため私が行った・意識したことを共有したいと思います。別途の記事でLAMP環境の構築方法とかvagrantのインストール方法を書きます。

LAMPとはOSがLinux系、WebサーバーにApache、DBサーバーにMySQL、サーバーサイド言語としてPHP/Perl/Pythonのどれかを入れたサーバー環境のことです。

Vagrantで仮想環境がお手軽

まずプログラミングを習いたての方、例えばPHPを使ってDBと連携したり、JSライブラリのjqueryを用いてUIを学習するぐらいであればMAMPやXAMMPでOKです。ですがMAMPから次のステップに進むならばVPSやvagrantを用いてサーバーという物に触れた方が良いです。

VPSはお金がかかったりクラッシュさせると面倒なので、学習においてはvagrantがベストです。

vagrantとは

vagrantとはvirtual boxという仮想マシンを動かすためのツールです。仮想マシン、つまりMacのなかにWindowsの環境を構築したり、CentOS(商用のサーバーでよく使われるOS)を入れてサービスをリリースする環境を自分のPCに構築します。

仮想マシンを素で環境を構築しようとすると大変なので、vagrantというツールで「大体みんなこんな機能使うよね」という感じで設定してくれます。vagrantで構築するOSを指定すればあとはコマンドを使って自前サーバーを設定できるようになります。まあ、vagrant使えばVPSとか商用のサーバー環境を自分のPCで作れるんだなと思ってください。

どうして仮想環境が良いの?

vagrantが良いのはdockerとは違って、実際のLAMP環境を構築する手順をローカルPC上で実演できるからです。最近はdockerでコードを書いてサーバー構築するという方法もありますが、それでもコマンドをポチポチ唱えてソフトやミドルウェア をインストールして..と構築する場面はまだ多いです

仮想環境なので例えミスって動かなくなっても壊して、再構築すれば良いだけです。そして仮想環境ですが、実際のサーバー構築と同じ動きをするのでサーバーのディレクトリ構成や、コマンド操作の練習が行いやすいです。

さらに言えば失敗できる環境なので、何かしらエラーが起きてそれを直してみるという経験は貴重です。サーバーでエラーということはwebページが全く表示されなかったり、サービスが停止する本番のサーバーでは失敗が許されません。その点を考えれば自由に失敗できる仮想環境は素晴らしいインフラ学習環境でもあります。

dockerだって失敗できるじゃないか

確かにdockerも同様に失敗できて、すぐに環境の再構築と破棄が可能です。しかしdockerを用いて環境構築するにはOSのディレクトリ構成とかApacheの設定の仕組みとかをインフラを最低限知っておかないと、ただの暗記コードを書くだけになります。

「このフォルダに〜〜の構成ファイルがあって、ここに設定しているのんだな〜」というのを理解するにはvagrantを用いて実際のサーバーを探検するのがベストです。

webサービスが提供される本質を知る

  • なぜ https://~~~~~とブラウザで検索するとwebサイトが見れるのですか?
  • ドキュメントルートとは何ですか?どこで設定できますか?
  • IPアドレス、ドメイン、ポートとはサーバーではどんな意味を持ちますか?

webサービスを提供するためにはインターネットに接続されたサーバーが必要です。ではサーバーに何をインストールして、何を設定して、どこにファイルをおけば自分が作ったアプリが実行され、他の人も使えるようになるのかをよく理解することです。

処理フローを追って、そしてインストールしたものがどのように相互作用しているのかを勉強するとインフラの知識の習得が早くなります。

まずはサーバーの基礎知識から

しかしインフラの知識がない中でソフトの相互作用とか全くわからないので、ソフトの前にサーバーの以下の知識を知るといいです。

  • OS(どんな時に使われるのか、有料なのか無料なのか程度)
  • ディレクトリ構成
  • ディレクトリ内の役割(ざっくり)
  • 権限とユーザー(大事です)
  • SSHの方法と接続
  • コマンドの意味

まずはこれは基礎知識です。PC何に接続したvagrantまたはリモート上のVPSとかに接続する方法、サーバーの中を探求するためのコマンドは知っておかないとまずサーバーをいじれません笑

私も「vagrantを構築したのはいいけど、仮想サーバーはどこにあるん??」となってました。

ソフトウェア等をいれる

MAMPなどをインストールするとApache,PHP,Mysqlが入っていました。しかしvagrantで構築するとそれらは入っていません。自分でコマンドを唱えてインストールします。しかしそれらをインストールして稼働できるようになれば、webサービスを構築できます。

「vagrant <ソフトウェア名> インストール」と検索して方法を調べましょう。

サーバー構築練習で意識すること

ググる際の注意

サーバー構築では絶対にエラーで悩みます。「Permission Deniedになる..」「PHPがインストールできない!」「500 Internal Server Error?もう知らん!」となるでしょう。エラーになった時は基本的にはググるのですが、そのググりの際に以下の点に注意しておくといいです。

  • バージョンによる差異に気をつける
  • 検索した記事の発行日時に気をつける

-その記事では何をしたいのか?どんな問題を解決しようとしてるのか、前提条件を確認する

特にバージョンによる差異は要注意です。自分がインストールしようとしているバージョンと、記事内で解説されているバージョンには気をつけましょう。特に

  • Apache2.2とApche2.4
  • CentOS6とCentOS7
  • MySQL5.7とそれ以前
  • PHP5系とPHP7系

こいつらには注意です。私もかなり苦労しました。バージョンごとに設定が大きく変わったりしているので、単に調べてコピペするだけでは解決しません。とりあえずどんなエラーが起きたのかログをメモして、バージョンに気をつけながら検索をしましょう。

まずはHelloworld.htmlを出してみよう

ここでは主に勉強フローしか書いていませんが、

  • vagrantとvirtual boxをいれる
  • OSを指定して仮想サーバーを立てる
  • 必要なソフトウェア等をインストール
  • ドキュメントルート にHelloworld.htmlを入れておく
  • ブラウザでアクセスしてHelloworld.htmlを表示する

という流れができればインフラの理解はまず進みます。あとはセキュリティとか運用方法とか権限設定を学んでいくといいです。まずは最低限のインフラを整えて自分のwebサービスを表示・機能できるようにすると達成感と理解が半端じゃないです。

LAMPはオワコンとか言われるが気にするな

確かに最近はLAMP通りの環境ではなく、WebサーバーにNginx、DBはPostgreSQL、ていうか「Dockerでよくね?」「AWS上での構築でしょ!」とも言われて「LAMPは古い。オワコンだ」とも言われます。

しかし私が思うのはこれらの話は「あくまでより良いwebサービスを提供するための技術選定のお話」であってインフラのことを知っている人たちのお話だと思います。インフラ初学者にとって、基本と言いますか原理的な部分としてはLAMP環境でサーバーの知識を知った方が敷居が低いと思います。

多分LAMPほど情報が多く、チュートリアルで分かりやすい環境構築はさほどないと思います。LAMPからサーバーのことを知っていけば、AWSなりDockerなどLAMP以外の環境構築もすぐに理解できると思います。

Copyright © 2021 jun. All rights reserved.