はじめに
いままでの記事の内容で、超軽量のTiny Core Linux で、nginx と PHP7を動作させることができるようになりました。なお、超軽量というのは、ISOイメージサイズが最小で11MBというところから来ています。
- 超軽量のTiny Core LinuxをVirtualBoxにインストールする方法
- Tiny Core Linuxで日本語キーボードを使用する方法
- Tiny Core Linuxで日本時間表示と時刻同期する方法
- Tiny Core Linux に nginx で Webサーバーを立てる方法
- Tiny Core Linuxにnginx+PHP7環境を構築する方法
この記事では、データベースとして MariaDB (MySQL互換データベース)を使用します。また、データベースの接続形式はPDO(PHP Data Objects)にします。
MariaDB のインストール
お約束の Apps から、以下のパッケージから MariaDBをインストールすることができます。
- mariadb.tcz
- mariadb-client.tcz
インストールが終了したら、シンボリックリンクを作成します。これをここで行っていないと、あとで原因不明のエラーで苦しめられることになります。
$ cd /usr/lib $ sudo ln -s /usr/lobal/mysql/lib/libmysqlclient.so.18 libmysqlclient.so.18
PHPの設定
PHPのphp.iniの設定を行います。まずはサンプルファイルからphp.iniを作成して編集を行います。
$ sudo cp /usr/local/etc/php7/php.ini-sample php.ini
$ sudo vi php.ini
まず、以下の内容を php.ini の適当な位置に入力します。extension_dir の内容は、Tiny Core Linux のバージョンに依存するのでご注意ください。
extension_dir=/usr/local/lib/php/extensions/no-debug-zts-20170718 extension=pdo.so extension=pdo_mysql.so
そして、[Pdo_mysql]セクションに以下の設定を行います。これはPDOの設定になるので、他の接続方式では設定内容が変わってきます。
[Pdo_mysql] pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
PHP の設定が済んだらPHP(PHP-FPM)を再起動します。
$ sudo /usr/local/etc/init.d/php-fpm restart
MariaDB の起動とDBの作成
Tiny Core Linux での MariaDB は、起動はできるけれども停止も再起動もできない状況です。この辺はイマイチだと思うのですが仕方ないですね。
MariaDB の起動は以下のように行います。
$ sudo /usr/local/mysql/bin/mysqld 2>&1 > /dev/null &
MariaDB が起動したら、以下のように mysql コマンドで root ユーザーとしてログインします(パスワードなし)。そしてデータベースと権限の不要、テーブルの作成、データの投入まで一気に行ってしまいます。
$ mysql -u root MariaDB [(none)] > CREATE DATABASE TEST DEFAULT CHARACTER SET utf8; MariaDB [(none)]> GRANT ALL PRIVILEGES ON TEST.* TO "tc"@"localhost" IDENTIFIED BY "password"; MariaDB [(none)]> USE TEST; MariaDB [(TEST)]> CREATE TABLE USERS (ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(50) NOT NULL, PRIMARY KEY(id)); MariaDB [(TEST)]> INSERT INTO USERS (NAME) VALUES ('YAMADA HANAKO'); MariaDB [(TEST)]> INSERT INTO USERS (NAME) VALUES ('TANAKA TARO'); MariaDB [(TEST)]> exit;
PHP プログラムの作成
ここまで準備ができていれば、あとはプログラムを書くだけです。
以下のプログラムは、/var/www/html/db.php に作成する、USERS テーブルの内容を全件ブラウザに出力するものです(PDO)。
<h1>connect db</h1> <?php try { //データベス接続方法を定義。ユーザー名が"tc"でパスワードが"password"。 $dbh = new PDO("mysql:host=localhost;dabname=TEST;charset=utf8","tc","password"); //エラー発生時に例外をスローするようにする。 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //SQLを実行する。 $stmd = $dbh->query("SELECT * FROM USERS;"); //テーブルの内容を出力する。 while ($row = $stmd->fetch(PDO::FETCH_ASSOC)) { echo $row["ID"] . ":" . $row["NAME"] . "<br>"; } //データベースとの接続を閉じる。 $dbh = null; } catch (PDOExcelption $e) { echo $->getMessage(); } ?>
このプログラムにブラウザからアクセスすると、以下のようにテーブルの内容が出力されているので OK ですね。
バックアップの設定
Tiny Core Linux はバックアップの定義を行っていないとシャットダウン時に消えてしまうので、設定が消えないよう設定を追加します。
$ cd /opt
$ sudo vi .filetool.lst
追加内容は以下のようになります。
usr/lib usr/local/mysql/data usr/local/share/mariadb/my.cnf
なお、シャットダウンおよび再起動時は、[Exit]より実行しないとバックアップが行われず、設定、データもろもろ消えますのでご注意ください。
OS 起動時に MariaDB を起動
OS 起動時に MariaDB を起動させるには以下のように行います。
$ cd /opt
$ sudo vi bootlocal.sh
MariaDB を起動する命令を追記します。
sudo /usr/local/mysql/bin/mysqld 2>&1 > /dev/null &
おわりに
相変わらず記事にすると簡単そうに見えますが、実際はかなりの時間がかかっています。Tiny Core Linux の情報自体が少ないですからね。
この記事で、Web アプリケーションを作成する内容はカバーできたと思います。
ですので、Tiny Core Linux シリーズ?は完結です。機会があればまた書くこともあるかもしれませんが。
この一連の記事がみなさんのお役に立てば幸いです。