Supervisor: "supervisorctl reload"κ°€ ν”„λ‘œκ·Έλž¨μ„ λ‹€μ‹œ μ‹œμž‘ν•˜μ§€ λͺ»ν•¨

에 λ§Œλ“  2012λ…„ 05μ›” 25일  Β·  64μ½”λ©˜νŠΈ  Β·  좜처: Supervisor/supervisor

μ‹€ν–‰ 쀑인 Supervisord μΈμŠ€ν„΄μŠ€μ—μ„œ "supervisorctl reload"λ₯Ό μ‹€ν–‰ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ΄ μ€‘μ§€λ˜κ³  λ‹€μ‹œ μ‹œμž‘λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

3.0a10μ—μ„œ 3.0a12둜 μ—…κ·Έλ ˆμ΄λ“œν•œ 이후에 이런 일이 λ°œμƒν•˜λŠ” 것을 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. λ³΅μ œν•  수 μ—†λŠ” 경우 μΆ”κ°€ 정보λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

sudo service supervisord start

이 후에 λ‹€μŒμ„ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

sudo supervisorctl reload

λͺ¨λ“  64 λŒ“κΈ€

λ‚΄κ°€ 말할 μˆ˜μžˆλŠ” ν•œ 3.0a10κ³Ό 3.0a12 μ‚¬μ΄μ—λŠ” 이와 κ΄€λ ¨λœ λ³€κ²½ 사항이 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ— λŒ€ν•΄ autostart=true κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆκΉŒ?

Ubuntu10.04μ—μ„œ supervisorctl reload 인해 Supervisord ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€. supervisorctl λ₯Ό μ‹€ν–‰ν•˜λ €λŠ” 후속 μ‹œλ„λŠ”

unix:///var/run/supervisor.sock no such file

λ˜λŠ” 더 λͺ¨ν˜Έν•œ

error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1

Supervisord ν”„λ‘œμ„ΈμŠ€λŠ” sudo supervisord ν•˜μ—¬ μˆ˜λ™μœΌλ‘œ λ‹€μ‹œ μ‹œμž‘ν•΄μ•Ό ν•©λ‹ˆλ‹€.

이것은 정말 λ‚˜μ˜λ‹€.

@leopd 이 버그와 관련이 μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Supervisorctl의 λ©”μ‹œμ§€λŠ” Supervisord에 μ—°κ²°ν•  수 μ—†λ‹€κ³  λ§ν•©λ‹ˆλ‹€. 무슨 일이 μΌμ–΄λ‚¬λŠ”μ§€ 보렀면 κ°λ…μž 둜그λ₯Ό 확인해야 ν•©λ‹ˆλ‹€. ν¬κ·ΈλΌμš΄λ“œ( supervisord -n )μ—μ„œ μ‹€ν–‰ν•˜κ³  λ‹€μ‹œ λ‘œλ“œν•˜λŠ” λ™μ•ˆ μ’…λ£Œλ˜λŠ”μ§€ 확인할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

@mnaberez 디버깅 팁 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ™œ λ‚΄κ°€ 보고 μžˆλŠ” 것이 jbrehhκ°€ μ›λž˜ λ³΄κ³ ν•œ 것과 λ‹€λ₯΄λ‹€κ³  μƒκ°ν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 그듀은 λ‚˜μ™€ λ™μΌν•˜κ²Œ λ“€λ¦½λ‹ˆλ‹€. 사둀가 λ‹€λ₯Έ 이유λ₯Ό μ„€λͺ…ν•˜λ©΄ 이에 λŒ€ν•œ μƒˆλ‘œμš΄ 버그λ₯Ό 기꺼이 μ—΄μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그럴 μ΄μœ λŠ” μ—†μŠ΅λ‹ˆλ‹€.

μ‘°μ–Έν•œ λŒ€λ‘œ μ „κ²½μ—μ„œ Supervisordλ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 supervisorctl reload ν•˜λ©΄ Supervisordκ°€ λ‹€μŒκ³Ό 같이 μΆ©λŒν•©λ‹ˆλ‹€.

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/supervisor/loggers.py", line 81, in emit
    self.stream.write(msg)
ValueError: I/O operation on closed file
Traceback (most recent call last):
  File "/usr/local/bin/supervisord", line 9, in <module>
    load_entry_point('supervisor==3.0b1', 'console_scripts', 'supervisord')()
  File "/usr/local/lib/python2.6/dist-packages/supervisor/supervisord.py", line 360, in main
    go(options)
  File "/usr/local/lib/python2.6/dist-packages/supervisor/supervisord.py", line 370, in go
    d.main()
  File "/usr/local/lib/python2.6/dist-packages/supervisor/supervisord.py", line 77, in main
    info_messages)
  File "/usr/local/lib/python2.6/dist-packages/supervisor/options.py", line 1274, in make_logger
    self.logger.critical(msg)
  File "/usr/local/lib/python2.6/dist-packages/supervisor/loggers.py", line 313, in critical
    self.log(LevelsByName.CRIT, msg, **kw)
  File "/usr/local/lib/python2.6/dist-packages/supervisor/loggers.py", line 319, in log
    handler.emit(record)
  File "/usr/local/lib/python2.6/dist-packages/supervisor/loggers.py", line 214, in emit
    self.doRollover()
  File "/usr/local/lib/python2.6/dist-packages/supervisor/loggers.py", line 223, in doRollover
    if not (self.stream.tell() >= self.maxBytes):
ValueError: I/O operation on closed file

μ€‘μš”ν•˜λ‹€λ©΄ 3.0b1을 μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

... 3.0a10으둜 되돌리면 λ¬Έμ œκ°€ μ‚¬λΌμ§‘λ‹ˆλ‹€.

