SummerEye part1 -環境構築-

本郷テックガレージの企画で「Web サービス開発短期集中プログラム」というものに参加しています。

目的は「月9万円ぐらい稼げるウェブサービスを作ろう」です。

寄付支援サイトもその一環で作っているのですが、明らかに稼げなさそうなのでサイドプロジェクトのサイドプロジェクトを走らせることにしました。

 

今回のSummerEyeは典型的なユーザの時間を削減することに貢献するパターンです。

 

概要

ネットサーフィンをしていて、ときめく動物の画像があったら保存します。

たまーに見返してときめきます。

 

よほど気力が余っていれば、ちゃんと動物種ごとにフォルダ分けして保存するのですが。

ご覧の有様です(新しいPCなのでまだコレクションが少ない方)。

 

なんとなく、フォルダ分けをしようと試みるものの、大抵はanimalフォルダに突っ込んでしまいます。

溜め込むのはそれでいいのですが、探すのが大変です。

 

ふと、「薪をくわえてるゴールデンレトリーバーの画像を見返したいな」と思った時、探せません。

ファイル名もほとんどは無意味な英数字の羅列なので検索ができません。困る。

 

というわけで今回作るウェブサービスは、

「画像をアップロードするといい感じの名前にリネームしてくれるやつ」です。

 

環境

今回こんな感じの環境です。

  • Azure VM D1 Standard
  • Ubuntu 16.04 LTS
  • Apache/2.4.18 (Ubuntu)
  • Python 3.5.1
  • django 1.11.5
  • DNS summereye.eastus.cloudapp.azure.com

 

構成

今回は自分で画像認識することが目的ではないので使えるものを使います。

雰囲気こんなイメージ。

  1. ウェブサイト上に画像を複数枚アップロードする
  2. Computer Vision APIを叩いてキャプションを取得
  3. キャプションでリネーム
  4. zipファイルにして返す

 

細かいところは追々考える。

 

Computer Vision API使うならウェブサーバもAzureに置くのが良い感じ。

CNN以来Azure触っていなかったので良い復習になるでしょう。

 

ウェブサイト、どうしましょうか。

将来的には少し拡張して、zipファイルダウンロードする前に確認画面を挟みたい。

機械で大まかにリネーム、人間が最終チェックして気に食わないファイル名は修正、みたいな感じにしたい。

 

djangoでいいんかなあとも思うけど。

 

とりあえず会員機能も決済機能もなしに作ってみる。

 

AzureにVirtual Machineを立てる

全然覚えていない。

ここら辺の過去記事を参考にします。

Azure + Tensorflow + Kerasで画像認識やってみた part1

 

割と飛ばしめで。

 

OS選択まで

Virtual Machineを選択、追加、Ubuntu 16.04 LTS選択。

適当に情報を入力。

 

インスタンス選択まで

AWSのt2.small相当のもので良いかな。

ぶっちゃけ料金表はわかりづらいので調べる。

 

わかりやすいとこ発見。

 

素直にD1シリーズの一番小さいの(D1 Standard)を選択します。クレジットは余っているし。

VM作成

頑張って作っています。

 

DNS設定

この動画を参考に適当な名前をつけてあげる。

 

SSH接続チェック。

適当にエイリアス作っておく。いつでも簡単SSH。

 

VM上でウェブサーバ起動

ここら辺参考に思い出しながら環境構築。

Django開発環境構築

 

Azureポータルでセキュリティグループを開く。

以下を参考に80番ポートを開く(あとで必要になるので8000番も開けて置く)。

 

Apacheいれて、起動&再起動時にスタートかかるように設定。

Centにすればよかったかな。apt-get慣れない。

apache以外にも後々pyenv installで必要となるものもインストール。

sudo apt-get update
sudo apt-get install apache2 apache2-dev
sudo apt-get install libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libsqlite3

 

適当にindex.htmlにHelloなんとかを記述。

VMのIPアドレスなりDNSなりをブラウザに入力。

表示された。

 

ローカルでdjangoプロジェクト開始

自分が残したメモを頼りにします。

メメントとか博士の愛した数式を思い出します。

 

久方ぶりにPyCharmを起動しました。

ファンが唸る。

 

 

VMでPython開発環境を整備

過去記事を参考にpyenv、Python、djangoをインストール。

Pythonはローカルとバージョンを合わせます。

 

pyenvインストール

cd /usr/local/bin
sudo git clone git://github.com/yyuu/pyenv.git ./pyenv
echo 'export PYENV_ROOT="/usr/local/bin/pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv --version
pyenv 1.1.3-36-g90ac836

 

Pythonインストール

pyenv install 3.5.1
pyenv global 3.5.1
python -V
Python 3.5.1

 

djangoインストール

pip install django
python -m django --version
1.11.5

 

その他インストール

pip install django PyMySQL mysqlclient
pip install -U cryptography

ローカルとちゃんと揃えました。

 

djangoプロジェクトをクローン

git使ってローカルのソースコードを持ってくる。

ここら辺のgitignoreをお借りします。

 

開発サーバで走らせてみると、エラー。

django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named '_sqlite3'

 

ググったらこれみたい。

そのうちsqlite使わないからいいんだけど。

pyenvでPythonを再インストールします。

一つ注意しなければいけないのは、django のデータベースに sqlite3 を使うつもりなら python をビルドする前に sqlite-devel をインストールしておかなければならないという事。

CentOSでnginx+uwsgi+djangoを試してみる – Debian GNU/Linux 3.1 on PowerMac G4

 

時間がかかりましたが解決。

 

python manage.py runserver 0.0.0.0:8000

と行きたいところですが、8000番ポートが空いていないのでAzureポータルに戻ります。

 

セキュリティグループで8000番を開けたらAzure VM上で再度開発サーバを起動。

これでとりあえず開発環境は整いました。

本番環境の構築にはmod_WSGIとApacheの連携をする必要があります。

これは一旦置いておきます。

 

次回

 

Computer Vision APIを試します。

以下参考。

 

本当にVMつけっぱで大丈夫か若干不安。

クレジット残ってるはず。。。

 

余談

名前がつけられていない画像ファイル

-> 「名前はまだ無い。」

-> 「吾輩は猫である。」

-> 夏目漱石

-> SummerEye

 

ダジャレです。

 

さらに余談。

吾輩は猫である」は著作権が切れているので青空文庫でフリーで読めます。

 

参考

コメントを残す