エラー
Djangoでアプリを作ってやっとの思いで公開しようと、
sudo /usr/local/bin/uwsgi --ini myapp_uwsgi.ini --uid nginx --gid nginx
とコマンドを叩いたら
Set PythonHome to /home/uesrname/.virtualenvs/virtualenvname
ImportError: No module named site
とエラーが出て動かない。なんてこった。
myapp_uwsgi.iniはこんな感じ
myapp_uwsgi.ini
# myapp_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /var/www/myapp
# Django's wsgi file
module = myapp.wsgi
# the virtualenv (full path)
#home = /usr/local/bin/virtualenv
home = /home/username/.virtualenvs/virtualenvname
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /tmp/myapp.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
ちなみにsudo抜きで
/usr/local/bin/uwsgi --ini myapp_uwsgi.ini --uid nginx --gid nginx
としたら問題なく動いたので謎は深まるばかり。
ちなみにOSはCentOS6.9。
解決法
パーミッションの問題だったらしくて/home/usernameのパーミッションを700から755に変えたら動いた。
ただsudoなのになぜ動かないのはよくわからない。linuxのカーネルのパーミッションとかクレデンシャルの問題なのでしょうか。
補足
No module named siteという同じエラーでも様々な症状があるらしくてまさにピンポイントの対処方法が検索に引っかからなかった。誰かの役に立てれば。