サーバ起動時に自動でpyenv環境下のuWSGIアプリケーションを実行しようとしたらはまった
前置き
Raspberry Piでサーバを構築している.
せっかくなので起動したら自動的に作成したPythonアプリケーションを実行できるようにしたい.
作成したPythonアプリケーションはpyenvで管理していて,uWSGIサーバを使って動いている.
した
/etc/rc.local
のファイルにシェルスクリプトを書くと実行できる.
ここにこんな風に書くと希望のアプリケーションを実行できる.
# run app from shell script sh run_app.sh
run_app.sh
# nohup uwsgi --ini hoge_app.ini & <-怒られたやつ nohup /home/hoge/.pyenv/shims/uwsgi --ini hoge_app.ini &
はまったこと
上記のように書くと,実行できるが,run_app.sh
はrootユーザで実行される.
がuWSGIはhogeユーザのpyenvで管理していたので,rootユーザからは動かすことができなかった.
そのため,そのまま動かすとuWSGIがないと怒られた.
nohup: コマンド `uwsgi' の実行に失敗しました: そのようなファイルやディレクトリはありません
解決策
たぶんよくない方法だと思うのだが,直接hogeユーザの.pyenv内のuwsgiを指定して実行することで,無事動いた.