経緯

root権限を持っていないユーザーは環境依存の強いDjangoのデプロイにとても苦労すると思います。(例えばhttpd.confでAliasを書いたり)
そこで、少し遠回りではありますが、cgiとあるライブラリを使って遠回りにDjangoパスを通す方法をここにするそうと思います。

参照

[https://github.com/chibiegg/django-cgi/blob/master/django-python3.cgi:embed]

[https://www.kishiro.com/apache/no_extension_cgi.html:title]

方法

1. 上のdjango-cgiのファイルをdjangoのアプリ名と同じ名前にしてhtmlから見える位置に置く。
(例)

$ cd /var/www/  
$ tree  
html  
├── djangoapp(元 django-python3.cgi)  
└── .htaccess  
djangoapp  
├── djangoapp  
├── manage.py  
└── __init__.py       ...  

2. /var/www/html/djangoapp(元 django-python3.cgi)のファイルを幾つか書き換える

(1~2行目)  
#!/home/user/.pyenv/versions/envname/bin/python  
# encoding: utf-8  
↓↓↓↓↓  
#!pythonのbinパス($ which pythonで調べる)  
# encoding: utf-8  

(27~30行目)  
# Change this to the directory above your site code.  
# sys.path.append("/home/user/local/lib/python3.4/site-packages")  
# sys.path.append("/djangoproject/src")  
↓↓↓↓↓  
# Change this to the directory above your site code.  
sys.path.append(pythonのsite-packagesのある場所)  
sys.path.append(djangoアプリのある場所:/var/www/djangoapp)  

(89~92行目)  
# Change to the name of your settings module  
os.environ['DJANGO_SETTINGS_MODULE'] = 'application.settings'  
from django.core.wsgi import get_wsgi_application  
run_with_cgi(get_wsgi_application())  
↓↓↓↓↓  
# Change to the name of your settings module  
os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoapp.settings' ← アプリ名  
from django.core.wsgi import get_wsgi_application  
run_with_cgi(get_wsgi_application())  

3. .htaccess (/var/www/html/.htaccess)を編集(下を追加)

<FilesMatch "^[^\.]+$">  
    SetHandler cgi-script  
</FilesMatch>  

4. djangoのstaticファイルをhtmlから見える位置に置き、settings.pyのSTATIC_URL, STATIC_ROOTも変更