2017年8月11日金曜日

XREA 上に Django 環境を構築

 7年ぶりに XREA 上に Django 環境を構築したので、基本的な内容のメモ。ここまでたどり着くので4日ほどかかった T T。

 ただし使ったのは cgi。軽いページの応答に、短い場合で 500ms 、長い場合でも1秒弱なので使えないことはないのだけれど、時間ができたら fastCGI に挑戦したい。

----
 google で XREA + Django で検索すると 2008年とかの情報が最初の方にでてきて、このブログの2010年の記事でもまだ新しい方。

 7年前に自分で立ち上げた XREA + Django のサイトはすでに動いていないし、長い間にサーバー設定もいろいろ変わったようで、古い記事はあまり役に立たず。

 作業中、公式サポートに 'AddHandler cgi-script-debug .py って動かないんですか?' と聞いたら、'弊社のサーバーはpython のデバッグモードには対応しておりません。' と言われてしまった ><。2010年ころには使えてたのに...

 ということで、何度も心を折られながらようやくたどり着いた成果がこれ。

----
作業日 2017/08/07 - 2017/08/10
サーバー XREA Plus(2017年の大規模マイグレーション済み)
環境
 サーバー設定
  Python 2.7.5(default で入っているもの・python --version で確認)
 
 インストールしたもの
  Django 1.11.4
----

  • コマンドラインから以下を実行して、Django をインストール。オプション '--user' が重要('--user' オプションは 'pip --help' でも出てこないのだが...)
$ pip install Django --user
  • Python のローカル環境にパスを通す設定を追加するために  ~/.bash_profile を作成。内容は以下の1行
PATH="$HOME/.local/bin:$PATH"
  •   ターミナルを再起動して、上記設定を有効に
  •   Python project を作成するために以下を実行
$ cd ~/
$ django-admin.py startproject mybook
  •  ./public_html に .htaccess を作成し、以下の1行を書き込む
AddHandler cgi-script .py
  • public_html に PEP-0333.mod.py を作成、内容は こちら
  • Django project のインストール環境に合わせて、PEP-0333.mod.py の後ろの方にある
    • sys.path.append() の引数を変更
      sys.path.append("/virtual/アカウント名/django/projs/Django/static")
    • os.environ['DJANGO_SETTINGS_MODULE'] の設定値を変更
      os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
  • カレントディレクトリを ~/public_html に移動
$ cd ~/public_html
  • PEP-0333.mod.py のパーミッションを変更
$ chmod 766 PEP-0333.mod.py
  • ここまでうまくいっているか確認
    $ ./PEP-0333.mod.py
    上記一行を実行すると、エラーが発生しメッセージが何行か表示される。最後の2行が以下になっていることを確認する

    > self.method = environ['REQUEST_METHOD'].upper()
    > KeyError: u'REQUEST_METHOD'
  • ここまできたら、ブラウザから
    アカウント名.sXXX.xrea.com/PEP-0333.mod.py
    を開き、以下のエラーが表示されることを確認

  • エラーメッセージに従って ALLOWED_HOSTS を修正
  • $ vi ~/Django/mysite/mysite/settings.py
    で settings.py を開き、
    ALLOWED_HOSTS = []

    ALLOWED_HOSTS = ['アカウント名.sXXX.xrea.com']
    に修正
  • ブラウザから、
    アカウント名.sXXX.xrea.com/PEP-0333.mod.py
    を再読み込みして以下の表示が出ることを確認。



----
ここまでくれば、あとは他の情報をつなぎ合わせてやっていけるはず。

0 件のコメント:

コメントを投稿