μ™œ λ‚΄κ°€ 보고 μžˆλŠ” 것이 jbrehhκ°€ μ›λž˜ λ³΄κ³ ν•œ 것과 λ‹€λ₯΄λ‹€κ³  μƒκ°ν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 틀릴 수 μžˆμ§€λ§Œ 원본 λ³΄κ³ μ„œλ₯Ό Supervisord 좩돌이 μ•„λ‹ˆλΌ Supervisordμ—μ„œ μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μ΄ λ‹€μ‹œ μ‹œμž‘λ˜μ§€ μ•ŠλŠ” κ²ƒμœΌλ‘œ ν•΄μ„ν–ˆμŠ΅λ‹ˆλ‹€.

3.0a10으둜 되돌리면 λ¬Έμ œκ°€ μ‚¬λΌμ§‘λ‹ˆλ‹€.

역좔적과 이 μΆ”κ°€ 정보에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. 이 λ™μΌν•œ 좩돌이 #130μ—μ„œ λ³΄κ³ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. d2bc68561f96b3d8d523c751879429ead8e87894μ—μ„œ 이 버그λ₯Ό λ„μž…ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.

같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ μƒ˜ν”Œ μ„Έμ…˜μž…λ‹ˆλ‹€.

$ sudo supervisorctl -c conf/supervisord.conf reload
Restarted supervisord
$ sudo supervisorctl -c conf/supervisord.conf status
unix:///tmp/supervisord.sock no such file

저도 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. reloadλ₯Ό ν˜ΈμΆœν•  λ•Œ Supervisordκ°€ μΆ©λŒν•©λ‹ˆλ‹€. 3.0a10으둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜λŠ” μœ μΌν•œ μˆ˜μ • μ‚¬ν•­μž…λ‹ˆκΉŒ?

@landreville λ²„κ·ΈλŠ”

이 λ¬Έμ œμ— λŒ€ν•΄ +1

ν•œμˆ¨μ„ λ‚΄μ‰¬λŠ” 것과 동일

κ°λ…μž -n -u 아무도 -c ../conf/supervisor.ini --pid=/tmp/supervisor.pid
2012-12-17 16:08:20,208 CRIT uidλ₯Ό μ‚¬μš©μž 65534둜 μ„€μ •
2012-12-17 16:08:20,211 정보 κ΄€λ¦¬μžκ°€ PID 5016으둜 μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.
2012-12-17 16:08:21,215 μƒμ„±λœ INFO: pid 5019κ°€ μžˆλŠ” 'celeryd'
2012-12-17 16:08:31,556 INFO 성곡: μ…€λŸ¬λ¦¬κ°€ RUNNING μƒνƒœμ— λ“€μ–΄κ°”κ³  ν”„λ‘œμ„ΈμŠ€κ°€ 10초 이상 μœ μ§€λ¨(startsecs)
2012-12-17 16:08:34,444 WARN이 λ‹€μ‹œ μ‹œμž‘ μš”μ²­μ„ λ‚˜νƒ€λ‚΄λŠ” SIGHUP을 μˆ˜μ‹ ν–ˆμŠ΅λ‹ˆλ‹€.
2012-12-17 16:08:34,444 μ…€λŸ¬λ¦¬λ“œκ°€ μ£½κΈ°λ₯Ό κΈ°λ‹€λ¦¬λŠ” INFO
2012-12-17 16:08:34,582 INFO 쀑지됨: celeryd(μ’…λ£Œ μƒνƒœ 0)
역좔적(κ°€μž₯ 졜근 호좜 λ§ˆμ§€λ§‰):
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/loggers.py", 81ν–‰, 방좜
self.stream.write(msg)
ValueError: λ‹«νžŒ νŒŒμΌμ— λŒ€ν•œ I/O μž‘μ—…
역좔적(κ°€μž₯ 졜근 호좜 λ§ˆμ§€λ§‰):
파일 "/var/www/configtest/env/bin/supervisord", 8ν–‰,
load_entry_point('κ°λ…μž==3.0b1', 'μ½˜μ†”_슀크립트', 'κ°λ…μž')()
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/supervisord.py", 360ν–‰, 메인
이동(μ˜΅μ…˜)
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/supervisord.py", 370ν–‰, 이동 쀑
d.메인()
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/supervisord.py", 77ν–‰, 메인
info_messages)
make_logger의 파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/options.py", 1274ν–‰
self.logger.critical(msg)
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/loggers.py", 313ν–‰, μ€‘μš”
self.log(LevelsByName.CRIT, λ©”μ‹œμ§€, **kw)
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/loggers.py", 319ν–‰, 둜그
handler.emit(기둝)
파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/loggers.py", 214ν–‰, 방좜
self.doRollover()
doRolloverμ—μ„œ 파일 "/var/www/configtest/env/lib/python2.7/site-packages/supervisor/loggers.py", 223ν–‰
그렇지 μ•Šμ€ 경우(self.stream.tell() >= self.maxBytes):
ValueError: λ‹«νžŒ νŒŒμΌμ— λŒ€ν•œ I/O μž‘μ—…

25303d45eb75c980e97a5ea3eca307a464ad8e2bμ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  이 μƒν™©μ—μ„œ λ³΅κ΅¬ν•˜λ €λ©΄?

ν•œ 달 전보닀 이전 λ²„μ „μ˜ ꡬ성 νŒŒμΌμ„ λ‹¨μˆœνžˆ λ‹€μ‹œ λ‘œλ“œν•˜λŠ” 것이 정말 μ‚¬μ‹€μž…λ‹ˆκΉŒ?
κ°λ…μžκ°€ μž‘μ—…μ„ μ€‘λ‹¨ν•œ μƒνƒœλ‘œ λ‘λ‚˜μš”?

이 λ¬Έμ œλŠ” 둜그 νšŒμ „ μ˜΅μ…˜μ΄ ν™œμ„±ν™”λœ 경우 3.0b1 λ²„μ „μ—μ„œλ§Œ λ°œμƒν•©λ‹ˆλ‹€. 이전 버전을 μ‚¬μš© μ€‘μ΄κ±°λ‚˜ 둜그 νšŒμ „ μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우 영ν–₯을 주지 μ•ŠμŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  이 μƒν™©μ—μ„œ λ³΅κ΅¬ν•˜λ €λ©΄?

