一人もくもく会 α verでサービス開始しました。

さくらのレンタルスタンダードにdjangoを入れて公開

さくらの共用レンタルのスタンダードでのdjango公開方法のメモ。 環境としては下記の通り。

  • python3.5
  • django1.9.7
  • virtualenv
  • MySQL接続

python3.5のインストール

ネットで調べてインストール。 .cshrcを見ると下記を追記していた。

  • pathにpython/binフォルダの追加
  • setenv PTYHON にpython/libフォルダの指定

仮想環境

作成(非公開フォルダで良い)と切り替え

virtualenv myenv
cd myenv
source bin/activate.csh

抜けるときはdeactivate

django & MySQL関連のインストール

pip install django==1.9.7
pip install PyMySQL
pip install mysqlclient

manage.pyに下記追加

import pymysql
pymysql.install_as_MySQLdb()

あとはcreatesuperuser等。 詳しくは分からないがPyMySQLとmysqlclient両方を追加しないと上手くいかなかった。

公開

公開フォルダにはdjango.cgiを設置するのだが、python3で動作するものを使う必要があるので下記を使用。

django-cgi/django-python3.cgi at master · chibiegg/django-cgi · GitHub

中身は下記を設定。 1行名は仮想環境のbin/pythonのパス。 sys.path.appendをしろ、というところに下記を追記。

sys.path.append('仮想環境パス/lib/python3.5/site-packages')
sys.path.append("仮想環境パス/プロジェクト名")

末尾あたりに

os.environ['DJANGO_SETTINGS_MODULE'] = 'プロジェクト名.settings'

あとは.htaccessも設置。 (RewriteBaseは適宜指定)

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.cgi/$1 [QSA,L]

とりあえず上記でアクセスできるようになるのだが、 adminにアクセスしてみるとcss等が正しく反映されていない。

ローカル環境のrunserverと違い、staticが正しく表示されないので、 collectstaticを利用しファイルを公開フォルダにコピーする必要がある。 まずsettings.pyに下記を設定。(バーチャルホストを使わない例)

STATIC_ROOT = '/home/username/www/myapp/static'
STATIC_URL = '/myapp/static/'

この状態で下記を実行でコピーされる。

python manage.py collectstatic

これで公開までの一通りの準備が完了。 (この先の諸々も問題なく動作するかは不明)