ネコっぽいのかを調べられるWebサイトを作りました。時間がなくてsafariではデザインが崩れてしまってます。明示的にHerokuでデプロイしていることを示したいので、リンクを貼らさせてもらいます。コメント、いいね大歓迎です。誤字や間違いは指摘していただけると助かります。前提ここではすでにアプリは完成していて、いまからデプロイするぞ!という方を前提にしています。デプロイをする上で、困ったことを紹介していきます。デプロイpushするまず、herokuのアプリケーションをherokuに登録しなければなりません。<アプリ名>で登録をすることができます。一応、うまく繋がっているか確認してください。(これはgitとも接続されているか確認できるので初心者の人は使ってください。-vそして以下のように出ればおっけいです。(push)そしたら次にClearDBを作っていきます。簡単にいうとheroku上のDBです。cleardb:igniteそしてherokuの環境変数を変更してください。DISABLE_COLLECTSTATIC=1ここでアプリ側の設定を変えなければなりません。wgsi.pyに以下に変更してください。Cling(get_wsgi_application())これで設定ができたので、pushすればデプロイできます。masterのときにURLがすでに表示されるのですが、開くには以下のコマンドが便利です。openまたマイグレーションが必要な方は以下のコマンドでしてください。migrateさらにシードデータがあるときはloaddataで入れることができます。DjangoではJSONによるシードデータを入れる方法と、.YAMLによるシードデータの入れ方があります。<シードデータファイル(JSONorYAML)>これで再起動すると正しく動くはずです。LanguageこれはDjangoをデプロイしようとしている人の多くが直面する問題です。原因ディフォルトでなんの言語を使うのかを指定していないことが問題です。herokuでは次のような言語がサポートされていて、簡単にいうとどの言語を使いますかという設定をしないといけない。今回はPythonを使います。解決策まず、pythonのバージョンをruntime.txtに書き込みます。runtime.txt次にローカルで使っているパッケージをherokuでも使いたいのでrequirement.txtに記載します。requirement.txtそしてpushすればリジェクトされないはずです。[ケース2]無料枠の落とし穴。原因herokuの無料枠では、30分間アクセスがなれけばスリープモードに入ってしまい、再起動が必要となります。毎20分ごとぐらいにherokuに自分でアクセスしてもいいのですが、これを自動化しましょう。デプロイしたWebサーバー自体が自分にアクセスするように組めばいいのです。'<アプリ名>/wgsi.pyに以下を追加してください。threading.Thread(target=awake)t.start()これによって自分にアクセスするようになるので、サーバーがスリープになるようなことはなくなります。[ケース3]変な名前のモジュールがない。_tkinker原因これはグラフを書くのによく使われるmatplotlibライブラリに含まれるmoduleであり、これがherokuでインストールされていないことが原因です。解決策まずサーバーにmatplotlibを使うことはおかしいです。<Matploblib>を削除すれば解決できます。[ケース4]ケース3の一般系。hogehoge原因とあるhogehogeモジュールがないといっています。これは抽象度が高いので、原因がいくつか考えられると思います。本当にそのモジュールがあるかを確認してください。定説ローカルで追加で開発をして、再度pushしたとします。ローカル環境で新しくpipで導入したことをherokuは知りません。requirement.pyを更新することが必要です。私は、いくつか家内サービスを運用しています。C...2018-12-23Concourseで継続的デリバリー。»プロフィール学生エンジニア。忘れてしまうので備忘録です。flaskでServerlessにホストするTelepresence概論スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。