# # This file tells systemd how to run Sidekiq as a 24/7 long-running daemon. # # Customize this file based on your bundler location, app directory, etc. # # If you are going to run this as a user service (or you are going to use capistrano-sidekiq) # Customize and copy this to ~/.config/systemd/user # Then run: # - systemctl --user enable sidekiq # - systemctl --user {start,stop,restart} sidekiq # Also you might want to run: # - loginctl enable-linger username # So that the service is not killed when the user logs out. # # If you are going to run this as a system service # Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu). # Then run: # - systemctl enable sidekiq # - systemctl {start,stop,restart} sidekiq # # This file corresponds to a single Sidekiq process. Add multiple copies # to run multiple processes (sidekiq-1, sidekiq-2, etc). # # Use `journalctl -u sidekiq -rn 100` to view the last 100 lines of log output. # [Unit] Description=sidekiq # start us only once the network and logging subsystems are available, # consider adding redis-server.service if Redis is local and systemd-managed. After=syslog.target network.target # See these pages for lots of options: # # https://www.freedesktop.org/software/systemd/man/systemd.service.html # https://www.freedesktop.org/software/systemd/man/systemd.exec.html # # THOSE PAGES ARE CRITICAL FOR ANY LINUX DEVOPS WORK; read them multiple # times! systemd is a critical tool for all developers to know and understand. # [Service] # # !!!! !!!! !!!! # # As of v6.0.6, Sidekiq automatically supports systemd's `Type=notify` and watchdog service # monitoring. If you are using an earlier version of Sidekiq, change this to `Type=simple` # and remove the `WatchdogSec` line. # # !!!! !!!! !!!! # Type=notify NotifyAccess=all # If your Sidekiq process locks up, systemd's watchdog will restart it within seconds. WatchdogSec=10 WorkingDirectory=/opt/myapp/current # If you use rbenv: # ExecStart=/bin/bash -lc 'exec /home/deploy/.rbenv/shims/bundle exec sidekiq -e production' # If you use the system's ruby: # ExecStart=/usr/local/bin/bundle exec sidekiq -e production # If you use rvm in production without gemset and your ruby version is 2.6.5 # ExecStart=/home/deploy/.rvm/gems/ruby-2.6.5/wrappers/bundle exec sidekiq -e production # If you use rvm in production with gemset and your ruby version is 2.6.5 # ExecStart=/home/deploy/.rvm/gems/ruby-2.6.5@gemset-name/wrappers/bundle exec sidekiq -e production # If you use rvm in production with gemset and ruby version/gemset is specified in .ruby-version, # .ruby-gemsetor or .rvmrc file in the working directory ExecStart=/home/deploy/.rvm/bin/rvm in /opt/myapp/current do bundle exec sidekiq -e production # Use `systemctl kill -s TSTP sidekiq` to quiet the Sidekiq process # Uncomment this if you are going to use this as a system service # if using as a user service then leave commented out, or you will get an error trying to start the service # !!! Change this to your deploy user account if you are using this as a system service !!! # User=deploy # Group=deploy # UMask=0002 # Greatly reduce Ruby memory fragmentation and heap usage # https://www.mikeperham.com/2018/04/25/taming-rails-memory-bloat/ Environment=MALLOC_ARENA_MAX=2 # if we crash, restart RestartSec=1 Restart=always # output goes to /var/log/syslog (Ubuntu) or /var/log/messages (CentOS) StandardOutput=syslog StandardError=syslog # This will default to "bundler" if we don't specify it SyslogIdentifier=sidekiq [Install] WantedBy=multi-user.target # Uncomment this and remove the line above if you are going to use this as a user service # WantedBy=default.target