#はじめに
- SoftLayerのAPIを使ったアプリケーションの実装例を知りたい。
- SoftLayerのCustomer Portalではなく、自分達独自のサービスをインテグレーションさせたり、よりLook and Feelが優れたページを使ってSoftLayerを使いたい。
という方はたくさんいるのではないかと思います。今回は、https://github.com/softlayer/slick で公開されているPythonベースのslickというアプリケーションを、CentOS 7.xで動かしてみます。
注1. github上の導入手順ではUbuntu 14.04-64を使用するように指示されていますが、今回はCentOS 7.xを利用します。
注2. CentOS 6.xはPythonが2.6です。2.7にupgradeしないと警告がいたる所で出るので、CentOS 7.xの方が導入し易いです。(CentOS 6.xのPythonのバージョンを上げたらよいのですがだけなのですが、それを書くだけでスペース使いそうなので。。。)
#導入パッケージの紹介
- Flask: Pythonベースの軽量なウェブアプリケーションフレームワーク。
- WTForms: ユーザー入力用フォームを定義したり送信されたフォームの処理を簡単する為のパッケージ。
- sqlite: 軽量データベース。「今すぐSQLite入門。知っておくべきたった5つのこと」とかの説明が分かりやすい。github上の導入ガイドによるとsqlite3を入れるように書かれてありますが、CentOS 7.xには最初から入っています。パッケージ名もsqliteで良いです。
- libpq-dev: CentOSには存在しないようなので、postgresql-develで代用するらしいです。http://www.faqoverflow.com/serverfault/316703.html
- gcc: 導入時のコンパイルにgccが使われているので入れておきます。
#導入
#環境確認
[root@sltest01 ~]# cat /etc/redhat-release
CentOS Linux release 7.0.1406 (Core)
[root@sltest01 ~]# python -V
Python 2.7.5
#yumによるパッケージの導入
[root@sltest01 ~]# yum install postgresql-devel sqlite git gcc python-devel python-setuptools
#pipによるパッケージの導入
[root@sltest01 ~]# easy_install pip
[root@sltest01 ~]# pip install WTForms wtforms-html5 WTForms-Components
[root@sltest01 ~]# pip install flask
[root@sltest01 ~]# pip install six --upgrade
#slickの導入。なお、python setup.py install実施時に、もしSoftLayerのPython-Clientが未導入であれば導入してくれる。既に導入済みの場合は、github上の最新版ではなく、release版を利用すること。
[root@sltest01 ~]# cd /usr/local/
[root@sltest01 local]# git clone https://github.com/softlayer/slick.git
[root@sltest01 local]# cd slick
[root@sltest01 slick]# python setup.py install
#Databaseのセットアップ
[root@sltest01 slick]# alembic upgrade head
#Configの修正
[root@sltest01 slick]# cp -p config.py.sample config.py
[root@sltest01 slick]# vi config.py
(SECRET_KEYとOTP_SECRETに適当な値を入れる)
[root@sltest01 slick]# sdiff -s config.py config.py.sample
SECRET_KEY = 'zaq12wsx' # Set this to something random | SECRET_KEY = '' # Set this to something random
OTP_SECRET = 'xsw23edc' # Set this to something else random | OTP_SECRET = '' # Set this to something else random
#環境変数の設定
[root@sltest01 slick]# vi ~/.bashrc
(export SLICK_CONFIG_FILE=/usr/local/slick/config.py を追記)
[root@sltest01 slick]# tail -1 ~/.bashrc
export SLICK_CONFIG_FILE=/usr/local/slick/config.py
[root@sltest01 slick]# . ~/.bashrc
[root@sltest01 slick]# env |grep SLICK_CONFIG_FILE
SLICK_CONFIG_FILE=/usr/local/slick/config.py
#サービス起動
[root@sltest01 slick]# python run.py
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
(停止したいときは、Ctrl +C)
ポート確認
[root@sltest01 ~]# ss -antup | grep -e State -e ":5000 "
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:5000 *:* users:(("python",10315,3))
#実際にブラウザでアクセスしてみる
http://<IP Address>:5000にアクセスしてみて下さい。
#終わりに
いかがでしたでしょうか?SoftLayerのAPIを使えば、こんなこともできるんですね。