λΆˆν–‰ν•˜κ²Œλ„. Supervisordκ°€ 예기치 μ•Šκ²Œ μ’…λ£Œλ˜λ©΄ ν•΄λ‹Ή ν•˜μœ„ ν”„λ‘œμ„ΈμŠ€κ°€ κ³ μ•„κ°€ 될 수 있으며 ν•œλ™μ•ˆ 자체적으둜 계속 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Supervisordκ°€ λ‹€μ‹œ μ‹œμž‘λ˜κΈ° 전에 μ–΄λŠ μ‹œμ μ—μ„œ μˆ˜λ™μœΌλ‘œ μ’…λ£Œν•΄μ•Ό ν•©λ‹ˆλ‹€. μƒˆλ‘œμš΄ Supervisord μΈμŠ€ν„΄μŠ€κ°€ μ‹œμž‘λ˜λ©΄ λ‹€λ₯Έ μΈμŠ€ν„΄μŠ€μ— μ˜ν•΄ λΆ„λ¦¬λ˜μ—ˆμ„ 수 μžˆλŠ” ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ μ•Œμ§€ λͺ»ν•©λ‹ˆλ‹€.

25303d4 μˆ˜μ • ν”„λ‘œκ·Έλž¨μ€ μ‹€μ œλ‘œ 이 문제λ₯Ό ν•΄κ²°ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€. 같은 였λ₯˜μž…λ‹ˆλ‹€.

λ§ˆμ§€λ§‰ λŒ“κΈ€μ„ μ·¨μ†Œν•©λ‹ˆλ‹€. 이제 λ§ˆμŠ€ν„°(3.0b2-dev)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ†ŒμΌ“ 였λ₯˜ 없이 λ‹€μ‹œ λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€. 졜근 λ¬Έμ œλŠ” μˆ˜νΌλ°”μ΄μ €κ°€ λ‹€μ‹œ λ‘œλ“œλ  λ•Œ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμž‘λ˜μ§€ μ•ŠλŠ” μƒˆλ‘œμš΄ μˆ˜νΌλ°”μ΄μ € κ΅¬μ„±μœΌλ‘œ 인해 λ°œμƒν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. κ·Έ κ²°κ³Ό λ™μΌν•œ μœ λ‹‰μŠ€ μ†ŒμΌ“ 였λ₯˜κ°€ λ°œμƒν•˜μ—¬ λ‚˜λ₯Ό 버렸지 만 ν”„λ‘œμ„ΈμŠ€κ°€ μˆ˜μ •λ˜λ©΄ λ‹€μ‹œλ‘œλ“œκ°€ μž‘λ™ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

이 λ²„κ·ΈλŠ” μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€.

λ²„κ·ΈλŠ” λ‚˜μ—κ²Œλ„ μ‘΄μž¬ν•©λ‹ˆλ‹€.

supervisorctl reload

둜그 νŒŒμΌμ€ λ‹€μŒκ³Ό 같이 λ§ν•©λ‹ˆλ‹€.

2013-06-01 13:58:54,697 INFO waiting for memmon, celerydb, celerycam, gunicorn to die
2013-06-01 13:58:54,698 INFO stopped: celerycam (terminated by SIGTERM)
2013-06-01 13:58:54,868 INFO stopped: gunicorn (exit status 0)
2013-06-01 13:58:54,871 INFO stopped: celerydb (exit status 0)
2013-06-01 13:58:54,871 INFO stopped: memmon (terminated by SIGTERM)

(μΆ”κ°€ ν•­λͺ© μ—†μŒ)

κ°λ…μžκ°€ virtualenv에 μ‘΄μž¬ν•˜κ³  버전은 supervisor==3.0b2
파이썬 2.7.3

Supervisor==3.0b2에 μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ λ‹€μ‹œ λ„μž…λ˜μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. ꡬ성 파일의 μ‚¬μš©μž μ •μ˜ μ†ŒμΌ“κ³Ό κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” μ§€κΈˆ μ•½ 6κ°œμ›” λ™μ•ˆ supervisor==3.0b1 λ₯Ό μ‚¬μš©ν•΄ μ™”μœΌλ©° μ΅œκ·Όμ—μ•Ό 여기에 μ„€λͺ…λœ λ¬Έμ œμ— μ§λ©΄ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 특히, μš°λ¦¬λŠ” 패브릭 파일둜 κ΅¬λ™λ˜λŠ” λΉŒλ“œ/배포 λͺ©μ μœΌλ‘œ Jenkinsλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ‹œμž‘ μ‹œ κ°λ…μž λ‘œκ·ΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

2013-06-23 14:03:10,623 INFO daemonizing the supervisord process
2013-06-23 14:03:10,624 INFO supervisord started with pid 24211
2013-06-23 14:03:11,627 INFO spawned: 'websocket' with pid 24212
2013-06-23 14:03:11,628 WARN received SIGHUP indicating restart request
2013-06-23 14:03:11,628 INFO waiting for websocket to die
2013-06-23 14:03:15,051 INFO waiting for websocket to die
2013-06-23 14:03:18,674 INFO waiting for websocket to die
2013-06-23 14:03:21,678 WARN killing 'websocket' (24212) with SIGKILL
2013-06-23 14:03:21,678 INFO waiting for websocket to die
2013-06-23 14:03:21,685 INFO stopped: websocket (terminated by SIGKILL)

λ³΄μ‹œλ‹€μ‹œν”Ό ν”„λ‘œμ„ΈμŠ€λ₯Ό μ•…λ§ˆν™”ν•˜κ³  μƒμ„±ν•œ 직후 κ°λ…μžλŠ” SIGHUP λ°›μŠ΅λ‹ˆλ‹€. SIGHUP μ‹ ν˜Έκ°€ κ°λ…μž ν”„λ‘œμ„ΈμŠ€λ‘œ μ „μ†‘λ˜λŠ” μœ„μΉ˜κ°€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

