Friction River Software

  • お問い合わせ

CakePHP5入門【開発環境構築編④】PHPとデータベース他

B美

それじゃあ、今回はデータベースやら何やらのインストールと設定を行っていくよー

A子

おー

C菜

やるです~

B美

んじゃ「MATE端末」を開いてから、rootに切り替えたあと、下記のコマンドを打ち込んでね

apt install -y mariadb-server php8.2 php8.2-gd php8.2-mbstring php8.2-mysql php8.2-sqlite3 php8.2-intl php8.2-xml php8.2-curl php8.2-gmp php8.2-zip composer l3afpad[Enter]

長いけど、これって一行だからね

ちなみに「mariadbマリアディービー-serverサーバー」がデータベース、「phpピーエイチピー」で始まるやつがPHP言語関係、「composerコンポーザー」がプログラムライブラリを簡単にインストールできる仕組み、「l3afpadリーフパッド」がテキストエディターだからね
(あ、「l3afpadリーフパッド」の二文字目は数字の「3」ね)

C菜

テキストエディターは「nanoナノ」じゃないんですか~?

B美

あれはrootになって、システムの設定ファイルを編集するときだけ使います

なお「l3afpadリーフパッド」はWindowsのメモ帳(notepadノートパッド)みたいなやつだから、多分使いやすいと思うわよ

ちなみに超・余談なんだけど、本当の名前は「leafpad」なのよね
でもDebian12にパッケージングされてるのはそれの派生フォークだから、名前が変なのよ(笑)

あ、そうそう
デフォルトでインストールされているテキストエディターもあるわよ
それが「Pluma」(「アプリケーション」→「アクセサリ」→「Pluma」)で、こっちのほうが高性能なのよね
(なので無理に「l3afpadリーフパッド」を使わず、「Pluma」のほうを使ってもOKよ)

C菜

終わるまで結構時間がかかりました~

B美

依存関係を含めると大量のファイルを一気にインストールしたからね

上のメニューの「アプリケーション」→「アクセサリ」→「L3afpad」とたどってから、右クリックして「このランチャをデスクトップへ追加(D)」を選択することでデスクトップ上にショートカットを作っておきましょう
(今後よく使うからね)

あ、下のメニューを見れば分かると思うけど、「Pluma」もあるから、そちらを使っても良いわよ



A子

うーん、新しいソフトのインストールをコマンドで行うのは良いんだけどさ

そのソフトの名前が分からなきゃ、どうしようもないじゃん…

B美

そうねぇ、aptコマンドには検索機能も備わってるんだけど、せっかくのGUI画面だからこっちを使ってみようかな

上のメニューの「システム」→「システム管理」→「Synapticパッケージマネージャ」とたどります



B美

ここにrootのパスワードを入力してね

これにより、わざわざrootでログインし直さなくてもソフトの管理(インストールや削除等)ができるようになるのよ

B美

左に分類があるからその中の「エディタ」を選択すると、さっきインストールした「l3afpad」があるわよ

あ、□の部分が■になってるやつがインストール済みってことだからね
(ソフトの説明がほとんど英語なのは仕方ないけど…)

ちなみに、ゲームなんかもたくさんあるから、勉強の息抜きにインストールしてみるのも良いかもね
(説明文が英語のものばかりだけど…)

C菜

あとでゆっくり見てみるですぅ~



B美

さて、それではPHPの確認を行ってみましょう
L3afpadリーフパッド」を開いて、こう入力してね

<?php
phpinfo();
?>

入力が終わればメニューの「ファイル」から「名前を付けて保存」を選んで、ホームディレクトリの下にある「html」ディレクトリ(Webサーバのドキュメントルート)の中に「info.php」という名前で保存すること

A子

できたわよ

C菜

私もです~

B美

Firefox ESR」を起動して、URLには「localhost/info.php」と入力してね

これで下の画面が出たら、きちんとPHPがインストールされたってことなのよ

C菜

これも設定ファイルを編集するんですか~?

B美

うーん、やってもいいんだけど、現状で問題が無ければ無理に変更しなくても良いかな

もしも編集したい場合は、「MATE端末」を開いてからrootになって
su -[Enter]
nano /etc/php/8.2/apache2/php.ini[Enter]
で編集してね

あ、変更を反映させるにはWebサーバを再起動する必要があるから注意して!
systemctl restart apache2[Enter]
…ってこと

A子

ふむふむ
あと残すはデータベースだけね

B美

まずは「MATE端末」を開きます
このとき、必ずrootになっておいてね

su -[Enter]
mysql -u root[Enter]

と入力します

B美

ここにこう入力していきます

use mysql;[Enter]
alter user 'root'@'localhost' identified by '********';[Enter]
quit;[Enter]

あ、このとき「********」の部分はパスワードだから、自由に決めてね
(Linuxのrootユーザとは別人だから、パスワードを合わせる必要はないわよ)

