未経験からプログラミングやWeb開発を学び、自身のスキルを活かしてエンジニア転職したいと考えている方へ、この記事では、EC2を活用したLAMP環境の構築方法を詳しく解説します。
この記事では、以下のポイントをカバーします
- LAMP環境とはなにか?
- Apache Webサーバーの必要性とインストール方法
- PHPのインストールやウェブページの動的生成
- MySQLデータベースの重要性とMariaDBのインストール手順
- データベースの管理をサポートするphpMyAdminの導入
未経験者でも安心してスタートできるLAMP環境を手軽に構築しましょう。
Linux、Apache、MySQL、そしてPHP(LAMP)を組み合わせたウェブ開発環境が、新たなスキルセットとなり、エンジニア転職の可能性を広げます。
LAMP環境とは?
LAMP環境は、webアプリケーションの開発やホスティングに使用される一般的な技術スタックの一つです。LAMPは、以下の要素から成り立っています。
- Linux(LAMPのL)
OSとしてLinuxを使用します。Linuxはオープンソースで、安定性とセキュリティが高いため、多くのwebサーバーで採用されています。
- Apache(LAMPのA)
WebサーバーソフトウェアとしてApacheを使用します。Apacheはwebページのリクエストを受け取り、クライアントに応答を返す役割を果たします。
- MySQL(LAMPのM)
データベース管理システムとしてMySQLを使用します。MySQLはリレーショナルデータベースで、データの格納や取得に使用されます。
- PHP(LAMPのP)
サーバーサイドのスクリプト言語としてPHPを使用します。webページを動的に生成し、データベースとの連携を可能にします。
LAMP環境の主な特徴と利点は次のとおりです
- 全てオープンソースであり無料で利用可能
- PHP(サーバーサイド言語)を使用することで、動的なwebページの作成やデータベースとの連携も容易
- LinuxとApacheは安定性とセキュリティに優れており信頼性が高い
- コミュニティが存在し、ドキュメントやサポートが豊富
LAMP環境は、webアプリケーションの開発、ブログ、eコマースwiki、コンテンツ管理システムなど、さまざまなwebベースのプロジェクトで利用されます。
Webサーバーの必要性
LAMP環境の説明に補足ですが、Webページを表示させるためには、Webサーバーソフトウェアが必要です。Webサーバーソフトウェアの役割は、以下の点で重要です
- Webサーバーはクライアント(通常はウェブブラウザ)からのHTTPリクエストを受信します。
- Webサーバーは、受信したHTTPリクエストに基づいて適切なwebページやコンテンツを提供します。これは通常、ウェブページのファイル(HTML、CSS、JavaScriptなど)をクライアントに送信することを意味します。
- webページが動的である場合、Webサーバーは動的なコンテンツを生成するためにPHP(サーバーサイド言語)を実行する役割も果たします。
- Webサーバーはセキュリティ対策やアクセス制御を実施し、悪意のあるアクセスや不正なリクエストからウェブサイトを守ります。
したがって、WebサーバーソフトウェアはWebページの提供に不可欠ですが、Apache以外にもNginx、Microsoft IIS、LiteSpeedなど、選択肢があります。どのWebサーバーソフトウェアを選択するかは、プロジェクトの要件やパフォーマンス目標に合わせて決定されます。
LAMP環境の構築
それでは、AWSのEC2を利用してLAMP環境を構築していきます。
1.EC2インスタンスを作成する/2.Linuxをインストールする
こちらの手順は、以下の記事で、AWSのEC2の作成方法を解説してますので、記事を参考に手順を進めてみてください。
3.ソフトウェアの最新化
① Apachをインストールしていく前に、dnfを使用して、Linuxにインストールされているソフトウェアのバージョンを最新化しておきます。
dnf(Dandified Yum)は、Linuxで使用されるパッケージ管理ツールであり、ソフトウェアパッケージのインストール、アップグレード、削除のために使用されます。
sudo dnf update -y
Sudoは管理者権限でコマンドを実行することを意味します。
Completeと表示されればOKです。
4.Apacheのインストール
① Apachをインストールします
sudo dnf install -y httpd
このコマンドを実行すると、dnfはApache HTTP Serverパッケージとその依存関係をインストールし、必要なファイルをシステムに配置します。
② インストールが完了したら、Apacheのバージョンを確認します。
httpd -v
③ Apacheを有効にして、システムの起動時に自動的に起動するように設定します。以下のコマンドを使用します。
sudo systemctl enable httpd
sudo systemctl start httpd
sudo systemctl status httpd
これでApacheがインストールされ、有効化され、実行されました。Webサーバーはデフォルトでポート80をリッスンし、webページを提供する準備が整いました。activeが表示されていればOKです。
④ Webページの動作確認をします。
サーバーのIPアドレスをAWSマネジメントコンソールのEC2一覧からグローバルIPアドレスを確認します。
※サーバーを再起動するとIPアドレスは変動します
ブラウザのアドレスバーに、「http://確認したIPアドレス」を入力し、IT Works!と表示されればOKです。
5.PHPのインストール
① CentOS 8以降のバージョンでは、PHPをインストールするためにdnfコマンドを使用できます。以下のコマンドを実行してPHPをインストールできます
sudo dnf install php php-fpm php-mysqli php-json php-devel
Completeと表示されれば、OKです。
これにより、PHPの基本的な機能と一般的な拡張機能がインストールされ、CentOSサーバー上でPHPを利用できるようになります。
② インストール後、PHPをApacheと連携させるために、以下のコマンドでApacheを再起動することをお勧めします。
sudo systemctl restart httpd
6.Apacheの設定とwebページ表示確認
① Apacheのファイルを確認します。以下のコマンドでApacheの公開ディレクトリにアクセスできます。
ls -l /var/www/
② デフォルトの場合、ディレクトリへの書き込み権限は、rootアカウントしかないため、ec2-userに書き込み権限のパーミッションの設定をしていきます。
sudo usermod -aG apache ec2-user
Apacheグループにec2-userを追加しました。
③ 再度ログインをし直して、グループを確認します。
groups
Apacheグループが追加されました。
④ ディレクトリの所有権をec2-user、所有グループをapacheに設定します
sudo chown -R ec2-user:apache /var/www
⑤ Linuxシステム上で/var/wwwディレクトリとそのサブディレクトリに対して特定のパーミッション設定を行うためのものです
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
sudo chmod 2775 /var/wwwで、管理者権限でパーミッションを変更しています。先頭の[2]は、セットガイドビットと言い、新しいファイルやサブディレクトリが親ディレクトリの所有グループで作成されるようになります。
find /var/www -type d -exec sudo chmod 2775 {} \;で、findで親ディレクトリ内のファイルやディレクトリを検索し、-exec
オプションは、find
が見つけたディレクトリに対して後続のコマンドを実行するためのオプションです。
sudo chmod 2775 {} \;
は、見つかったディレクトリに対して先ほどと同じパーミッションを設定するためのコマンドです。{}
はfind
によって見つかった各ディレクトリを置き換えます。
このコマンドを実行することで、/var/wwwディレクトリとそのサブディレクトリに対して、セットガイドビットが設定され、適切なパーミッションが与えられます。
⑥ 以下のコマンドの目的は、/var/wwwディレクトリ内のファイルに対して読み取りと書き込み権限を与えることです。
find /var/www -type f -exec sudo chmod 0664 {} \;
通常、webサーバーがウェブページを配信するためには、このようなパーミッション設定が必要です。
これで、/var/www配下のパーミッション設定が完了しました。
⑦ 新規HTMLファイルを作成します
touch /var/www/html/index.html
⑧ Vimエディターでファイルの編集をし、「Hello World!」と記述します。
vim /var/www/html/index.html
グローバルIPアドレスを指定して、webページにアクセスしてみます。
Vimで入力した内容が表示されればOKです。
7.PHPの動作確認
Phpinfoページを作成して動作確認をしていきます。
Phpinfo関数を使用して、phpの設定情報などをwebページに表示させていきます。
① Htmlフォルダ配下にphpinfo.phpファイルを作成します。
touch /var/www/html/phpinfo.php
② Vimを使用して、作成したファイルにphpinfo関数「<?php phpinfo(); ?>」を記述していきます。
vim /var/www/html/phpinfo.php
③ webページで、「IPアドレス/phpinfo.php」URLを指定するとphpの設定情報を確認できるページが表示されます。
Phpが問題なくインストールできていることが確認できました。
注)現時点では、サーバーに誰でもアクセスできる状態なので、アクセスされると設定情報が確認されてしまう状態です。ページの確認ができましたらファイルを削除しておきましょう。
rm /var/www/html/phpinfo.php
8.MySQL(MariaDB)のインストール
① DBをインストールしていく。MySQLとMariaDBは互換性があるため、MariaDBをインストールしていきます。
sudo dnf install mariadb105-server -y
② インストールが完了したら、起動します。
sudo systemctl start mariadb
③ 続いて、セキュリティ関係の初期設定を行っていきます。
sudo mysql_secure_installation
このコマンドを使用すると、以下のセキュリティ設定が行われます
- ルートパスワードの設定:ルートユーザーアカウントのパスワードを設定します。
- 匿名ユーザーの削除:匿名ユーザーアカウントが削除されます。
- リモートルートログインの無効化:リモートからのルートユーザーのアクセスが無効化されます。
- テストデータベースの削除:テストデータベースが削除されます。
基本的には、「Y」を選択して設定していき、任意のルートパスワードを設定します。
sudo systemctl status mariadb
sudo systemctl enable mariadb
これにより、MariaDBがインストールされ、実行され、システムの起動時にも自動的に起動されます。インストール後、必要に応じてMariaDBの設定を調整し、データベースを操作できるようになります。
9.phpMyAdminをインストール/ログイン
phpMyAdminは、webブラウザ上でデータベースの操作、管理できる環境になります。学習や検証用として利用されることがあります。
① 事前に php-mbstring
と php-xml
パッケージをインストールする必要があります。これらのパッケージは、phpMyAdminが正常に動作するために必要な依存関係です。
sudo dnf install php-mbstring php-xml -y
phpMyAdminは多くの言語と文字セットをサポートしており、特に非英語圏の文字を含むデータベースを操作する場合、php-mbstring
は必要です
構成ファイルやデータベースのエクスポート/インポートにXML形式を使用します。したがって、php-xml
パッケージがないと、これらの操作が適切に機能しない場合があります
② 設定反映のため、Apache、phpを再起動します。
sudo systemctl restart httpd
sudo systemctl restart php-fpm
③ Apacheの公開ディレクトリに移動し、phpMyAdminをインストールします。
cd /var/www/html
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
④ wgetコマンドで、公開サイトからインストールファイルをダウンロードしてきています。.tar.gzは、Linux系で使用されるファイルで、ファイルを展開する際は、tarコマンドを使用します。
mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
&&
は、2つのコマンドを連結して実行するための演算子です。左側のコマンドが成功した場合、右側のコマンドも実行されます
tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin –strip-components 1:
- この部分のコマンドは、phpMyAdmin-latest-all-languages.tar.gz というアーカイブファイルを解凍し、ディレクトリ phpMyAdmin にインストールするためのコマンドです。
- -x: アーカイブを展開するオプションです。
- -v: 処理の詳細を表示するオプションです(verboseモード)。
- -z: 圧縮形式がgzipであることを指定するオプションです。
- -f: アーカイブファイルを指定するオプションで、次にファイル名を指定します(phpMyAdmin-latest-all-languages.tar.gz)。
- -C: アーカイブを展開するディレクトリを指定するオプションで、ここでは phpMyAdmin ディレクトリに展開します。
- –strip-components 1: アーカイブ内のファイルから指定した数のディレクトリを削除します。この場合、–strip-components 1 は一番上のディレクトリを削除して、アーカイブ内のファイルを直接 phpMyAdmin ディレクトリに配置します。
⑤ 展開したファイルは削除しておきます
rm phpMyAdmin-latest-all-languages.tar.gz
⑥ PhpMyAdminディレクトリを確認すると、インストールしたファイルが確認できます。
ls phpMyAdmin
⑦ 設定が完了しましたので、ブラウザで「IPアドレス/phpMyAdmin」アクセスしてみます。
Rootアカウントで設定したパスワードを使用してログインしてみます。
ユーザー名を「root」、パスワードを先ほど設定したパスワードを入力してログインする。
ログインできました。
以上の手順でLAMP環境の構築ができました。
もし、更に学習を進めたい方は、上記のウェブサーバーやデータベースを活用して、さまざまなウェブアプリケーションやウェブサイトを開発・運用に挑戦してみてください。
まとめ
この記事では、LAMP環境を手軽に構築する方法について解説しました。未経験者でもEC2を使ってLinux、Apache、MySQL、PHP(LAMP)を組み合わせた開発環境を構築できます。ポイントをまとめると以下の通りです:
① LAMP環境とは: オープンソースのウェブ開発環境で、Linux、Apache、MySQL、PHPの組み合わせです。無料で利用でき、ウェブ開発やホスティングに適しています。
② ApacheとPHPのインストール: ApacheとPHPをインストールし、Webサーバーとサーバーサイドのスクリプト言語をセットアップします。
③ MySQL(MariaDB)の導入: データベース管理システムとしてMariaDBをインストールし、データベースの設定を行います。
④ phpMyAdminを導入: データベースの管理を支援するphpMyAdminをインストールし、簡単なデータベース操作が可能です。
この記事を参考にして、LAMP環境を構築し、ウェブ開発のスキルを向上させましょう。未経験からでもEC2を使った手順を追えば、新たなキャリアへの第一歩が可能です。