3.0.b2둜 ν•΄κ²°λ˜μ—ˆλ‚˜μš”? μ—¬κΈ° 의 λ³€κ²½ λ‘œκ·ΈλŠ” 이λ₯Ό λ‚˜νƒ€λ‚΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μœ„ λŒ“κΈ€μ€ 버그가 μ•„λ‹Œ 것 κ°™μŠ΅λ‹ˆλ‹€. λ­”κ°€κ°€ κ°λ…μžμ—κ²Œ SIGHUP을 보내고 κ°λ…μžκ°€ ν•΄λ‹Ή SIGHUP에 μ •μƒμ μœΌλ‘œ μ‘λ‹΅ν•˜λŠ” κ²ƒμ²˜λŸΌ λ“€λ¦½λ‹ˆλ‹€. κ·Έ μ‹ ν˜Έλ₯Ό λ³΄λ‚΄λŠ” 것이 무엇인지 μ•Œμ•„λ‚΄μ•Ό ν•©λ‹ˆλ‹€. κ°λ…μžλŠ” μžμ‹ μ—κ²Œ μ‹ ν˜Έλ₯Ό 보내지 μ•ŠμŠ΅λ‹ˆλ‹€.

이 νŠΉμ • 문제 λ³΄κ³ μ„œλŠ” ν†΅μ œν•  수 μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 적어도 4가지 λ‹€λ₯Έ λ¬Έμ œκ°€ 같은 문제인 κ²ƒμ²˜λŸΌ 보고된 것 κ°™μŠ΅λ‹ˆλ‹€.

μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

sudo service supervisord start

이 후에 λ‹€μŒμ„ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

sudo supervisorctl reload

@harph 차라리 루트둜 μ‹€ν–‰ν•˜μ§€ μ•ŠμœΌλ €κ³  ν•©λ‹ˆλ‹€.

@aneumeier λŠ” μ‚¬μš©μžμ—κ²Œ 이 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” κΆŒν•œμ„ ν• λ‹Ήν•©λ‹ˆλ‹€.

@ ν•˜ν”„
그것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€ - 큰 κ°μ‚¬ν•©λ‹ˆλ‹€!

@harph λ™μ˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ„œλΉ„μŠ€λ₯Ό _μ‹œμž‘_ν•  수 μžˆλŠ”λ°λ„ μ„œλΉ„μŠ€λ₯Ό _λ‹€μ‹œ μ‹œμž‘_ν•  수 μ—†λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@aneumeier λ‚˜λŠ” 그런 말을 ν•˜μ§€ μ•Šμ•˜λ‹€. λ‚΄κ°€ λ§ν•œ 것은 λ‹€μ‹œ λ‘œλ“œν•˜κΈ° 전에 μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ˜ˆμ œμ—μ„œ sudoλ₯Ό μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν–ˆμ§€λ§Œ μ‚¬μš©μžμ—κ²Œ μ˜¬λ°”λ₯Έ κΆŒν•œμ„ ν• λ‹Ήν•˜λ©΄ μ„œλΉ„μŠ€λ₯Ό μ‹œμž‘ν•˜κ³  λ‹€μ‹œ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λ₯Ό μœ„ν•΄ sudo μ„œλΉ„μŠ€ κ°λ…μž μ‹œμž‘μ΄ 잘 μž‘λ™ν•©λ‹ˆλ‹€ :) Ubuntu 12.04 LTS

sudo μ„œλΉ„μŠ€ μˆ˜νΌλ°”μ΄μ € μ‹œμž‘
그것은 λ˜ν•œ λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€ - 맀우 κ°μ‚¬ν•©λ‹ˆλ‹€!

@ν•˜ν”„ +1

:+1:
였늘 CentOS μ €μž₯μ†Œμ—μ„œ Supervisorλ₯Ό μ œκ±°ν•˜κ³  easy_install을 μ‚¬μš©ν•˜μ—¬ μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. κ°λ…μžλŠ” κ·Έ μ–΄λŠ λ•Œλ³΄ λ‹€ 더 잘 μž‘λ™ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ Supervisorctl에도 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ €μ—κ²Œ service supervisor start μ†”λ£¨μ…˜μ΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ service supervisor restart μ‹œλ„ν•œ λ‹€μŒ μ‹œμž‘, 쀑지, μ‹œμž‘... 켜기 및 끄기. λ‹€μ‹œ μ‹œμž‘.. 아무것도.

$ supervisorctl reload
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1
$ supervisorctl restart foo
unix:///var/tmp/supervisor.sock no such file

CentOS 릴리슀 6.5(μ΅œμ’…)의 Supervisor-3.1.1-py2.6

2014λ…„ 8μ›” 18일 μ˜€ν›„ 5μ‹œ Etay Cohen-Solal은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

였늘 CentOS μ €μž₯μ†Œμ—μ„œ Supervisorλ₯Ό μ œκ±°ν•˜κ³  λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.
easy_install. κ°λ…μžλŠ” κ·Έ μ–΄λŠ λ•Œλ³΄ λ‹€ 더 잘 μž‘λ™ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” λ˜ν•œ κ°€μ§€κ³ μžˆλ‹€
Supervisorctl에 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

Supervisorctl은 μ‚¬μš©μž 지정 κ΅¬μ„±μ—μ„œ supervisord.conf에 μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
Supervisorctl은 λ‹€μŒμ—μ„œ supervisord.conf νŒŒμΌμ„ μ°ΎμŠ΅λ‹ˆλ‹€.
μœ„μΉ˜(μˆœμ„œλŒ€λ‘œ):

etc/supervisord.conf
supervisord.conf
/etc/supervisord.conf

λ…Έλ ₯ν•˜λ‹€:

Supervisorctl -c /경둜/to/the/supervisorctl.conf

