share facebook facebook2 twitter menu hatena pocket slack

2014.10.28 TUE

続:ブロック図生成ツール blockdiagを導入してみました

橋本 満

WRITTEN BY 橋本 満

cloudpack橋本です。

■はじめに

前回、CentOS6.5にブロック図生成ツールblockdiagを導入しました。

今回は、webサーバ経由で利用した際のTipsを記載します。

■前提

※前提1: webサーバはapache
※前提2: apacheよりphpが使える状態となっていること

■概要

  • スクリプト上にblockdiagコマンドを定義した場合、「apache」ユーザ/グループで実行されることを考慮
  • ブロック図生成先にapacheユーザ or グループの書き込み権限を付与する必要あり
  • blockdiagコマンド実行時、apacheユーザで実行されるため明示的にフォントを指定する必要あり

■出力先ディレクトリ

デフォルトのdocumentrootより

# mkdir /var/www/html/data
# chown .apache /var/www/html/data

■サンプルスクリプト

# vi /var/www/html/index.php
--------------------
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>BlockDiag Online</h1>
<form action='index.php' method='post'>
<textarea name='text' cols='120' rows='20'>
blockdiag admin {
   // Set M17N text using label property.
   A [label = "起"];
   B [label = "承"];
   C [label = "転"];
   D [label = "結"];

   A -> B -> C -> D;

   // Use M17N text directly (need to quote).
   春 -> 夏 -> 秋 -> 冬;

   // Use M17N text including symbol characters (need to quote).
   "春は 曙" -> "夏 = 夜" -> "秋.夕暮れ" -> "冬 & つとめて";
}
</textarea>
<hr />
<input type='submit' value='変換' />
</form>

<?php
  if (isset($_POST['text'])){
    // パスなどを定義
    $dir = "data/";
    $font = "/usr/share/fonts/ipa-gothic/ipag.ttf";
    $filename = sprintf("svg%04d",mt_rand(0,9999));
    $fd = sprintf("./{$dir}%s.diag",$filename);
    $ff = sprintf("./{$dir}%s.svg" ,$filename);
    $text = $_POST['text'];

    // block図を作成
    file_put_contents($fd,$text);

    // blockdiagコマンド実行
    $command = sprintf("blockdiag -f {$font} -Tsvg %s",$ft);
    $Err = `$command`;
    printf("command: %s<br />",$command);
    print "<hr />";

    if (file_exists($ff)) {
      echo "$ff が存在します<br />";
      printf("ff: %s<br />",$ff);
      print "<img src="{$ff}" />";
    } else {
      echo "<span style='color:#ff0000;'>$ff は存在しません。生成に失敗しているようです<br />";
      echo "成功すると以下のようなSVGファイルが生成されます</span><br />";
      print "<img src="/cp_root/nippon.svg" />";
    }
  }
?>
</body>
</html>
実行権限付与
# chmod 755 /var/www/html/index.php

■ブラウザより実行

http://example.com/index.php

[続編] blockdiag 導入: ブラウザより実行結果


▽変換結果

[続編] blockdiag 導入: 変換結果

■生成ファイルを確認

# ls -l /var/www/html/data/svg5038.svg
-rw-r--r-- 1 apache apache 7465 10月  8 20:04 2014 /var/www/html/data/svg5038.svg

少しは実際の利用用途に役立つ内容になったかと思います。

以上になります。

元記事はこちらです。
Apache – 続:ブロック図生成ツール blockdiagを導入してみました

橋本 満

橋本 満

後輩、歳下、業務内容の違いなど関係なく、見習うべきところは見習う貪欲系エンジニア。技術志向だけの理系脳ではなく、顧客とのコミュニケーションを大事にすることも心掛けています。あと、ON/OFF(Dancin')大事にしています。