시작할 systemd
파일 을 작성했습니다 .systemctl
unicorn
[Unit]
Description=Unicorn server
[Service]
SyslogIdentifier=my-app-unicorn
User=deployer
PIDFile=/tmp/unicorn.my-app.pid
WorkingDirectory=/opt/www/my-app.com
ExecStart=/home/deployer/.rvm/gems/ruby-2.2.1@my-app/bin/bundle exec "unicorn_rails -D -c /opt/www/my-app.com/config/unicorn.rb -E production"
#ExecReload=/bin/kill -s HUP $MAINPID
ExecReload=/bin/kill -s USR2 $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
이것은 서비스를 시작하는 데 사용하는 명령입니다.
$ sudo systemctl daemon-reload
$ sudo systemctl start my-app.service
여기에서 상태를 확인합니다.
$ sudo systemctl status my-app
● my-app.service - My app unicorn server
Loaded: loaded (/lib/systemd/system/my-app.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2016-03-15 14:56:31 UTC; 4s ago
Process: 22165 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=200/CHDIR)
Process: 22162 ExecStart=/home/deployer/.rvm/gems/ruby-2.2.1@my-app/bin/bundle exec unicorn_rails -D -c /opt/www/my-app.com/config/unicorn.rb -E production (code=exited, status=200/CHDIR)
Main PID: 22162 (code=exited, status=200/CHDIR)
Mar 15 14:56:31 fat-man systemd[1]: Started My-App unicorn server.
Mar 15 14:56:31 fat-man systemd[22162]: my-app.service: Failed at step CHDIR spawning /home/deployer/.rvm/gems/ruby-2.2.1@my-app/bin/bundle: No such file or directory
Mar 15 14:56:31 fat-man systemd[1]: my-app.service: Main process exited, code=exited, status=200/CHDIR
Mar 15 14:56:31 fat-man systemd[1]: my-app.service: Control process exited, code=exited status=200
Mar 15 14:56:31 fat-man systemd[1]: my-app.service: Unit entered failed state.
Mar 15 14:56:31 fat-man systemd[1]: my-app.service: Failed with result 'exit-code'.
무엇이 문제일까요?
LE: /opt/www/my-app 디렉토리에 대한 사용자 배포자 액세스:
$ ls -alh
total 84K
drwxr-xr-x 12 deployer admin 4.0K Mar 12 20:10 .
drwxr-xr-x 3 root root 4.0K Mar 11 20:43 ..
drwxr-xr-x 9 deployer admin 4.0K Mar 11 20:52 app
drwxr-xr-x 2 deployer admin 4.0K Mar 11 20:52 bin
drwxr-xr-x 5 deployer admin 4.0K Mar 13 14:02 config
-rw-r--r-- 1 deployer admin 153 Mar 11 20:52 config.ru
drwxr-xr-x 3 deployer admin 4.0K Mar 11 20:52 db
-rw-r--r-- 1 deployer admin 1.9K Mar 11 20:52 Gemfile
-rw-r--r-- 1 deployer admin 5.1K Mar 11 20:52 Gemfile.lock
-rw-r--r-- 1 deployer admin 616 Mar 11 20:52 .gitignore
drwxr-xr-x 5 deployer admin 4.0K Mar 11 20:52 lib
drwxr-xr-x 2 deployer admin 4.0K Mar 12 20:53 log
drwxr-xr-x 3 deployer admin 4.0K Mar 12 19:12 public
-rw-r--r-- 1 deployer admin 249 Mar 11 20:52 Rakefile
-rw-r--r-- 1 deployer admin 478 Mar 11 20:52 README.rdoc
-rw-r--r-- 1 deployer admin 9 Mar 11 20:52 .ruby-gemset
-rw-r--r-- 1 deployer admin 11 Mar 11 20:52 .ruby-version
drwxr-xr-x 8 deployer admin 4.0K Mar 11 20:52 test
drwxr-xr-x 6 deployer admin 4.0K Mar 12 20:53 tmp
drwxr-xr-x 3 deployer admin 4.0K Mar 11 20:52 vendor
답변1
오류 메시지는 에 지정된 디렉토리를 입력 할 수 없음 Failed at step CHDIR
을 의미합니다 . 로 지정되었지만 나중에는 으로 나열됩니다 .systemd
cd
WorkingDirectory
/opt/www/my-app.com
/opt/www/my-app
또 다른 문제는 프로세스에 데몬화를 지시하는 옵션으로 시작하지만 unicorn_rails
(시작된 프로세스는 하위 프로세스로 포크되고 즉시 종료됨) 이를 지정하지 않으므로 기본값으로 설정되고 프로세스가 계속 유지될 것으로 예상한다는 것입니다. 옵션을 제거하거나 지정해야 합니다.-D
unicorn_rails
[Service]
Type
simple
systemd
-D
Type=forking
예시 보기유니콘 유닛 파일
답변2
/opt/www/my-app.com
예를 들어 try 대신 문자 대소문자 때문일 수 있습니다./opt/www/My-app.com