あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

超軽量Tiny Core Linuxでnginx+PHP7+MariaDBを動作させる

はじめに

いままでの記事の内容で、超軽量のTiny Core Linux で、nginx と PHP7を動作させることができるようになりました。なお、超軽量というのは、ISOイメージサイズが最小で11MBというところから来ています。

この記事では、データベースとして 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 ですね。

f:id:fnyablog:20180908114913j:plain

バックアップの設定

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 シリーズ?は完結です。機会があればまた書くこともあるかもしれませんが。

この一連の記事がみなさんのお役に立てば幸いです。

参考サイト