ちなみにSQL文では、コマンド(一文)の終わりが必ず「;セミコロンと決まってるから打ち忘れのないようにね
(まぁ「use」と「quit」については、「;セミコロン」は不要なんだけど…)

B美

これってデータベースに関する全権限を持つ「root」というユーザのパスワードを設定したってことなの
(つまり最初はパスワードが設定されていなかったってわけ)

なので、今後「mysql」コマンドを実行するときって、パスワード入力が必須になるからね

mysql -u root -p[Enter]

のように「-p」を付けること!

あ、何度も言うようだけど、Linuxの「root」とMySQL(MariaDB)の「root」は別人だから…

A子

あれ?
インストールしたデータベースって「MariaDBマリアディービー」よね?

さっきから登場している「MySQLマイエスキューエル」って何なのよ

B美

もともとオープンソースだった「MySQLマイエスキューエル」って、今はOracleオラクル社のものになってるの

だから、MySQLマイエスキューエル」から派生フォークして作られたのが無料版の「MariaDBマリアディービーってわけ
(機能的には、「MySQLマイエスキューエル」と互換性があるように作られてるから、安心してね)

C菜

ほかにデータベースソフトって無いんですか~?

B美

色々なものがあるんだけど、個人的には「MySQLマイエスキューエルMariaDBマリアディービー)」が一番使いやすいと思う

PostgreSQLポストグレスキューエル」や「SQLiteエスキューライト」も有名だけどね

A子

なるほどねぇ

Linuxといっても全てが無料ってわけじゃないし、データベースソフトについても色々あるんだね

B美

まぁね
それはともかくとして、少しデータベース操作を練習してみましょうか

まずは「mysql」コマンドでmysqlクライアントにログインします
(「MATE端末」では一般ユーザのままでも大丈夫だからね)

mysql -u root -p[Enter]

続いて、こう打ち込んでみて

show databases;[Enter]

C菜

これってデータベースの一覧ですか~?

B美

その通り
デフォルトで入っているデータベースなんだけど、重要なのは「mysql」ね

この中にデータベースユーザの設定とか色々入っているの

use (データベース名);[Enter]

というのは、今からこれこれのデータベースを使います…って宣言ね

use mysql;[Enter]
show tables;[Enter]

と入力してみて


B美

これにより、このデータベース(mysql)内にある全てのテーブルが一覧表示されるの

んで、その中の「user」という名前のテーブルの中にデータベースユーザの情報が入ってるから
select host,user,password from user;[Enter]

と打ち込むと、ユーザの一覧が表示されるわ
(Linuxユーザじゃなくて、データベースユーザだから間違えないように)

C菜

rootのパスワードがさっき設定したのと違ってます~

B美

パスワードはハッシュ化されて格納されるから、直接確認することはできないの

だから忘れないようにね(苦笑)

A子

「host」とか「user」って、テーブルの項目名よね?

どうやって知ったのよ

B美

あるテーブルの詳細(構造)を知りたければ、こう打ち込んでね

show fields from user;[Enter]

あ、もちろん「user」の個所はテーブル名ね



A子

あれ?
先頭の文字が大文字のものと全て小文字のものがあるけど、さっきは全て小文字で打ち込んでたよね?

B美

関係リレーショナルデータベースの操作ってSQL(Structured Query Language)という言語(文法)を使うんだけど、大文字と小文字を区別しないのよ

だから大文字だろうと、小文字だろうとどっちでも構わないの
(普通は面倒くさいから、全て小文字で打ち込むけどね)

C菜

新しくデータベースを作ったり、テーブルを作ったりするにはどうすれば良いですか~?

B美

うーん、直接mysqlクライアントからキーボード入力しても良いんだけど、テキストファイルを作ってそれを読み込ませてみましょうか

まずは「L3afpadリーフパッド」を開いてね

A子

準備OKよ

B美

そこに下記の内容を入力してから「testdb.sql」というファイル名でホームディレクトリの直下に保存してね

create database testdb;

use testdb;

create table counters (
 id int auto_increment primary key,
 remarks varchar(255),
 counter int not null,
 created datetime,
 modified datetime
) charset=utf8mb4;

insert into counters values (1,'top',0,now(),now());

C菜

どういうデータを格納するテーブルなんですか~?

B美

Webページの訪問者数を数えるためのアクセスカウンター
(将来「CakePHP5」で利用するつもりだから、それに適合した形式にしているわ)

「MATE端末」を開いて次のように入力してね

cd[Enter]
mysql -u root -p < testdb.sql[Enter]

パスワードを入力したあと

mysql -u root -p testdb[Enter]

で確認してみましょう(データベース名を最後に付けると、このデータベースを自動的にuseすることになるの)

show databases;[Enter]
show tables;[Enter]
show fields from counters;[Enter]
select * from counters;[Enter]

なんかを確認してみてね


A子

うーん、なんとなくは分かってきたよ

C菜

細かいところは依然として意味不明ですけどね~(笑)

B美

これで一通りの開発環境設定は終了よ

次回からは、いよいよPHP言語によるプログラミングに入っていくからね