2013年10月13日日曜日

FlaskとHighcharts 3.0でグラフを描く

FaskからJSON形式でブラウザに送り、Highcharts 3.0でグラフとして表示するサンプルです。
作業メモなので、気が向いたら補足説明を入れるかも。。

例によって参考は下記です。

highcharts 「Preprocesssing data from a file」

フォルダ構成とその中身は下記の通りです。

HTML
<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script src="http://code..com/highcharts.js"></script>
    <script>
     $(document).ready(function() {

    var options = {
        chart: {
            renderTo: 'container',
            type: 'spline'
        },
        series: [{}]
    };

    $.getJSON('/data.json', function(data) {
        options.series[0] = data;
        var chart = new Highcharts.Chart(options);
    });

});
    </script>
</head>
<body>
<h1>{{ title }}</h1>
<div id="container" style="width:100%; height:400px;"></div>
</body>
</html>


Pythonファイル
# -*- coding: utf-8 -*-

from flask import Flask, jsonify
import random
from flask.templating import render_template

app = Flask(__name__)


@app.route('/data.json')
def data():
    list = []
    for i in range(1000):
        list.append([i, random.randint(0, 500)])
    return jsonify(data=list)

@app.route('/')
def index():
    return render_template("graph.html", title=u"グラフテスト")

if __name__ == '__main__':
    app.run(debug=True)




2013年6月30日日曜日

mod_wsgiのインストール

今はNginxでHTTPサーバとして使っていますが,その前に王道Apacheを使っていたときのメモが出てきたので,メモ...

Apache 2.4をCentOS 6.4へ自己コンパイルで入れた物なので,yumから入れると"apxs"のパスが違うかも...

1.ソースをダウンロードする(そのときの安定版)
   $ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz

2.解凍してインストール
   $ tar -zxvf  mod_wsgi-3.4.tar.gz
   $ ./configure --with-apxs=/usr/local/apache2/bin/apxs
   $ make
   $ sudo make install

3.mod_wsgiをApacheのComfに設定する.
    $ sudo nano /usr/local/apache2/conf/httpd.conf
     LoadModuleが大量に記載されている箇所があるので,その最下部にあたりに,下記を記載します.
            LoadModule wsgi_module modules/mod_wsgi.so を追加

4.Apacheの設定ファイルの反映
   $ sudo service httpd reload

2013年4月4日木曜日

superviserでとりあえずデーモン化 その1

Supervisorをインストールすると,比較的お気軽になんでもデーモン化できます.

インストール方法は以下のとおり.

$ sudo pip install supervisor


CentOSでsupervisorが起動時に自動起動できるように,スクリプトを作成します.

$ sudo nano /etc/init.d/supervisord


#!/bin/sh
#
# description: supervisord - this script starts and stops the supervisord daemon
#
# chkconfig: 345 99 01
#
# processname:  supervisord
# daemon: supervisord
# config: /etc/supervisord.conf

# import functions
. /etc/rc.d/init.d/functions

RETVAL=0
pythonpath=/usr/local/python27/bin/python
superviserd=/usr/local/python27/bin/supervisord
superviserctl=/usr/local/python27/bin/supervisorctl
configfile=/etc/supervisord.conf
prog=supervisord
pidfile=/var/run/supervisor/supervisord.pid
lockfile=/var/lock/subsys/supervisord

start() {
    echo -n $"Starting $prog: "
    if [ -e $pidfile ]; then
        echo $( passed )
        return 1
    fi
    # Start supervisord whith python path
    daemon $pythonpath $superviserd -c $configfile --pidfile $pidfile
    RETVAL=$?
    echo
    # if succsesed to run supervisord,  do this.
    if [ $RETVAL=0 ]; then
        # show status
        $pythonpath $superviserctl -c $configfile status
        #  created the PIDFILE
        touch $lockfile
     fi
     echo
     return $RETVAL
}

stop() {
    echo -n $"Stopping $prog: "
    # kill supervisord
    killproc -p $pidfile $supervisord  -c $configfile -QUIT
    RETVAL=$?
    echo
    # remove lockfile
    [ $RETVAL -eq 0 ] && rm -f $lockfile
    return $RETVAL
}

restart() {
        stop
        start
}

reload () {
    echo -n $"Reloading $prog: "
    killproc -p $pidfile $supervisord -c $configfile -HUP
    RETVAL=$?
    echo
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    reload)
        reload
        ;;
    status)
        status -p ${pidfile} supervisord
        RETVAL=$?
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|reload}"
        exit 1
esac

exit $RETVAL

作成した起動スクリプトを動かしてみて,問題が無ければ時度起動するように設定します.
$ sudo service supervisord status
$ sudo service supervisord start
$ sudo chkconfig --add supervisord
$ sudo chkconfig supervisord on

これで,インストールは完了です.

Webから操作できるように設定する方は後日.