yuichiro.__blog__

NGINX、uWSGI間をソケット通信する場合、/tmpに.sockを置いちゃダメ!(Centos 7)

Qiitaで読む

4/5/2019 GitHubで開く

結論から

CentOS 7ではプログラムごとに/tmpが別に用意されるらしく、nginxから見える/tmpとuwsgiから見える/tmpが違うため、/tmp/uwsgi.sockがnginxから見つからない、という事態に陥っていた。
/runを使う
→ そのままだと再起動時に/run/appが削除されるため、永続化する

それぞれの設定

nginx.conf
server {
  ...
  location / {
    include uwsgi_params;
    uwsgi_ignore_client_abort on;
    uwsgi_pass unix:///tmp/uwsgi/app.sock -> unix:///run/app/app.sock;
  }
}
uwsgi.ini
[uwsgi]

# ...

#socket file's location
socket = /tmp/uwsgi/app.sock -> /run/app/app.sock

uid = app
gid = app
#pid
pidfile = /tmp/uwsgi/app.pid -> /tmp/app/app.pid

#permissions for the socket file
chmod-socket = 666

logto = /var/log/uwsgi/app.log

# ...

/run/uwsgiではなく/run/appにしているのはuwsgiとは別のユーザーを使いたいから。

sudo mkdir -p /run/app
sudo chown app:app /run/app
/etc/tmpfiles.d/app.conf
#Type   Path                    Mode    UID     GID     Age     Argument
d       /var/run/app            0755    app     app     -

参考

python - Got 'No such file or directory' error while configuring nginx and uwsgi - Stack Overflow
nginx unix domain socket error - Server Fault
CentOS 7 : /var/run 直下に作ったディレクトリが消えないようにする - eTuts+ Server Tutorial

< Pythonでは何も指定されなかったのか明示的にNoneが指定されたのか区別できない問題爆速でCentOS7環境を整える(引越し) >

関連記事

Pythonでは何も指定されなかったのか明示的にNoneが指定されたのか区別できない問題

9/30/2019

表題の通りです Pythonでは関数にデフォルト引数を定義することができます。 便利なんですが落とし穴が多いことでも有名です。 Python…

続きを読む

爆速でCentOS7環境を整える(引越し)

4/4/2019

(半)個人で運用中のサーバーで爆速でcentos7環境を整えないといけなかったので備忘録 Centos6からCentos7にアップグレードしました。 バックアップ だいたい /etc…

続きを読む

さくらのVPS初期設定備忘録

1/5/2015

次にまたサーバーを建てるときに忘れないように。こういうのを書く代わりにDockerとかVagrantとか使ったらいいのかな? qiitaとドットインストール行ったり来たりしつつ、やりながら書いていきます。 1. rootパスワード変更 2. 作業用ユーザ作成 3. wheel…

続きを読む