今回のブログでは、弊社EMoshUのコーポレートサイトの開発のために、LAMP環境を構築したことをまとめて記事にしてみました。

もくじ

 

 

 

 

 

 

 

 

 

はじめに

 

今回のブログでは、弊社EMoshUのコーポレートサイトの開発のために、LAMP環境を構築したことをまとめて記事にしてみました。

 

弊社のコーポレートサイトではCMSを導入しており、PHPのフレームワークを使用しているため、開発環境においてPHPが動作するLAMP環境が必要でした。

 

これまでMAMPなどの環境上でPHPファイルを動かしたことはありましたが、サーバー側の学習も兼ねた作業もできるということで、今回初めてVirtualBoxを使ってインストールしたUbuntuにLAMP環境を構築に挑戦してみました。

 

 

実際のLAMP環境構築の手順などに関しては詳しく掲載されているサイトが色々とありますので、今回はそういった手順のお話しではなく、より基本的な内容に重点を置いて、まずはLAMP環境がどのようなものなのかをわかっていただけたらと思います。

 

さらに、環境構築の途中で遭遇したエラーなどを紹介しますので、実際に自分のPCでLAMP環境の構築を行ってみて、つまづいた際にぜひ見返していただけたらと思っています。

 

 

それでは最後までご覧ください!

 

 

 

 

 

 

 

ということで、早速LAMP環境の構築に入っていきたいのですが、初学者の方にとっては「Ubuntuとは? LAMP環境って何?」と聞き慣れない用語に疑問を抱くと思います。

 

ですので、まずはそれらの用語について簡単に説明していきたいと思います。

 

 

 

 

VirtualBoxとは

 

VirtualBox(バーチャルボックス)とは、使用しているPC(OS)に仮想的なコンピュータ(仮想マシン / VM: Virtual Machine)を構築して、その上で他のOSをインストールすることができるホスト型仮想化ソフトウェアです。

 

ホストOSとは、Windows、macOS、Linuxなどの元になるOSのことを指します。

 

 

ホスト型であるVirtualBoxは、このホストOS上に仮想マシンを動作させることが可能で、ホストOSとは別のOS(ゲストOS)をインストールして使用することができます。

 

VirtualBoxを導入することによって、例えばmacOSの環境でWindowsやLinuxなどの複数のOSを切り替えて使用することができるようになります。

 

virtualbox.jpg

 

 

 

 

 

Ubuntuとは

 

Ubuntu(ウブントゥ)とはオープンソースのLinuxディストリビューションの一つです。

 

Linuxディストリビューションとは、オープンソースのOSであるLinuxのカーネル(OSの核となる部分)と、その動作に必要なアプリケーションやライブラリ(関数、機能、データのまとまりなど)をひとまとめ(パッケージ)にしたものです。

 

Ubuntuという言葉は、南アフリカのズールー語で「他者への思いやり」や「皆があっての私」という意味があるように、初心者にやさしく扱いやすい、Linuxディストリビューションであると言われています。また、GUIで操作できるデスクトップ版も配信されています。

 

ubuntu.jpg

Ubuntuのロゴ。個人的な感想ですけど、なんか近未来感あって好きです。

 

 

 

 

 

LAMP環境とは

 

まず、LAMP環境のLAMP(ランプ)とは、人気のオープンソース系ソフトであるLinux(OS)、Apache(Webサーバー)、MySQL(データベース)、PHP(プログラミング言語)のそれぞれ頭文字を取って組み合わせた開発環境のことです。

 

動的(ダイナミック)なコンテンツを含むWebサイトの構築に適しており、人気のある開発環境の一つとなっています。また、LAMP環境は全てオープンソースのソフトを使用するため、開発のコストを抑えられるという点や、拡張性・汎用性が高いという特徴があります。

 

Asset 1.png

 

 

以下にLinux、Apache、MySQL、PHPの簡単な説明をそれぞれ用意しました。

 

 

 

 

 

Linux(OS)

 

Linux(リナックス)とは、世界で最も普及しているオープンソースのオペレーティングシステム(OS)です。オープンソースということで、プログラムが公開されており、誰でも自由に入手や使用、改良、再配布が可能になっています。

 

OSと言われて真っ先に思い浮かぶのは、WindowsかmacOSだと思います。そう言えるのはこの2つがほとんどの個人用PCで使われているからです。それに対してLinuxは、インターネットを構成するサーバーに使われることが多く、主にネットワーク上で他のコンピュータに機能やサービスを提供するサーバーコンピュータとして利用されています。

 

今回はLinuxディストリビューションの「Ubuntu 20.04.2 LTS」をインストールしました。

 

 

 

 

 

Apache(Webサーバー)

 

