我目前正在编写一个Puppet模块来让GitLab在CentOS 6/7上运行。 对于CentOS 7安装,我需要编写一个systemd单元文件来启动gitlab服务(实际上是Unicorn&Sidekiq)。
下面是我根据对GitLab自己提供的初始化脚本的模糊理解提出的单元文件:
[Unit] Description=GitLab After=network.target Requires=network.target After=mariadb.service Requires=mariadb.service After=redis.service Requires=redis.service [Service] EnvironmentFile=/etc/sysconfig/gitlab ExecStartPre=source /etc/profile.d/rvm.sh ExecStart=/bin/bash --pidfile=$UPID --user=$USER "$PATH_PATCH RAILS_ENV=$RAILS_ENV bin/web start" && /bin/bash --pidfile=$SPID --user=$USER "$PATH_PATCH RAILS_ENV=$RAILS_ENV bin/background_jobs start" [Install] WantedBy=multi-user.target
这里是关联的sysconfig文件:
RAILS_ENV="production" USER=git APP_PATH=/home/$USER/gitlab UPID=$APP_PATH/tmp/pids/unicorn.pid ULOCK=/var/lock/subsys/unicorn SPID=$APP_PATH/tmp/pids/sidekiq.pid SLOCK=/var/lock/subsys/sidekiq PATH_PATCH="PATH=$(su $USER -s /bin/bash -l -c "echo \"\$PATH\"") && export PATH && "
这丝毫不能奏效(并非意外):
[root@gitlab ~]# systemctl status gitlab -l gitlab.service - GitLab Loaded: loaded (/usr/lib/systemd/system/gitlab.service; disabled) Active: failed (Result: exit-code) since Fri 2015-04-17 15:48:38 BST; 6s ago Process: 9942 ExecStart=/bin/bash --pidfile=$UPID --user=$USER $PATH_PATCH RAILS_ENV=$RAILS_ENV bin/web start && /bin/bash --pidfile=$SPID --user=$USER $PATH_PATCH RAILS_ENV=$RAILS_ENV bin/background_jobs start (code=exited, status=2) Main PID: 9942 (code=exited, status=2) Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: --rcfile Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: --rpm-requires Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: --restricted Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: --verbose Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: --version Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: Shell options: Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: -irsD or -c command or -O shopt_option (invocation only) Apr 17 15:48:38 gitlab.thefallenphoenix.net bash[9942]: -abefhkmnptuvxBCHP or -o option Apr 17 15:48:38 gitlab.thefallenphoenix.net systemd[1]: gitlab.service: main process exited, code=exited, status=2/INVALIDARGUMENT Apr 17 15:48:38 gitlab.thefallenphoenix.net systemd[1]: Unit gitlab.service entered failed state.
任何人都可以点亮这里所需要的东西,或指出我正确的方向吗?
您不能在/etc/sysconfig/gitlab使用variablesreplace,而在ExecStart ,如果不包含空白,则需要使用${UPID}forms的variablesreplace。
另请参阅示例单元文件以启动具有RVM支持的独angular兽