ブログ版ろーだいねっと

blog.roudai.net

ルービックキューブ

ルービックキューブ画像作成アプリVisualCubeをインストールして自前で動かす

投稿日:

AlgDb.Netでも利用されている定番のルービックキューブ画像生成ツール、VisualCubeを自サーバーに導入して動かす方法についてまとめます。
自サーバーで動かすことで、元サイトのサーバーに負荷をかけなくてすむので、思いっきり大量の画像を表示できます。
(AlgDbもかつては直接元サイトを参照していましたが、何度かサーバーを落としてしまうことがあったので今は自前のサーバーで運用しているようです)
roudai.netはひとつひとつ画像を作成後保存して使用してますが、ぼちぼちと直接表示に移行しようかなと。

動作環境

OS : CentOS 7.2
PHP : 7.0.9
MariaDB : 5.5.50
その他 : ImageMagick (http://www.imagmagick.org/script/index.php)

ツールが作成されたのが約7年前とかなり昔なので、PHPは5.4くらいのバージョンでも問題なく動くと思います。
ImageMagickについても同様の理由により、特にバージョンは気にせず普通にyumでインストールを行いました。

yum install ImageMagick

またデータベースにはMariaDBを使っていますが、もちろんMySQLでなんの問題もないと思います。

ソースの取得

ソースコードは、GitHubで公開されています。
https://github.com/Cride5/visualcube

gitがインストールされている場合は、インストールフォルダに移動したうえでcloneをすることで簡単にファイルを取得できます。

git clone https://github.com/Cride5/visualcube.git

または、Clone or download → Download ZIPよりダウンロードしたうえで、サーバーへアップロードします。

データベースの作成

データベースの利用は必須ではありませんが、自動的にキャッシュを行ってくれるため、一度表示した画像を2回目以降爆速で表示できるようになります。
最初に言ったようなホームページ内で大量の画像を表示するといった用途で使う場合、必ず利用したほうが良いでしょう。

ここでは、下記の条件でデータベースを作成したとします。

ユーザー名:visual_user
パスワード:visual_pass
データベース:visualcube

そして作成したデータベースに、キャッシュ用のテーブルを作成します。
ダウンロードしたファイルにテーブル作成用のSQL(db_schema.sql)がありますので、それを実行します。

mysql -u visual_user -pvisual_pass visualcube < db_schema.sql

コンフィグファイルの設定

コンフィグファイル(visualcube_config.php)の設定を行います。前半は特に修正する必要はないので、修正するのはデータベース関連の設定のみです。

修正前

// Whether image caching is enabled. NOTE: if enabled a cron
// job will need to be set up to prune the database
$ENABLE_CACHE = false;
// Database Configuration (for image caching)
$DB_HOST="localhost";
$DB_NAME="DATABASE_NAME";
$DB_USERNAME="DATABASE_USERNAME";
$DB_PASSWORD="DATABASE_PASSWORD";
// Maximum size of image to be cached
$CACHE_IMG_SIZE_LIMIT = 10000; // 10Kb

修正後

// Whether image caching is enabled. NOTE: if enabled a cron
// job will need to be set up to prune the database
$ENABLE_CACHE = true;
// Database Configuration (for image caching)
$DB_HOST="localhost";
$DB_NAME="visualcube";
$DB_USERNAME="visual_user";
$DB_PASSWORD="visual_pass";
// Maximum size of image to be cached
$CACHE_IMG_SIZE_LIMIT = 10000; // 10Kb

キャッシュのリフレッシュ設定

新しい画像が作成される度にキャッシュが蓄積されていくので、一週間に一度程度キャッシュをリフレッシュします。
ずっと同じ画像しか出力しないのでキャッシュは増えないという場合は、この設定は必要ありません。

キャッシュリフレッシュ用のシェルスクリプト(visualcube_dbprune.sh)を編集します。

修正前

# Prune database by removing all entries which have been accessed less than 1 times
mysql -u DB_USER --safe-updates=0 --password="DB_PASS" DB_NAME -e
"DELETE FROM vcache WHERE rcount < 1"

# Reset all existing entrys to 0
mysql -u DB_USER --safe-updates=0 --password="DB_PASS" DB_NAME -e
"UPDATE vcache SET rcount=0"

修正後

# Prune database by removing all entries which have been accessed less than 1 times
mysql -u visual_user --safe-updates=0 --password="visual_pass" visualcube -e
"DELETE FROM vcache WHERE rcount < 1"

# Reset all existing entrys to 0
mysql -u visual_user --safe-updates=0 --password="visual_pass" visualcube -e
"UPDATE vcache SET rcount=0"

そしてこのシェルスクリプトを"crontab -e"等を用いてcronに登録し、定期的に実行します。
この例では、"/path/to"にシェルスクリプトファイルを置き、毎週月曜日の午前4時に実行する場合の設定です。

00 4 * * Mon /path/to/visualcube_dbprune.sh "Prune visualcube image cache"

動作確認

実際に自サーバーにインストールしたものがこれです。

http://roudai.net/visualcube/visualcube.php

(当たり前ですが)元のサイトと見た目は丸っきり同じです。
以前作成した、VisualCubeをGUIで操作するVisualCube Editorの画像作成元も自サーバーのものにしました。

http://roudai.net/visualcube/

なにか適当な画像を出力したあとにもう一度Submitを押すなどして同じ画像を再度表示した際に、キャッシュから読み込んで一瞬で表示されるのが分かるかと思います。

これから自分の解法サイトなんかを作ろうと思っている方は、参考にしてみてください。

ad




ad




-ルービックキューブ

Copyright© blog.roudai.net , 2017 AllRights Reserved Powered by STINGER.