Apache(アパッチ)は、世界的に最も利用者数が多いWebサーバー(HTTPサーバー)ソフトウェアの一種で、正式名称はApache HTTP Serverです。

 

安定性や機能の豊富さ、また対応ソフトウェアの多さなどが評価される人気のWebサーバーであり、企業から個人まで様々な用途で利用されています。

 

また、Apacheの特徴としてCMSを利用する際に、PHPやデータベースと連携しやすい点も挙げられます。

 

今回は「Apache/2.4.41 (Ubuntu)」をインストールしました。

 

 

 

 

 

MySQL(データベース)

 

MySQLも世界トップシェアを誇り、人気の高いオープンソースのリレーショナルデータベース管理システム(RDBMS)の一つです。

 

データベースは、データを簡単に使用したり取得したりできるように、まとめて構造化したものです。MySQLでは、そのデータの作成や管理、書き込み、読み込みなどを行うためのソフトウェアになります。

 

特徴として、独自の高性能エンジンが採用されており、処理能力が早いだけでなく、機能や特徴に応じた拡張性と柔軟性が高いことが挙げられます。

 

今回は「MySQL 8.0.25」をインストールしました。

 

 

 

 

 

PHP(プログラミング言語)

 

LAMPの中では、PHPは聞いたことがある可能性が一番高いと思います。ご存知の通り、プログラミング言語です。

 

もう少し掘り下げて具体的に説明すると、PHPはWebサーバーの機能を拡張し、動的にWebページを生成することができるオープンソースのサーバーサイド言語です。

 

HTMLに埋め込むことができるため、Webシステム開発で使用される機会が多いことが特徴として挙げられます。

 

今回は「PHP 7.4.3」をインストールしました。

 

 

また、PHPについては以前雅樹さんが記事を投稿しておりますので、ぜひこちらをご覧ください! こちらも初学者に優しい基本的な内容になっており、非常に読みやすいです!!

 

【開発ブログ】PHPを使う際に気をつけるべき基本事項|Engineering|EMoshU Blog|株式会社EMoshU

EMoshU Blog|Webとの親和性が高いスクリプト言語であるPHPの基本的な内容や注意点についてまとめました。

 

 

 

 

 

 

LAMP環境の構築

 

先述したように、今回はVirtualbBoxにUbuntuをインストールして、LAMP環境を構築しました。そのために以下のパッケージをインストールしました。パッケージ名とその用途を簡単な表にまとめました。

 

導入パッケージ名 導入理由・用途
apache2 Webサーバーとして動作させるため
mysql-server MySQLをDBサーバーとして動作させるため
php PHPを動作させるため
php-mbstring マルチバイト文字を扱えるようにするため
php-gd 画像処理を行えるようにするため
php-xml XMLを扱えるようにするため
php-mysql PHPとMySQLを扱えるようにするため
zip ZIP形式での圧縮や解凍を行えるようにする
postfix メール送信を行えるようにするため

 

 

 

さぁ、実際にこれからLAMP環境構築を行っていくわけですが、最初に述べたように今回の記事では、実際のLAMP環境の構築手順をお伝えするのがメインではないので、こちらは割愛させていただきます。

 

ですが、私がLAMP環境の構築を行った際に非常に参考になったサイトがありますので、そちらのリンクを貼らせていただきます。

 

 

Ubuntu Server 20.04 LAMP環境インストールメモ | あぱーブログ

 

 

上記のサイトでは、とてもわかりやすくLAMP環境の構築手順について書かれており、上から手順通りに進めていただければ、問題なく環境構築が行えます。

 

では、次のセクションで実際に私がLAMP環境の構築を行った際に詰まったところ、さらには遭遇したエラーをその解決法とともにご紹介していきます。

 

 

 

 

 

環境構築中に遭遇したエラーについて

 

① vimエディタの保存終了時に「E45: ‘readonly’ option is set (add ! to override)」のエラーが発生する

 

エラー内容

 

Vimエディタでファイルを編集し、コマンドラインモードで「:wq」で保存して終了しようとした際に以下のエラーが発生しました。

 

 

解決方法

 

このエラーの解決法として、以下の手順で書き込みの保存とエディタの終了を行います。
編集モードから「esc」キーでコマンドラインモードへ切り替えます。

 

下記のコマンドを実行します。

 

    
        :w !sudo tee %
    

 

コマンドを実行するとパスワード入力を求められるので、入力してそのまま進めると、下記のメッセージが表示されます。

 

    
        Press ENTER or type command to continue
    

 

Enterを押すと、上書きが実行されます。
その後、終了コマンドでvimエディタから抜けることができます。

 

    
        :q!
    

 

このエラーの原因となっているのは、書き込み権限のないユーザーでvimエディタの編集を行ったためです。root権限であれば、「:wq」で通常通り保存して終了することができます。

 

