Install and configure supervisord on centos 7 to run Laravel queues permanently

后端 未结 3 2252
渐次进展
渐次进展 2020-12-07 17:50

I want to use Laravel queue system in my project and I want to run php artisan queue:work permanently on server\'s background, I did some searches about thi

相关标签:
3条回答
  • On my Bluehost account systemctl was not running, but instead chkserv was used to monitor and restart processes, so the two answers here did not fully work for me.

    Also, I ran into an error with easy_install supervisor, since it tried to install the new 4.x.x version, which requires Python > 2.6, while 2.6 was the exact version of Python running on my machine.

    Here is what worked for me:

    1. yum install -y python-setuptools

    2. easy_install supervisor==3.4.0

    3. nano /etc/supervisord.conf and add

    [supervisord]
    nodaemon=true
    
    [include]
    files = /etc/supervisor/conf.d/*.conf
    
    [program:laravel-worker]
    command=php artisan queue:work --tries=1
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/queue.err.log
    stdout_logfile=/var/log/queue.out.log
    
    1. nano /etc/chkserv.d/chkservd.conf, add the line supervisord:1, and then save the file

    2. touch /etc/chkserv.d/supervisord to create chkservd config file

    3. nano /etc/chkserv.d/supervisord, add the line service[supervisord]=x,x,x,service supervisord restart,supervisord,root, and then save the file

    4. supervisord will now show up in WHM under Service Manager, and chkservd will start it and make sure it keeps running, but to manually start it, simply run supervisord

    For more information on adding a service to chkservd, click here.

    0 讨论(0)
  • 2020-12-07 18:28

    Hopefully this will be of use to someone, this is the process I have been through in addition to @Abdu's answer to get things working on CentOS 7.

    1. Install Supervisor

    easy_install supervisor

    * If not installed, run yum install -y python-setuptools and then easy_install supervisor

    2. Prep work

    To get the ideal setup running, you should run the following...

    # create directory for supervisor logs
    mkdir /var/log/supervisor
    
    # create directory for supervisor configs
    mkdir -p /etc/supervisor/conf.d
    
    # create config directory for supervisor
    cat <<EOT >> /etc/supervisor/supervisord.conf
    ; supervisor config file
    
    [supervisord]
    logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
    pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
    childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
    
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    
    [supervisorctl]
    serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
    
    [include]
    files = /etc/supervisor/conf.d/*.conf
    EOT
    
    # create systemctl service script
    cat <<EOT >> /lib/systemd/system/supervisord.service
    [Unit]
    Description=Supervisor process control system for UNIX
    Documentation=http://supervisord.org
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
    ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
    ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload
    KillMode=process
    Restart=on-failure
    RestartSec=50s
    
    [Install]
    WantedBy=multi-user.target
    EOT
    

    Once you've done this, you should now be able to start and stop supervisor using systemctl. To start systemctl, run systemctl start supervisord. To view the status of supervisor, run systemctl status supervisord.

    You can create as many custom configurations as you like under /etc/supervisor/conf.d

    3. Enable on system startup

    You should also enable supervisord on startup by running

    systemctl enable supervisord
    
    0 讨论(0)
  • 2020-12-07 18:41

    here is how to install and config supervisord on centos 7 to run Laravel queues permanently:

    1. easy_install supervisor
    2. yum install supervisor
    3. vim /etc/supervisord.conf edit section program as following:
    [program:laravel-worker]
    command=php /path/to/app.com/artisan queue:work 
    process_name=%(program_name)s_%(process_num)02d
    numprocs=8 
    priority=999 
    autostart=true
    autorestart=true  
    startsecs=1
    startretries=3
    user=apache
    redirect_stderr=true
    stdout_logfile=/path/to/log/worker.log
    
    1. systemctl enable supervisord to autorun at start
    2. systemctl restart supervisord to restart the service
    0 讨论(0)
提交回复
热议问题