diff --git a/debian/gitlab.gitlab-mailroom.service b/debian/gitlab.gitlab-mailroom.service new file mode 100644 index 0000000000..849bc39108 --- /dev/null +++ b/debian/gitlab.gitlab-mailroom.service @@ -0,0 +1,20 @@ +[Unit] +Description=Gitlab mailroom Worker +PartOf=gitlab.target +Requires=gitlab-unicorn.service +Wants=gitlab-unicorn.service +After=gitlab-unicorn.service +PartOf=gitlab.service +ReloadPropagatedFrom=gitlab-unicorn.service + +[Service] +Type=simple +User=gitlab +WorkingDirectory=/usr/share/gitlab +EnvironmentFile=/etc/gitlab/gitlab-debian.conf +SyslogIdentifier=gitlab-mailroom +ExecStart=/usr/bin/bundle exec mail_room -q -c /etc/gitlab/mail_room.yml +Restart=on-abnormal + +[Install] +WantedBy=gitlab.target diff --git a/debian/gitlab.gitlab-sidekiq.service b/debian/gitlab.gitlab-sidekiq.service new file mode 100644 index 0000000000..4bfbe8f2f9 --- /dev/null +++ b/debian/gitlab.gitlab-sidekiq.service @@ -0,0 +1,34 @@ +[Unit] +Description=GitLab Sidekiq Worker +PartOf=gitlab.target +Requires=redis-server.service +Wants=postgresql.service +After=redis-server.service postgresql.service +PartOf=gitlab.service +ReloadPropagatedFrom=gitlab.service + +[Service] +Type=simple +User=gitlab +WorkingDirectory=/usr/share/gitlab +EnvironmentFile=/etc/gitlab/gitlab-debian.conf +SyslogIdentifier=gitlab-sidekiq +ExecStart=/usr/bin/bundle exec sidekiq \ + -q post_receive \ + -q mailers \ + -q archive_repo \ + -q system_hook \ + -q project_web_hook \ + -q gitlab_shell \ + -q incoming_email \ + -q runner \ + -q common \ + -q default \ + -e $RAILS_ENV +Restart=on-abnormal + +## No "Type=notify" support; wait for service to initialise: +ExecStartPost=-/bin/sh -c "for i in 4 4 4 4 4 4 4 4; do sleep $i; (ps -h -o command -p $MAINPID | grep -q -P \"sidekiq\s\d\.\d\.\d\") && exit 0; done" + +[Install] +WantedBy=gitlab.target diff --git a/debian/gitlab.gitlab-unicorn.service b/debian/gitlab.gitlab-unicorn.service new file mode 100644 index 0000000000..3349cbfabc --- /dev/null +++ b/debian/gitlab.gitlab-unicorn.service @@ -0,0 +1,22 @@ +[Unit] +Description=GitLab Unicorn Server +PartOf=gitlab.target +Requires=redis-server.service +Wants=postgresql.service +After=redis-server.service postgresql.service +PartOf=gitlab.service +ReloadPropagatedFrom=gitlab.service + +[Service] +Type=simple +User=gitlab +WorkingDirectory=/usr/share/gitlab +EnvironmentFile=/etc/gitlab/gitlab-debian.conf +EnvironmentFile=-/etc/default/gitlab +SyslogIdentifier=gitlab-unicorn +ExecStart=/usr/bin/bundle exec unicorn_rails -c config/unicorn.rb -E $RAILS_ENV +ExecReload=/bin/kill -USR2 $MAINPID +Restart=on-abnormal + +[Install] +WantedBy=gitlab.target diff --git a/debian/gitlab.gitlab-workhorse.service b/debian/gitlab.gitlab-workhorse.service new file mode 100644 index 0000000000..32827da7e6 --- /dev/null +++ b/debian/gitlab.gitlab-workhorse.service @@ -0,0 +1,26 @@ +[Unit] +Description=Gitlab Workhorse handles slow HTTP requests for Gitlab. +PartOf=gitlab.target +Requires=gitlab-unicorn.service +Wants=gitlab-unicorn.service +After=gitlab-unicorn.service +PartOf=gitlab.service +ReloadPropagatedFrom=gitlab-unicorn.service + +[Service] +Type=simple +User=gitlab +WorkingDirectory=/usr/share/gitlab +EnvironmentFile=/etc/gitlab/gitlab-debian.conf +SyslogIdentifier=gitlab-workhorse +ExecStart=/usr/bin/gitlab-workhorse \ + -listenUmask 0 \ + -listenNetwork unix \ + -listenAddr ${gitlab_pid_path}/gitlab-workhorse.socket \ + -authBackend http://127.0.0.1:8080 \ + -authSocket ${gitlab_pid_path}/gitlab.socket \ + -documentRoot ${gitlab_app_root}/public +Restart=on-abnormal + +[Install] +WantedBy=gitlab.target diff --git a/debian/gitlab.lintian-overrides b/debian/gitlab.lintian-overrides index 2b50e2d908..1e9d99c4ed 100644 --- a/debian/gitlab.lintian-overrides +++ b/debian/gitlab.lintian-overrides @@ -14,5 +14,14 @@ gitlab: package-contains-timestamped-gzip usr/share/gitlab/spec/fixtures/ci_buil gitlab: executable-not-elf-or-script usr/share/gitlab/bin/upgrade.rb gitlab: executable-not-elf-or-script usr/share/gitlab/bin/ci/upgrade.rb -# gitlab.target is provided for systemd -gitlab: systemd-no-service-for-init-script gitlab +# False-positives: there are no init.d files for those services: +init.d-script-not-marked-as-conffile etc/init.d/gitlab-sidekiq +init.d-script-not-marked-as-conffile etc/init.d/gitlab-workhorse +init.d-script-not-marked-as-conffile etc/init.d/gitlab-unicorn +init.d-script-not-marked-as-conffile etc/init.d/gitlab-mailroom + +# Not needed; SysV uses one 'gitlab' init script. +init.d-script-not-included-in-package etc/init.d/gitlab-workhorse +init.d-script-not-included-in-package etc/init.d/gitlab-sidekiq +init.d-script-not-included-in-package etc/init.d/gitlab-mailroom +init.d-script-not-included-in-package etc/init.d/gitlab-unicorn diff --git a/debian/gitlab.service b/debian/gitlab.service new file mode 100644 index 0000000000..363826be2f --- /dev/null +++ b/debian/gitlab.service @@ -0,0 +1,13 @@ +[Unit] +Description=GitLab Services +BindsTo=gitlab-unicorn.service gitlab-sidekiq.service gitlab-mailroom.service gitlab-workhorse.service +After=gitlab-unicorn.service gitlab-sidekiq.service gitlab-mailroom.service gitlab-workhorse.service + +[Service] +Type=idle +RemainAfterExit=yes +ExecStart=-/bin/true +ExecReload=-/bin/true + +[Install] +WantedBy=gitlab.target diff --git a/debian/install b/debian/install index af97cb0b3e..272e8b2c63 100644 --- a/debian/install +++ b/debian/install @@ -5,7 +5,6 @@ debian/conf/gitlab.yml.example usr/share/doc/gitlab debian/conf/resque.yml etc/gitlab debian/conf/gitlab-debian.conf.example usr/share/doc/gitlab debian/conf/*.target lib/systemd/system -debian/conf/*.service lib/systemd/system debian/conf/smtp_settings.rb etc/gitlab/initializers debian/conf/tmpfiles.d/gitlab.conf usr/lib/tmpfiles.d debian/adduser.sh usr/lib/gitlab/scripts diff --git a/debian/rake-tasks.sh b/debian/rake-tasks.sh index cbc78c62bd..f83bef8b6a 100755 --- a/debian/rake-tasks.sh +++ b/debian/rake-tasks.sh @@ -45,12 +45,10 @@ echo "Precompiling assets..." su ${gitlab_user} -s /bin/sh -c 'bundle exec rake assets:precompile RAILS_ENV=production' # Start gitlab -if [ -d "/run/systemd/system" ]; then - systemctl start gitlab.target -else - invoke-rc.d gitlab start -fi +printf "Starting GitLab...\n" +service gitlab start # Check gitlab is configured correctly +printf "Check if Gitlab is configured correctly...\n" su ${gitlab_user} -s /bin/sh -c 'bundle exec rake gitlab:check RAILS_ENV=production'