読者です 読者をやめる 読者になる 読者になる

サーバ起動時に自動で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を指定して実行することで,無事動いた.