はじめに
僕はサーバをさくらのレンタルサーバのスタンダードプランしか借りていないので、サーバサイドでガシガシプログラムを動かすことができないのですが、Django を使って API を作りたかったので、その設定方法を紹介します。
紹介する範囲
今回は Django の WSGI を CGI を通して利用する方法のみを紹介します。
さくらのレンタルサーバで Python 自体を利用する方法や Django の細かな設定自体は紹介しません。
CGI の設定
さくらのレンタルサーバでは mod_wsgi
が設定されていないため、Python を実行するには CGI を通さなければいけません。
そこで、 Django のプロジェクトルートに index.cgi
を作成し、以下の内容を書き加えます。
この際、パーミッションを 755
に指定するのを忘れないようにします。
#!/path/to/python
import sys
sys.path.append('/path/to/djangoproject/')
import cgitb
cgitb.enable()
from wsgiref.handlers import CGIHandler
from projectname.wsgi import application
CGIHandler().run(application)
まず、1行目は使用している Python の環境をしてします。
pyenv と pyenv-virtualenv などを使用している場合は #!/home/username/.pyenv/versions/envname/python
などですね。
4行目は今使用している Django のプロジェクトへのパスを指定します。
ここは pwd
で表示される値をそのまま持ってくれば大丈夫です。
10行目の projectname は自分で設定しているプロジェクト名に変更します。
内部でやっていることは Django が設定している WSGI を CGI ハンドラーに載せて実行しているだけです。
アクセスしてみる
index.cgi
を入り口としているので https://example.com/index.cgi
がルートになります。
デフォルトの管理画面だと https://example.com/index.cgi/admin
になります。
アクセスする際には settings.py
の ALLOWED_HOSTS
にホストを追加するのを忘れないようにしましょう。
またこのままだと index.cgi
が常に入っていてダサいので .htaccess
を用いて index.cgi
無しで見れるようにします。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
おわりに
以上、簡単でしたがスタンダードのさくらのレンタルサーバで Django を動かす方法でした。