こんにちは。
OpenCVを使ったDjangoAPIを作成して、独自ドメインで公開という事をしたくなりました。思い立ってから1週間、呪われた1週間でした。色々試してようやくやりたい事が実現出来た「今」残しておかないと、忘れるっ。すぐ忘れるっ。
プランA: XServer → 失敗(OpenCVの処理で OutOfMemoryError)
プランB: GCP + NginX + Uwsgi → 失敗(サブディレクトリで404解消できず…マジで?なんで?)
プランC: GCP + Apache + mod-wsgi → やっと成功!
プランAの「OutOfMemoryError」は仕方ない。。レンタルサーバーやもん。メモリ使いすぎちゃったよね。私が悪かった。。でもプランBの NginX + Uwsgiよ!初めて使いました。今キテるらしいので使ってみたかったんだよ~。というか、どこかのブログでNginXはエンジンエックス、Uwsgiはウィスキーと読むことについて、するどく突っ込んでたブログがあって、めっちゃ笑いました。ほんと読めないよ(笑)ドメイントップはいけるんですけどね、サブディレクトリを認識してくれないんですよ。こんな事あるんですかね。。結構そういう質問を英語サイトで見て、みんな同じ悩み抱えてるんだなぁって思ったけど、解決できんかったよー。
というわけで、プランCの設定方法を忘れないように残しておきます。
前提
・GCPでプロジェクト作成済み

Ubuntu18.04LTS(GCP)にWindowsリモートデスクトップ接続
・Ubuntu18.04(GCP)にOpenCV他インストール済み この記事が下書きで止まってたっ。殆ど以下と同じ。違うのはOpenCVはソースからコンパイルしたくらい。 Python3.6 OpenCV3.4.4 がインストールされています。

RaspberryPiにOpenCVをインストール
・独自ドメイン取得済み
・GCPで独自ドメイン設定済み これも今度記事書こう。。
①Apacheインストール
Apache + mod-wsgiをインストールしていきます。簡単です。
|
|
Apache2.4.29がインストールされました。
②仮想環境にDjangoインストール
仮想環境をvirtualenvで作成しています。ここにDjangoを入れていきます。
|
|
|
|
django3.0.6がインストールされました。requestsはWebAPIとのインターフェースを簡単にしてくれるパッケージなので、インストールしましたが、とりあえずAPIはいいよ、っていう人はインストール不要です。※この記事ではAPIの内容については触れていません。
③Djangoプロジェクト作成
|
|
以下のような構成で出来上がりました。
|
|
④いきなり公開(Djangoプロジェクト側設定)
Djangoプロジェクトはプログラム何もせずに、いきなり公開したいと思います。この前にlocalhostでもしたけど、割愛します。 ドキュメントルート(/var/www/html)を公開用として、Djangoプロジェクトのシンボリックリンクを貼ります。勿論ドキュメントルート(/var/www/html)に直接、Djangoプロジェクトを置いても構いません。
Djangoプロジェクトの「wsgi.py」を以下のようにします。
|
|
次に「settings.py」を以下にします。
|
|
本当はドメイン名を入れた方がいいですが、とりあえずこれで。 同じく「settings.py」に以下選択行の箇所を追加します。
|
|
⑤いきなり公開(Apache側設定)
今度はApacheの設定をします。
設定ファイルの置き場所に移動します。000-default.confというファイルがあるので、それをコピーして使います。
|
|
django.confを編集します。お好きなエディタで。私はVimでご紹介します。
|
|
挿入モードにします。「a」を入力してください。
以下にします。
|
|
Escキーで挿入モードを抜けて、「:wq」で保存してファイルを閉じます。
⑤いきなり公開(設定読込み)
さぁあと少しです。うまくいくでしょうか。ドキドキですね。 Apache設定ファイルを一度無効にしてから、設定したいものを有効にしてApache再起動します。
|
|
ブラウザを立ち上げでURLを入力します。つながりましたでしょうか。
おまけ エラーやんけ…
そんな人向けに(笑)いや、自分用に。
Apacheの状態を確認しましょう。
|
|
Apache設定ファイルに不備がないか確認しましょう。
|
|
エラーログを確認しましょう。
|
|
Djangoのwsgi.pyはパーミッション755に設定しましょう。
|
|