Próbuję uruchomić proces w tle jako deamon, ale działa on tylko wtedy, gdy używam root jako użytkownik.Supervisord na Linuksie CentOS 7 działa tylko wtedy, gdy działa z rootem
Oto, co zrobiłem.
nadzorca zainstalowana jak powiedział na swojej stronie internetowej
$ yum -y install python-setuptools
$ easy_install supervisor
tworzone foldery config
$ mkdir -p /etc/supervisor/conf.d
zapełnić z ustawieniami domyślnymi
$ echo_supervisord_conf > /etc/supervisor/supervisord.conf
dodać nowego użytkownika
$ useradd gogopher
na CentOS 7, aby uruchomić automatycznie musiałem zrobić to
$ vim /usr/lib/systemd/system/supervisord.service
dodaniu kodu poniżej
[Unit]
Description=supervisord - Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecReload=/usr/bin/supervisorctl reload
ExecStop=/usr/bin/supervisorctl shutdown
User=gogopher
[Install]
WantedBy=multi-user.target
teraz mogę włączyć go tak, że zaczyna się na restart. to wszystko działa dobrze.
$ systemctl enable supervisord
$ systemctl start supervisord
$ systemctl status supervisord
OK
edytując plik konfiguracyjny zawierać pliki z folderu conf.d
$ vim /etc/supervisor/supervisord.conf
dodając na końcu pliku
[include]
files = /etc/supervisor/conf.d/*.conf
dodanie prostego programu
$ vim /etc/supervisor/conf.d/goapp.conf
[program:main]
command=/srv/www/websiteurl.com/bin/main
autostart=true
autorestart=true
startretries=10
user=gogopher
$ systemctl restart supervisord
żadnego błędu, ale proces nie działa
gdybym restart nic się nie dzieje
$ systemctl status supervisord
pokazuje, że supervisord jest uruchomiony, ale nie program demon.
jeśli biegnę
$ supervisorctl reload
pojawia się błąd
error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.7/socket.py line: 571
jeśli biegnę
$ supervisorctl status main
pojawia się błąd
http://localhost:9001 refused connection
Mam już wyłączone selinux.
ale najdziwniejsze jest to, że jeśli zmienię oba na root, to działa.
Plik wykonywalny może być wykonywany przez grupę użytkowników i inne.
Więc nie mam pojęcia, co się dzieje. Słyszałem, że nie powinienem używać root'a jako użytkownik, który uruchamia serwer WWW ze względów bezpieczeństwa.
Czy go rozwiązać? Jeśli tak, w jaki sposób? –
https://imgs.xkcd.com/comics/wisdom_of_the_ancients.png – Basil