Djangoroidの奮闘記

python,django,angularJS1~三十路過ぎたプログラマーの奮闘記

su -m user コマンドについて

su -m user でユーザーを切り替えるのと、su - user で切り替えるのは全然違うことを理解。 su -m userだとrootの環境変数を引き継げるけど、su - userだと完全にちがうuserでログインすることになってしまうため、環境変数は引き継げない。(他にも違いはめっちゃたくさんあるんだろうけど。。。とりあえずこれがわかっただけで収穫!)

Elastic Beanstalkとかの環境変数を使うためには、su -m user でuserを切り替えて、環境変数は引き継いで実行するようにする必要があり。

su -m uwsgi -c "export PATH=/opt/conda/bin:$PATH && python /app/manage.py migrate"
  • こっちだと引き継がれない。
su - uwsgi -c "export PATH=/opt/conda/bin:$PATH && python /app/manage.py migrate"

だから、Elastic Beanstalk + dockerだと前者で設定した方がいいな。