root権限でvimエディタの編集を行わなかった時は、焦らずにこちらの方法で保存終了ができるので、覚えておいて損はないと思います。

 

 

 

 

② MySQLでユーザーを追加しようとすると、「ERROR 1819 (HY000): Your password does not satisfy the current policy requirements」のエラーが発生する

 

エラー内容

 

こちらのエラーは、MySQLにユーザーを追加してパスワードの設定をしようとした時に発生しました。

 

エラー内容としては、パスワードポリシーに準拠していないためにパスワードが設定できないとのことです。

 

パスワードポリシーは以下の通りです。

 

パスワードポリシー(パスワードの複雑さ) 実行されたテスト(テストする内容)
0 または LOW 長さ
1 または MEDIUM 長さ;数字、小文字/大文字、および特殊文字
2 または STRONG 長さ;数字、小文字/大文字、および特殊文字。辞書ファイル

 

 

解決方法

 

以下のコマンドでパスワードポリシーを確認してみます。

 

    
        mysql> SHOW VARIABLES LIKE 'validate_password%';
        +--------------------------------------+-------+
        | Variable_name                        | Value |
        +--------------------------------------+-------+
        | validate_password_check_user_name    | OFF   |
        | validate_password_dictionary_file    |       |
        | validate_password_length             | 8     |
        | validate_password_mixed_case_count   | 1     |
        | validate_password_number_count       | 1     |
        | validate_password_policy             | MEDIUM|
        | validate_password_special_char_count | 1     |
        +--------------------------------------+-------+
        7 rows in set (0.00 sec)
    

 

初期状態だとパスワードポリシー(validate_password_policy)がMEDIUMに設定されていることがわかります。

 

パスワードポリシーと文字列の長さを変更してみます。

 

以下のmysqlコマンドを実行します。

 

    
        mysql> set global validate_password_length=6; # 文字列の長さを変更
        mysql> set global validate_password_policy=LOW; # ポリシーを変更
    

 

先程使用した確認コマンドで、パスワードポリシーと文字列の長さがそれぞれが、変更されたかどうか確認してみます。

 

    
        mysql> show variables like 'validate_password%';
        +--------------------------------------+-------+
        | Variable_name                        | Value |
        +--------------------------------------+-------+
        | validate_password_check_user_name    | OFF   |
        | validate_password_dictionary_file    |       |
        | validate_password_length             | 6     |
        | validate_password_mixed_case_count   | 1     |
        | validate_password_number_count       | 1     |
        | validate_password_policy             | LOW   |
        | validate_password_special_char_count | 1     |
        +--------------------------------------+-------+
        7 rows in set (0.00 sec)
    

 

これで、パスワードポリシーがLOW、文字列の長さが6文字に変更されました。

 

ここで一点注意ですが、本来ならばパスワードはセキュリティ面から複雑な文字列に設定するべきですが、今回は開発環境の構築ということもあり、簡単なパスワードを設定できるようにするためにポリシーの変更を行いました。

 

MySQL 5.7からパスワードポリシーのルールが強化されたことで、簡単なパスワードではエラーが表示されるようになっています。
パスワードポリシーが変更できることを知っておけば、エラーが出た際も容易に対処できるので、しっかり覚えておくと良いでしょう。

 

 

以上、今回のLAMP環境の構築で、私がつまづいたエラーとその対処法・解決法について書き留めてみました。

 

私自身、また同じようなエラーが発生した際にこの記事を参照したいと思いますし、読んでいただいたみなさんがLAMP環境の構築を行う際に少しでも障壁なく進められたらと思います。

 

 

 

 

 

まとめ

 

ここまでお読みいただきありがとうございました。

 

今回はコーポレートサイトの開発環境のために、初めてLAMP環境の構築に挑戦してみました。

 

初めはLAMP環境という言葉もイマイチわかっていませんでしたが、一つ一つ調べていくうちに徐々にLAMP環境がどのようなものかがわかってきました。
また、その際に特につまづいたエラーを紹介させていただきました。

 

さらに今回はサーバー側の学習も兼ねての環境構築だったため、Linuxのコマンドにも多く触れることができました。

 

今後より学習を重ねていき、今度はもっと深堀った内容で記事を書いていけたらと思っています。

 

 

 

 

 

参考文献

 

VirtualBox

 

Ubuntu

 

LAMP環境・環境構築

 

 

 

 

 

 

 

募集要項

 

 

 

 

まずは話を聞いてみたいという方へ

 

 

 

 

関連記事

【開発ブログ】PHPを使う際に気をつけるべき基本事項|Engineering|EMoshU Blog|株式会社EMoshU

EMoshU Blog|Webとの親和性が高いスクリプト言語であるPHPの基本的な内容や注意点についてまとめました。