ずっとメイン PC でスクレイピングさせていたのですが、音が気になって睡眠の質がめちゃくちゃ悪化しました。
ようやくサーバー上で稼働するように変更しようと腰をあげました。
開発言語 | python3.7 |
パッケージ管理 | pipenv |
herokuプラン | Free |
OS | Windows10 pro 64bit |
Heroku は PaaS の一つです。今回 Heroku を選んだのは、小さく始めるのに最適だったというのが一つです。Heroku には無料プランがあり、無料プランでもクレジットカードを登録すれば、1月あたり1000時間の稼働時間を確保できることです。ひと月は744時間なので、1つのアプリだけなら24時間稼働が可能です。
他のアプリも制作するようになれば、AWS を利用していきたいとは思いますが、まだ早いといいますか。
【宣伝】 10月20日(土)の10時から、福山 IT 座談会を行います。
近隣の方、ご興味があればぜひconnpass ページより申し込みの方お願いいたします。
前回レポートはこちら。
Heroku の登録
登録も無料です。料金プランはいろいろありますが、今回は前述した通り無料プランを選択。
Herokuから登録してみましょう。日本語なので、わかりやすいですね。
登録が終わるとメールがくるので、認証しておいてください。
チュートリアルをする
緊急性がない場合は、チュートリアルをして実際に設定から稼働までを体験した方が感覚がつかめると思います。特に、Heroku 上でアプリを稼働させる場合までのチュートリアルが言語ごとに提供されているので、余裕のある方はそちらをやることをお勧めします。
Dev Centerにアクセスしてもらって、任意の言語のアイコンをクリックするとドキュメント及びチュートリアルページが表示されると思います。
python のドキュメントページだと、
赤い四角の部分をおすとチュートリアルがはじまります。
パッケージインストール
チュートリアルは割愛しますが、いくつかパッケージをインストールする必要があります。
今回は python を使っているので、python をインストール。
Heroku は Git 必須ですので、Git の導入がまだの方はこちらから。
それから Heroku Command Line Interfaceを windows の場合は、インストーラーで導入します。macOS の場合は、
$ brew install heroku/brew/heroku
でインストールできます。
ログイン等
パッケージを導入できるとコマンドライン上から heroku コマンドが実行できるようになっているはずです。
早速 heroku login でログインしてみましょう。
heroku login
Enter your Heroku credentials.
Email: user@example.com
Password
次に、heroku 上にアプリケーションを作ります。
cd dev
heroku create fukushidb
先に開発用のルートフォルダに移動します。
これは heroku create をすることで自動的に heroku create した先が heroku のリモートリポジトリとして登録されるためです。
fukushidb はアプリ名ですが、入力が無い場合は自動でアプリ名が設定されます。
このアプリ名は後から変更可能です。
push する前に準備
① ドライバーの変更
※chromedriver でスクレイピングをしない方はスキップ
ローカルでは chromedriver の存在するパスを明示していたと思いますが、heroku 上でも稼働させる場合、そうではなく、heroku 上の Buildpacks を利用することになります。
そのため、selenium を起動する際のコード本文は以下のように変更します。
options = Options()
# 追加
options.binary_location = '/app/.apt/usr/bin/google-chrome'
options.add_argument('--headless')
# コメントアウト
# browser = webdriver.Chrome(executable_path=r'D:\Program\chromedriver.exe', chrome_options=options)
browser = webdriver.Chrome(chrome_options=options)
それと、heroku 側にもブラウザの場所を教えておきます。
app の setting 内の Buildpacks に以下の2つを追記します。
https://github.com/heroku/heroku-buildpack-google-chrome.git
② パッケージの移行
インストールしてあるパッケージの依存関係については、パッケージ管理ツール、python では Pipenv を使用することで本番環境へスムーズにデプロイすることができます。
pipenv install
これで Pipfile, Pipfile.lock ファイルが生成される。
初期ファイルには selenium が含まれていなかったので、以下のコマンドで追加する。
``
pipenv install selenium
他のパッケージも同様に pipenv install [package]でインストールすることで、Pipfile に追記していける。
③ ファイルの作成
・Procfile について
登録したいコマンドを登録する
``
hoge: python fuga.py
・日本語フォントについて
heroku は日本語フォントに対応していないので、ルートディレクトリ内に.font ディレクトリを用意することで、ディレクトリ内のフォントを使用してもらうことができる。
今回は、IPAex フォントを使用する。.font ディレクトリに.ttf ファイルを入れて終わり。
push!
git push heroku master
で push しましょう。
起動する
heroku ps:scale hoge=1
heroku 上の Procfile に書いてある hoge をワーク1として実行します。
おまけ ログを見る
app メニュー内に Viewlog があります。
こちらに print 等で記載されているものについては閲覧することができます。