2018/08/07

超軽量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 ですね。

pic01

バックアップの設定

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

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

参考サイト


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。なんちゃってSE。

    フリーウェア、Webサービス開発のためにEntyで支援を受け付けています。ご支援のほどよろしくお願いいたします。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ
    >>ブログ詳細

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから


最近の記事