エックスサーバにDjango+Pythonのデプロイが上手くできない話(未解決)

Django のデプロイで試行錯誤中

少し前に作ったDjango のアプリを公開したくて、週末から数日間試行錯誤しています。

Djangoとは、Python でWeb アプリケーションを作るためのフレームワークです。

このPython のプログラムを公開するためには、レンタルサーバーに設定を施し、サーバーへのリクエストに対して、Web アプリケーションが動作して結果を返すようにしなければなりません。

その、公開の為の作業を「デプロイ」と呼びますが、ハマっているのが、このデプロイ。

 

追記(2019/02/11):

以下の記事の内容、解決しました!

関連記事: エックスサーバでDjango+Pythonのデプロイを解決!原因はnumpyだった。

レンタルサーバーはエックスサーバー

私がデプロイしようとしている先のレンタルサーバーは、エックスサーバーというサービスです。

このブログもエックスサーバーで動作しています。ブログのシステムは、WordPressというアプリケーションです。WordPressはブログのシステムとしてはあまりにも有名。プログラム言語PHP で書かれたものです。

ブログを書く目的で、エックスサーバーを借りてWordPressを使う人が多いのでしょう。

エックスサーバーには、このWordPressをかんたんに「デプロイ」してくれるメニューが用意されています。

なので、いちいち設定に迷う必要はありません。

そんな、PHP 専用、WordPress専用、とも言えるエックスサーバーに、私はPythonの自作プログラムをデプロイしようとしている、という訳です。

 

情報不足と知識不足と時代変化に悩む

エックスサーバーにPython アプリのデプロイ。なかなか思うようにできません。

エックスサーバーのPythonの情報が少ない

そもそも、エックスサーバーでDjangoを動かそうという人が少ないのかも。

こちらの情報をもとにちょっとやってみました。

 

エックスサーバーでDjangoのWebアプリを公開する方法について

 

一応、簡単なPythonのプログラムならCGIで動作することは確認できました。

でも、Djangoを動かそうとすると、どこかでプログラムが止まってしまうとようです

ブラウザにはサーバーの内部エラーのメッセージが出ます。

そして、サーバーのエラーログには、以下の文章が残っています。

End of script output before headers: index.cgi

 

Django のスクリプトが全く動かないのかと言うと、そんな事はないのです。

 

と言うとのも、Django のsettings.py のALLOWED_HOSTSに実行するマシンのホスト名を入れていないと、エラーメッセージがブラウザの画面に表示されるのです。これは正に、Django のコールスタックなのです。

同じCGIのDjangoのindex.cgiを適切な環境変数を設定したターミナル、コマンドラインで、実行すると、ちゃんとトップページのHTMLが出力されるのです。

結論としては、Djangoのプログラムのどこかで止まってしまっているようだ、ということ。

ちなみに、.htaccessファイルの中身はこんな感じ。

そして、index.cgiは、こんな感じ。(XXXXは自分のhome directory, YYYYはsub-directoryの名前、projectは私の開発中のアプリの名前)

上記は正しく動作しない設定なので、ご注意を!間違いのご指摘、歓迎いたします。

CGIとFCGIの区別がつかない

私は自身、Apacheの設定の知識が足りないのでエックスサーバーのApacheの設定がどうなっているの想像ができません。そこはエックスサーバのホスト側の設定になりますので、お客さんである私は知り得ないのです。

 

これも、何を試すべきかわからない理由かと思います。

CGIはプロセスを毎回立ち上げる。でも、FCGIは、プロセスを使いまわす。そういう違いは分かっているつもりなのです。

でも、じぁ、プログラムってどう書いておけばいいのでしょう??というのも分かってないのです。

Djangoのバージョン違いにより随やり方が違う??

しかも、このDjangoというフレームワークがバージョンにより、CGIとかFCGIとか、その辺のサポートが変更になっている、というのも曲者。

CGIなら、こう、とか、FCGIならこう、というのがバージョンの切り替わりで変更になっています。

ネットで情報を探すものの、どのバージョンでうまく行ったのかが分からず、私の環境に適用可能なのかどうかの判断が難しいのです。

最近のバージョンのDjangoでは、wsgiという仕組みが標準?のようなのです。

 

ところが、それをApacheで使うための、mod_wsgi というモジュールがエックスサーバーにインストール出来ない

私の環境はvirtual envでpip を使うのですが、Apacheインストール状況によりpip install が失敗します。(以下がその時のログ)

 

 

ちなみに、virtual envにインストールされているのは以下のようなものです。

 

と言う訳で、週末を潰して作業したものの未だに解決出来ていないのです。

どなたかわかりませんか〜??

あなたへのおすすめ


コメントを残す

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。