2018-10-27に更新

さくらのレンタルスタンダードに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

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

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, React, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント