Supervisor: Izin ditolak kesalahan saat menggunakan supervisorctl

Dibuat pada 26 Nov 2012  ·  12Komentar  ·  Sumber: Supervisor/supervisor

saya menggunakan supervisor + flask + gunicorn + virtalenv untuk menyebarkan aplikasi saya, ketika saya menggunakan supervisorctl, itu menunjukkan kesalahan kepada saya:

kesalahan:, [Errno 13] Izin ditolak: file: /usr/lib/python2.7/socket.py baris: 224

ini supervisor.conf

[inet_http_server]
port = 127.0.0.1: 9001
nama pengguna = xxx
kata sandi = xxx

[pengawas]
logfile=/tmp/supervisord.log
logfile_maxbytes=10MB
logfile_backups=10
tingkat log=info
pidfile=/tmp/supervisord.pid
pengguna=wwwpengguna

[pengawasctl]
serverurl= http://127.0.0.1 :9001
nama pengguna = xxx
kata sandi = xxx

[program:xxxxxxxxx]
command=gunicorn -w 4 -k gevent -p /tmp/site.pid -b 127.0.0.1:6000 manage:app
nama_proses=%(nama_program)s
numprocs=1
direktori=/home/wwwpengguna/situs
mulai otomatis = benar
pengguna=wwwpengguna
redirect_stderr=benar
stdout_logfile=/tmp/site-out.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stderr_logfile=/tmp/site-err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10

supervisorctl

Komentar yang paling membantu

di supervisord.conf Anda, Anda dapat melakukan sesuatu seperti berikut:

hanya membuatnya dapat ditulis untuk semua

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0766                 ; socket file mode (default 0700)

mengontrol siapa yang sebenarnya memiliki file tersebut

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0760                 ; socket file mode (default 0700)
chown=myuser:group       ; socket file uid:gid owner

yang terakhir ini saya tidak yakin karena saya belum menguji dan saya tidak sepenuhnya memahami perilaku di sini. Saya juga tidak peduli karena itu tidak terlihat sangat aman:

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0700                ; socket file mode (default 0700)
username=root              ; (default is no username (open server))
password=yourrootpassword               ; (default is no password (open server))

Semua 12 komentar

+1

Saya juga mengalami masalah ini di ubuntu 12.04 saat menginstal supervisor 3.0a8-1.1 melalui manajer paket sistem. Saya membuat program sederhana seperti di tutorial: http://supervisord.org/running.html#adding -a-program

Saya chown'ed /tmp/supervisor.sock pemilik dan memecahkan masalah ini.

di supervisord.conf Anda, Anda dapat melakukan sesuatu seperti berikut:

hanya membuatnya dapat ditulis untuk semua

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0766                 ; socket file mode (default 0700)

mengontrol siapa yang sebenarnya memiliki file tersebut

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0760                 ; socket file mode (default 0700)
chown=myuser:group       ; socket file uid:gid owner

yang terakhir ini saya tidak yakin karena saya belum menguji dan saya tidak sepenuhnya memahami perilaku di sini. Saya juga tidak peduli karena itu tidak terlihat sangat aman:

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0700                ; socket file mode (default 0700)
username=root              ; (default is no username (open server))
password=yourrootpassword               ; (default is no password (open server))

Saya hanya mengalami masalah ini jika saya tidak masuk sebagai root. Jadi sudo supervisorctl yang normal akan menyelesaikan masalah

Apakah kita seharusnya menggunakan supervisorctl dengan sudo?

bertemu juga!

Sementara banyak pembaca kami akan lolos dengan menjalankan perintah lagi dengan sudo, dan berhasil, ada cara yang lebih baik! Kesalahan izin berasal dari izin akses ke file soket supervisord, yang secara default dimiliki oleh root, dan tidak dapat ditulisi oleh pengguna lain. Kami dapat membuat supervisord chown dan chmod file ke pengguna atau grup tertentu saat startup, memberikan izin kepada pengguna atau grup untuk menghentikan dan memulai layanan yang telah kami konfigurasikan tanpa memerlukan sudo.

Mari kita buat grup, tambahkan diri kita ke dalamnya dengan melakukan hal berikut:

grup tambahkan pengawas
usermod -a -G supervisor

Setelah log-out/log-in (agar keanggotaan grup baru berlaku), edit file konfigurasi supervisord (/etc/supervisor/supervisor.conf) untuk membuat bagian unix_http_server terlihat sebagai berikut

[unix_http_server]
file=/var/run/supervisor.sock ; (jalur ke file soket)
chmod=0770 ; mode file soket (default 0700)
chown= root:supervisor

Perhatikan bahwa kita telah chmod'ded file ke 0770 (dapat ditulis oleh pemilik dan grup), dan chown file ke root:supervisor , yang akan memungkinkan anggota grup supervisor untuk membuat panggilan ke supervisorctl. Kita harus memulai kembali supervisor untuk terakhir kalinya

supervisorctl reload

atau

Sudo service supervisor restart

REF:

https://bixly.com/blog/supervisord-or-how-i-learned-to-stop-worrying-and-um-use-supervisord/

^ Bekerja luar biasa!

Jangan lupa untuk menambahkan nama pengguna Anda ke perintah usermod.

usermod -a <your-username> -G supervisor

Untuk orang-orang seperti saya yang baru mengenal Linux, Anda bisa mendapatkan nama pengguna Anda saat ini dengan whoami

^ Bekerja luar biasa!

Jangan lupa untuk menambahkan nama pengguna Anda ke perintah usermod.

usermod -a <your-username> -G supervisor

Untuk orang-orang seperti saya yang baru mengenal Linux, Anda bisa mendapatkan nama pengguna Anda saat ini dengan whoami

dan untuk aws linux ami
usermod -a -G supervisor ec2-user(atau nama pengguna Anda)

Untuk seseorang yang masih gagal menggunakan supervisorctl tanpa izin root, Anda dapat memeriksa izin direktori yang berisi file sock:
ls -ld /var/run/supervisor/
jika Anda tidak dapat mengakses direktori ini, Anda harus menggunakan chown atau chmod sebagai berikut:
chown user:group /var/run/supervisor/
atau
chmod 777 /var/run/supervisor/

Bagi saya itu membantu untuk memindahkan soket dari /var/run/supervisord/supervisord.sock ke sesuatu seperti /tmp/supervisord.sock dan mengubah izin menjadi 766 .

Bahkan setelah mengubah konfigurasi untuk menyesuaikan izin file, folder /var/run/supervisord/ masih tidak dapat diakses oleh pengguna yang tidak memiliki hak.

[unix_http_server]
;file=/var/run/supervisord/supervisord.sock  ; default value
file=/tmp/supervisord.sock
chmod=0766
[supervisorctl]
;serverurl=unix:///var/run/supervisord/supervisord.sock  ; default value
serverurl=unix:///tmp/supervisord.sock
Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

alexmnv picture alexmnv  ·  3Komentar

guettli picture guettli  ·  4Komentar

cachvico picture cachvico  ·  3Komentar

ymsaout picture ymsaout  ·  4Komentar

felipejfc picture felipejfc  ·  5Komentar