λ‚˜λ₯Ό μœ„ν•΄ |μ„œλΉ„μŠ€ μˆ˜νΌλ°”μ΄μ € μ‹œμž‘| μ†”λ£¨μ…˜μ΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ λ…Έλ ₯
|μ„œλΉ„μŠ€ κ°λ…μž μž¬μ‹œμž‘| 그런 λ‹€μŒ μ‹œμž‘, 쀑지, μ‹œμž‘... 켜기 및
꺼짐..μž¬μ‹œμž‘..아무것도.

|$ supervisorctl λ‹€μ‹œ λ‘œλ“œ
였λ₯˜:, [였λ₯˜ 번호 2] ν•΄λ‹Ή 파일 λ˜λŠ” 디렉터리가 μ—†μŠ΅λ‹ˆλ‹€: 파일:라인: 1
$ supervisorctl myapp λ‹€μ‹œ μ‹œμž‘
unix:///var/tmp/supervisor.sock ν•΄λ‹Ή 파일 μ—†μŒ
|

CentOS 릴리슀 6.5(μ΅œμ’…)의 Supervisor-3.1.1-py2.6

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/Supervisor/supervisor/issues/121#issuecomment -52554399.

κ°μ‚¬ν•©λ‹ˆλ‹€.
νŒŒμΌμ€ /etc/supervisord.conf에 μžˆμŠ΅λ‹ˆλ‹€.

[supervisord]
http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server)
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=debug              ; (logging level;default info; others: debug,warn)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)
user=root                   ; (default is current user, required if root)

[supervisorctl]
serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL  for a unix socket
username=root               ; should be same as http_username if set
password=[mypassword]       ; should be same as http_password if set

