Ⅴ. LAMPのインストール(Raspberry Pi3 + Raspbian Stretch編)

 Webアプリケーション開発のためのオープンソースソフトLAMP(Linux + Apache + MySQL + PHP)を導入します。Raspbian StrechではPHP5がPHP7に、MySQLはMariaDBに変わっていて、今までのようにLAMPパッケージを一括インストールすることができません。そこで、Apach2、PHP7、php-mysql、MySQL/MariaDBの順でインストールし、最後にphpMyAdminを導入します。
 この章の作業をするにあたり、猫屋敷工房さんの
  『Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法』
を参考にさせていただきました。

1.Raspbian Strechの確認

 一連のソフトウェアをインストールするにあたって、インストール済みのOS情報を確認しておきます。なお、以下の確認とインストールはすべてPCのPoderosaで行います。
 unameでシステム情報を、lsb_releaseでディストリビューション情報を表示させています。


2.個別ソフトのインストール

(1)Apache2

 次のコマンドでインストールします。
$ sudo apt-get update
$ sudo apt-get install apache2
 インストール結果のバージョンを確認します。


(2)PHP7

 次のコマンドでインストールします。
$ sudo apt-get -y install php php-dev php-fpm php-gd
 インストール結果のバージョンを確認します。


(3)php-mysql

 次のコマンドでインストールします。
$ sudo apt-get -y install php-mysql
 以下のようにしてPHP7-FPMを有効にします。


(4)MySQL/MariaDB

 次のコマンドでインストールします。
$ sudo apt-get -y install mysql-server
 インストール結果のバージョンを確認します。


 ここまで進めてくると、次は当然phpMyAdminをインストールしたくなります。実はそれをやってしまうと、phpMyAdminのログイン画面で次のようなエラーが表示されてアクセス拒否されてしまいます。
    #1698 - Access denied for user 'root'@'localhost'
    mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'
そしてその解決がなかなかはかどらず、何度もphpMyAdminをアンインストールしてはやり直す始末、完全にハマってしまいました。
 ということで、phpMyAdminをインストールする前に必ずMariaDB(MySQL)の初期設定を行ってください。
 次のコマンドで開始し、最初の「Enter current password for root (enter for none):」は何も入力しないで[Enter]を押下、「Change the root password?」で'y'と応えてお望みのrootパスワードを入力してください。続くいくつかの確認事項は、すべて'y'で差し支えないでしょう。
$ sudo systemctl start mariadb.service
$ sudo /usr/bin/mysql_secure_installation
  ※この部分は『Memo: MariaDBのインストール/初期設定』を参考にさせていただきました。


(5)phpMyAdmin

 次のコマンドでインストールします。
$ sudo apt-get -y install phpmyadmin
 インストール途中に以下のようなダイアログが表示されるので応答します。パスワードはMariaDBと同じものにしました。

3.動作確認

①サーバーの動作確認(Apacheの動作確認)

 PC側のWebブラウザでRaspberry Piの IP Adressを入力してください。
 次のような Apacheのデフォールトページ「It works!」が表示されればOKです。


②Apacheの PHPモジュールのテスト

1)次のコマンドを入力してスクリプトファイル phptest.phpを作成します。
$ sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phptest.php'
  (参考) /var/www/html/はApacheのドキュメント・ルートです。
2)ブラウザに「http://192.168.0.32/phptest.php」と入力します。
 PHPの詳細情報が表示されれば、先に作成したスクリプトファイルが実行されたわけで PHPの動作確認は完了です。

③MySQLの動作確認
 1)MySQLの起動と問題の発生

 mysql -u root -p と入力し、引き続きパスワードを入力して MySqlを起動しますが、ここで下図のような問題が発生しました。 [Enter password:]でパスワードを入力すると「ERROR 1698 (28000): Access denied for user 'root'@'localhost'」と表示されてログインできません。しかも、「sudo mysql -u root」ならパスワードなしでログインできてしまうのです。

 2)ログインエラーへの対応

 少し回り道になりますが、問題の調査過程と対応方法をまとめておきます。とりあえず「sudo mysql -u root」でログインして、mysqlデータベースを選択します(use mysql;)。そして利用者情報を記録しているuserテーブルの、気がかりなカラムの内容を表示してみました。rootとphpmyadminの二人が登録されていて、パスワードは同じになっていることがわかります。しかし、rootのほうはプラグインがunix_socketになっています。どうやらこれが原因でパスワード認証が変わってしまっているようです。
 そこでSQL文「UPDATE user SET plugin='' WHERE User='root';」でプラグインを空にしました。結果を確認した上でquitし、「mysql -u root -p」でログインし直します。パスワードを入力すると無事ログインできました。またこれで、「sudo mysql -u root」でもパスワードなしではログインできなくなりました。
 3)さて、それでは次のSQL文を実行させてみましょう。
SHOW VARIABLES LIKE 'character_set%';
 4)次のような文字セットが表示されればOKです。Valueの内容から、どうやら日本語文字化けの心配はなさそうです。
 5)MySQLを終了してください。
quit;


④phpMyAdminの動作確認

 PC側のブラウザで「192.168.0.32/phpmyadmin/」のように、Raspberry PiのIPアドレスに続けてphpmyadminを指定します。ログイン画面が表示されたらrootでログインします。
 phpMyAdminの画面が表示されました。これでブラウザから分かりやすいインターフェイスで、MySQLに対して様々な操作ができるようになりました。