[include]
files = /var/www/websites/supervisor/*.conf

λͺ…λ Ή μ‹€ν–‰:

# supervisorctl -c /etc/supervisord.conf
unix:///var/tmp/supervisor.sock no such file

그리고 νŒŒμΌμ€ μ‹€μ œλ‘œ 거기에 μ—†μŠ΅λ‹ˆλ‹€. Supervisordκ°€ μž‘λ™ν•˜κ³  λͺ¨λ“  데λͺ¬μ΄ 온라인 μƒνƒœμ΄λ©° μž‘λ™ μ€‘μž…λ‹ˆλ‹€.

2014λ…„ 8μ›” 18일 μ˜€ν›„ 5μ‹œ 48뢄에 Etay Cohen-Solal은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

[ν¬ν•¨ν•˜λ‹€]
파일 = /var/www/websites/supervisor/*.conf
|

λͺ…λ Ή μ‹€ν–‰:

|# supervisorctl -c /etc/supervisord.conf
unix:///var/tmp/supervisor.sock ν•΄λ‹Ή 파일 μ—†μŒ
|

그리고 νŒŒμΌμ€ μ‹€μ œλ‘œ 거기에 μ—†μŠ΅λ‹ˆλ‹€. Supervisord μž‘μ—… 및 λͺ¨λ“  데λͺ¬
온라인 μƒνƒœμ΄λ©° μž‘λ™ μ€‘μž…λ‹ˆλ‹€.

그러면 이 ꡬ성 νŒŒμΌμ„ μ‚¬μš©ν•˜μ—¬ Supervisordκ°€ μ‹œμž‘λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ„ˆ
λ™μΌν•œ λ°©μ‹μœΌλ‘œ ν•΄λ‹Ή ꡬ성 파일둜 Supervisordλ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°λ…μž -c /etc/supervisord.conf

이걸 λ©”μΌλ¦¬μŠ€νŠΈμ— μ˜¬λ €λ†”μ•Όμ§€..
이것은 OP의 버그 λ³΄κ³ μ„œμ™€λŠ” 거리가 λ©€λ‹€.

두 가지 이유둜 λ‘œλ“œλœ ꡬ성 νŒŒμΌμ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.
λ‚΄κ°€ 가지고 μžˆλŠ” μœ μΌν•œ νŒŒμΌμ΄λ‹€.

locate supervisord.conf
/etc/supervisord.conf
/etc/supervisord.conf.backup
/etc/supervisord.conf.rpmsave
  1. /var/www/websites/supervisor/*.conf 이 μž‘λ™ν•˜κ³  있으며 였늘 이 νŒŒμΌμ—μ„œλ§Œ μ„€μ •ν–ˆκΈ° λ•Œλ¬Έμ— 이 폴더가 λ‹€λ₯Έ κΈ°λ³Έ νŒŒμΌμ΄λ‚˜ 이전 νŒŒμΌμ— μ„€μ •λ˜μ–΄ μžˆμ„ κ°€λŠ₯성은 μ—†μŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ–΄μ¨Œλ“ , λ‚˜λŠ” μ‹œλ„ν–ˆλ‹€:

# service supervisord stop
Shutting down supervisord:                                 [  OK  ]
# supervisord -c /etc/supervisord.conf
# supervisorctl reload
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1
# supervisorctl restart foo
unix:///var/tmp/supervisor.sock no such file

λ‹€μ‹œ κ°μ‚¬ν•©λ‹ˆλ‹€. 메일 λͺ©λ‘μ— λ‹€μ‹œ κ²Œμ‹œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 여기에 λ³΄κ³ ν•œ 일뢀 였λ₯˜μ™€ μœ μ‚¬ν•˜μ§€λ§Œ.

μ›λž˜ κ²Œμ‹œλ¬Όκ³Ό μ „ν˜€ 관련이 μ—†μœΌλ―€λ‘œ κ·Έλ ‡μŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μ–΄μ¨Œλ“ , μš°λ¦¬λŠ” 그것을 μ—¬κΈ°κΉŒμ§€ μ˜€μ—Όμ‹œμΌ°μœΌλ―€λ‘œ λ‹€μŒμ„ μ‹œλ„ν•˜μ‹­μ‹œμ˜€:

supervisord -c /etc/supervisord.conf
supervisorctl -c /etc/supervisord.conf reload
supervisorctl -c /etc/supervisord.conf restart foo

κ°μ‚¬ν•©λ‹ˆλ‹€.

# supervisord -c /etc/supervisord.conf
# supervisorctl -c /etc/supervisord.conf reload
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: <string> line: 1
# supervisorctl -c /etc/supervisord.conf restart foo
unix:///var/tmp/supervisor.sock no such file

λ‚˜λŠ” λ˜ν•œ supervisor.sock을 찾으렀고 λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€.

# updatedb
# locate supervisor.sock
# 

ν•΄λ‹Ή 파일이 μ—†μŠ΅λ‹ˆλ‹€.

2014λ…„ 8μ›” 18일 μ˜€ν›„ 6μ‹œ 9뢄에 Etay Cohen-Solal은 λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€.

|# κ°λ…μž -c /etc/supervisord.conf

Supervisorctl -c /etc/supervisord.conf λ‹€μ‹œ λ‘œλ“œ

였λ₯˜:, [였λ₯˜ 번호 2] ν•΄λ‹Ή 파일 λ˜λŠ” 디렉터리가 μ—†μŠ΅λ‹ˆλ‹€: 파일:라인: 1

Supervisorctl -c /etc/supervisord.conf foo μž¬μ‹œμž‘

unix:///var/tmp/supervisor.sock ν•΄λ‹Ή 파일 μ—†μŒ

λ‚˜λŠ” λ˜ν•œ supervisor.sock을 찾으렀고 λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€.

μ‹€λ§ˆλ¦¬ μ—†μŒ. μ—¬κΈ°μ—μ„œ 이것에 λŒ€ν•œ μ΄μ•ΌκΈ°λŠ” ν™•μ‹€νžˆ κ·Έλ§Œλ‘λ„λ‘ ν•©μ‹œλ‹€. λ‚˜λŠ” μ œμ•ˆν•  것이닀
메일 λͺ©λ‘μœΌλ‘œ κ°€μ Έκ°‘λ‹ˆλ‹€.

  • 씨

@ET-CS와 λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
양말 νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€
vagrantλ₯Ό μ‚¬μš©ν•˜μ—¬ μš°λΆ„νˆ¬ VM νšŒμ „

그리고 μ‚¬μš©

κ°λ…μž 지원 μΆ”κ°€

sudo supervisord -c /vagrant/scripts/supervisord.conf

μœ„μ— κ²Œμ‹œλœ 것과 λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. .. 양말이 μ—†μŠ΅λ‹ˆλ‹€.

μš°λΆ„νˆ¬ 14.04의 3.0b2에 λŒ€ν•œ λ™μΌν•œ 문제, μž¬λΆ€νŒ…ν•΄λ„ ν•΄κ²°λ˜μ§€ μ•ŠμŒ

error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 224

이유λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.

stdout_logfile_maxbytes=100M

ν•΄μ•Όν•œλ‹€

stdout_logfile_maxbytes=100MB

λΉ„μŠ·ν•œ λ¬Έμ œκ°€μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
λ‚΄ λ¬Έμ œλŠ” 둜그 νŒŒμΌμ— λŒ€ν•œ κ²½λ‘œκ°€ μƒμ„±λ˜μ§€ μ•Šμ•˜κ±°λ‚˜ μ•‘μ„ΈμŠ€ν•  수 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‚˜λŠ” 같은 λ¬Έμ œμ— λΆ€λ”ͺμ³€λ‹€. λ‚˜λŠ” Supervisordλ₯Ό 죽이고 그것을 μ‚¬μš©ν•˜μ—¬ λ‹€μ‹œ μ‹œμž‘ν•˜λ €κ³  μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

supervisord -c /path/to/supervisord.conf

λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.

κ·Έλž˜μ„œ /var/runμ—μ„œ κ°λ…μž μ†ŒμΌ“μ„ μ‚­μ œν•˜κ³  λ‹€μ‹œ μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

supervisord -c /path/to/supervisord.conf

νš¨κ³Όκ°€ μžˆμ—ˆλ‹€. 도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€

@harph μž˜ν–ˆμ–΄! 그것은 λ‚˜μ—κ²Œ μœ μš©ν•©λ‹ˆλ‹€! 감사!

Supervisorctl -c /etc/supervisor/supervisord.confλ₯Ό μ‹€ν–‰ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.
Supervisorctl이 ꡬ성 νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€

supervisord -n μžμ„Έν•œ 였λ₯˜ 정보λ₯Ό μ°ΎλŠ” 데 도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

λ‚˜λŠ” μ–»μ—ˆλ‹€

unix:///var/run/supervisor.sock no such file

Supervisorctl에 μ•‘μ„ΈμŠ€ν•˜λ €κ³  ν•  λ•Œ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ κ°λ…μž μ„œλΉ„μŠ€κ°€ μ‹€ν–‰ 쀑인지 확인해야 ν•©λ‹ˆλ‹€.

sudo service supervisor status

그것이 λ‹Ήμ‹ μ˜ λ¬Έμ œμΈμ§€ μ•Œλ €μ€„ κ²ƒμž…λ‹ˆλ‹€. μ‹€ν–‰λ˜κ³  μžˆμ§€ μ•Šλ‹€λ©΄ κ°„λ‹¨νžˆ μ‹œμž‘ν•˜μ‹­μ‹œμ˜€.

sudo service supervisor start

Vagrant VMμ—μ„œ κ°λ…μžλ₯Ό μ‹€ν–‰ν•  λ•Œ μ–΄λ–€ 이유둜 μ„œλΉ„μŠ€κ°€ μžλ™ μ‹œμž‘λ˜μ§€ μ•Šμ•„ μˆ˜λ™ μ„œλΉ„μŠ€ μ‹œμž‘μ΄ ν•„μš”ν•˜λ‹€λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

Weesyλ₯Ό μ—…λ°μ΄νŠΈν•œ λ‚΄ 라즈베리 νŒŒμ΄μ—μ„œλ„ 이 였λ₯˜λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

sudo supervisorctl reload
error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 224

μœ„μ˜ 읽기:

sudo supervisord
Error: The directory named as part of the path /var/log/supervisor/supervisord.log does not exist.

ShichλŠ” λ‘œκΉ… 문제λ₯Ό λ³΄μ—¬μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ λ‚˜λŠ” ν•˜λ£¨ 정도 전에 /var/log/μ—μ„œ *λ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.
λ‹€μ‹œ sudo supervisord , λͺ¨λ‘ μ’‹μŠ΅λ‹ˆλ‹€.

@JayH5 κ°μ‚¬ν•©λ‹ˆλ‹€.

.sock νŒŒμΌμ„ 찾을 수 μ—†λ‹€λŠ” λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. @mistermoes μ œμ•ˆμ΄ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

$ sudo Supervisorctl λ‹€μ‹œ λ‘œλ“œ
였λ₯˜:, [였λ₯˜ 번호 2] ν•΄λ‹Ή 파일 λ˜λŠ” 디렉토리가 μ—†μŠ΅λ‹ˆλ‹€: 파일: /usr/lib/python2.7/socket.py ν–‰: 224
$ sodu κ°λ…μž μƒνƒœ
unix:///var/run/supervisor.sock ν•΄λ‹Ή 파일 μ—†μŒ

Supervisorctl을 λ‹€μ‹œ μ‹œμž‘ν•œ ν›„ 이 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€!

λ³€ν™”
[감독관]
;;;;;;http_port=/var/tmp/supervisor.sock ; (기본값은 UNIX 도메인 μ†ŒμΌ“ μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€)
http_port=127.0.0.1:9001 ; (λ˜λŠ” ip_address:portλŠ” AF_INET을 μ§€μ •ν•©λ‹ˆλ‹€)

μ—κ²Œ
[감독관]
http_port=/var/tmp/supervisor.sock ; (기본값은 UNIX 도메인 μ†ŒμΌ“ μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€)
;;;;;;http_port=127.0.0.1:9001 ; (λ˜λŠ” ip_address:portλŠ” AF_INET을 μ§€μ •ν•©λ‹ˆλ‹€)

λ‚΄ 문제λ₯Ό ν•΄κ²°

μ—¬μ „νžˆ λ¬Έμ œκ°€ μžˆλŠ” 경우:

/etc/supervisord.conf에 νŒŒμΌμ„ λ§Œλ“€κ³  λ‹€μŒ μ½”λ“œλ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
(참고둜 μ‚¬μš©μž 이름은 그에 따라 λ³€κ²½ν•˜μ‹­μ‹œμ˜€)

[unix_http_server]
file = /tmp/supervisor.sock
chmod = 0777
chown= mywebsiteuser:mywebsiteusergroup


[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
nodaemon = false
minfds = 1024
minprocs = 200
umask = 022
user = mywebsiteuser
identifier = supervisor
directory = /tmp
nocleanup = true
childlogdir = /tmp
strip_ansi = false

[supervisorctl]
##serverurl = unix:///tmp/supervisor.sock
serverurl = http://localhost:9001

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/mywebsiteuser/public_html/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=mywebsiteuser
numprocs=8
redirect_stderr=true
stdout_logfile=/home/mywebsiteuser/worker.log

μ €μž₯ν•˜κ³  νŽΈμ§‘κΈ°λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€.

κΈ°μ‘΄ 감독 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ°Ύμ•„ μ’…λ£Œ

pgrep -fl supervisord

λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜λ©΄ μž‘μ—…μžκ°€ μ‹€ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

supervisord -c /etc/supervisord.conf
supervisorctl -c /etc/supervisord.conf reload
supervisorctl -c /etc/supervisord.conf start laravel-worker:*

@omsobliga 감사

μ•ˆλ…• μ–˜λ“€μ•„!
이런 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
https://serversforhackers.com/monitoring-processes-with-supervisord 링크λ₯Ό λ”°λΌκ°”μ§€λ§Œ "supervisorctl reread" λͺ…령을 μ‹€ν–‰ν•˜λ©΄ 이 λ©”μ‹œμ§€κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
"였λ₯˜:, [였λ₯˜ 번호 2] ν•΄λ‹Ή 파일 λ˜λŠ” 디렉토리가 μ—†μŠ΅λ‹ˆλ‹€: 파일: /usr/lib/python2.7/socket.py ν–‰: 228"
μ •ν™•νžˆ 무엇을 μ˜λ―Έν•©λ‹ˆκΉŒ?
κ°μ‚¬ν•©λ‹ˆλ‹€.

κΌ­λ‘κ°μ‹œλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 λ¬Έμ œκ°€ λ°œμƒν•¨

Error: /Stage[main]/Supervisor/Service[supervisor]: Failed to call refresh: Could not restart Service[supervisor]: Execution of 'supervisorctl reload' returned 2: error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 224
Error: /Stage[main]/Supervisor/Service[supervisor]: Could not restart Service[supervisor]: Execution of 'supervisorctl reload' returned 2: error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib/python2.7/socket.py line: 224

No such file or directory 이 λ¬Έμ œμ™€ 관련이 μžˆμŠ΅λ‹ˆκΉŒ?

해결책은

  1. κ°λ…μžκ°€ μ‹€ν–‰ 쀑인지 ν™•μΈν•˜μ‹­μ‹œμ˜€. OS의 μ„œλΉ„μŠ€ κ΄€λ¦¬μž(start, /etc/init.d, μ„œλΉ„μŠ€ λ“±)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμž‘ν•˜μ‹­μ‹œμ˜€.
  2. 그런 λ‹€μŒ Supervisorctl둜 λ‹€μ‹œ λ‘œλ“œν•˜μ‹­μ‹œμ˜€.

supervisorctl λŠ” Supervisord 데λͺ¬κ³Ό ν†΅μ‹ ν•©λ‹ˆλ‹€. 데λͺ¬μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ 이 λ„κ΅¬λŠ” 아무 것도 μ§€μ‹œν•  수 μ—†μŠ΅λ‹ˆλ‹€. 연결을 μ‹œλ„ν•  λ•Œ μ†ŒμΌ“ νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

이것은 일뢀 κ΅¬ν˜• μ„œλ²„μ—μ„œ λ•Œλ•Œλ‘œ 우리λ₯Ό κ΄΄λ‘­νžˆλŠ” λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. rhel/centos의 경우 이 버그 λ³΄κ³ μ„œλ₯Ό ν™•μΈν•˜μ‹­μ‹œμ˜€. κ°„λ‹¨νžˆ λ§ν•΄μ„œ κ°λ…μž 3.0-1.el7 λ¦΄λ¦¬μŠ€λŠ” 양말 νŒŒμΌμ„ /var/tmp/supervisor.sock 에 λ°°μΉ˜ν•˜κ³  30일 후에 μ •λ¦¬λ©λ‹ˆλ‹€. 이것이 μš°λ¦¬μ—κ²Œ λ¬Έμ œκ°€ κ°„ν—μ μœΌλ‘œ λ‚˜νƒ€λ‚œ μ΄μœ μž…λ‹ˆλ‹€. 3.1.3 λ¦΄λ¦¬μŠ€μ—μ„œ 이 컀밋 으둜 μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@harph κ°μ‚¬ν•©λ‹ˆλ‹€!
sudo service supervisord start
잘 μž‘λ™ν•©λ‹ˆλ‹€!

이 λŒ“κΈ€ 은 μ €μ—κ²Œ λ§Žμ€ 도움 @efusionsoft , κ°μ‚¬ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ— λŒ€ν•œ λͺ‡ 가지 κ°œμ„  사항이 μžˆμŠ΅λ‹ˆλ‹€.
1) efusionsoft의 κ΅¬μ„±μœΌλ‘œ κ°λ…μžλ₯Ό μ‹œμž‘ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

Please check that the [rpcinterface:supervisor] section is enabled in the configuration file (see sample.conf).

λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ [supervisor] μ„Ήμ…˜ 뒀에 λ‹€μŒ μ½”λ“œλ₯Ό μΆ”κ°€ν•˜μ„Έμš”.

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

2) serverurl = http://localhost :9001이 μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©° 이유λ₯Ό λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. λ‹€ν–‰νžˆ serverurl = unix:///tmp/supervisor.sock이 잘 μž‘λ™ν•©λ‹ˆλ‹€.

λ‹€μŒμ€ λ‚΄ /etc/supervisord.conf의 전체 λ²„μ „μž…λ‹ˆλ‹€.

[unix_http_server]
file  = /tmp/supervisor.sock
chmod = 0777
chown = mywebsiteuser:mywebsiteusergroup

[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
nodaemon = false
minfds = 1024
minprocs = 200
umask = 022
user = mywebsiteuser
identifier = supervisor
directory = /tmp
nocleanup = true
childlogdir = /tmp
strip_ansi = false

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl = unix:///tmp/supervisor.sock
##serverurl = http://127.0.0.1:9001

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php/home/mywebsiteuser/public_html/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=mywebsiteuser
numprocs=1
redirect_stderr=true
stdout_logfile=/home/mywebsiteuser/worker.log

ꡬ성을 μ €μž₯ν•œ ν›„:
1) μ‹€ν–‰ 쀑인 λͺ¨λ“  κ°λ…μž μΈμŠ€ν„΄μŠ€λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.
pgrep -fl supervisord
2) μ‹€ν–‰ 쀑인 λͺ¨λ“  μˆ˜νΌλ°”μ΄μ € ν”„λ‘œμ„ΈμŠ€λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€.
sudo kill {your process PID}
3) μƒˆλ‘œμš΄ κ΅¬μ„±μœΌλ‘œ κ°λ…μž μ‹œμž‘:
supervisord -c /etc/supervisord.conf
4) κ°λ…μž μƒνƒœ 확인
supervisorctl -c /etc/supervisord.conf status
5) μ¦κΈ°μ„Έμš”!

이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€.

sudo systemctl start supervisor
sudo systemctl enable supervisor
sudo supervisorctl reload

λ‹€μŒ λŒ€μ‹  Supervisordκ°€ μ‹€ν–‰λ˜κ³  μžˆμ§€ μ•Šλ‹€λŠ” μ μ ˆν•œ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό μΆ”κ°€ν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224

λ‚΄ λ¬Έμ œλŠ” μž‘μ—…μžμ˜ 둜그 디렉토리가 @YAmikep 처럼 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 디렉토리λ₯Ό μƒμ„±ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆκ³  κ°λ…μžλŠ” μž‘μ—…μžλ₯Ό μ„±κ³΅μ μœΌλ‘œ μ‹œμž‘ν•˜κ³  μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

이것이 RHELμ—μ„œ unix:///tmp/supervisor.sock no such file 문제λ₯Ό ν•΄κ²°ν•œ λ°©λ²•μž…λ‹ˆλ‹€.

ps -ef | grep supervisord # get supervisord PID
kill -s SIGTERM 1234 # where 1234 is the PID
ps -ef | grep supervisord # check that supervisord is killed
supervisord # restart the daemon

λ‚˜λŠ” 같은 λ¬Έμ œκ°€ μžˆμ—ˆκ³  supervisord μ‹€ν–‰ν•œ ν›„ λ‘œκ·Έμ— κ°λ…μžκ°€ μ‹œμž‘ν•˜λ €κ³  ν–ˆλ˜ 이전 μ„œλΉ„μŠ€μ—μ„œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŒμ„ λ³΄μ—¬μ£Όμ—ˆμ§€λ§Œ μ‹œκ°„ 전에 ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨ 폴더λ₯Ό μ‚­μ œν–ˆμ§€λ§Œ κ°λ…μž conf.dμ—μ„œλŠ” μ‚­μ œν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. / 폴더. κ·Έλž˜μ„œ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•˜λ €κ³  ν•΄μ„œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