LaunchAgent가 아닌 LaunchDaemon으로 실행하고 싶을 것입니다. 데몬은 시스템 컨텍스트에서 실행되므로 누군가 로그인하기 전에 시스템 시작시 실행할 수 있습니다. 에이전트는 로그인 세션 내에서 실행되므로 사용자가 로그인 할 때까지 시작하지 않습니다 (루트가 아닌 사용자로 실행하고 두 명의 사용자 빠른 전환으로 한 번에 로그인하면 각 사용자별로 사본이 실행됩니다 ...). .plist 파일 자체는 데몬 대 에이전트와 거의 동일하지만 차이점은/Library/LaunchDaemons 또는/Library/LaunchAgents에 넣었는지 여부입니다.
파일 자체는 몇 가지 사항에 따라 다릅니다. 나는 그것이 시스템 부팅시 시작될 필요가 있다고 가정하고있다. 자체를 대몬 비하인화 (즉, 배경으로 떨어 뜨림)합니까? launchd는 스스로를 대몬 화하기 위해 시작하는 프로그램이 마음에 들지 않습니다. 모니터 할 수 있기를 원하기 때문에 충돌/종료시 다시 시작할 수 있습니다. 유니콘이 데몬 화하지 않는 옵션을 가지고 있다면, 그것을 사용하십시오; 그렇지 않다면, .plist 파일을 약간 수정해야합니다. 첫째, 여기에 기본 실행에서-시작 LaunchDaemon .plist 파일입니다 :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>local.unicorn</string>
<key>ProgramArguments</key>
<array>
<string>/full/path/to/unicorn</string>
<string>-c</string>
<string>/xyz/project/config/unicorn.rb</string>
<string>-E</string>
<string>production</string>
</array>
<key>WorkingDirectory</key>
<string>/xyz/project</string>
<key>RunAtLoad</key>
<true/>
<key>EnableTransactions</key>
<false/>
</dict>
</plist>
유니콘 daemonizes 자체는, 당신은 추가해야하는 경우이합니다 (</dict>
라인 전) :
<key>KeepAlive</key>
<false/>
<key>AbandonProcessGroup</key>
<true/>
이 경우, 디먼 화하지 않는 (또는 당신이이 ProgramArguments을 변경하여 daemonizing을 건너 얻을 수있다), 선택적으로 대신을 추가 할 수 있습니다
<key>KeepAlive</key>
<true/>
이름/라이브러리/LaunchDaemons/LOC 같은 파일 뭔가 al.unicorn.plist (이름은 레이블과 일치해야 함), 소유권을 root : wheel으로 설정하고 사용 권한을 600으로 설정하십시오. sudo launchctl load /Library/LaunchDaemons/local.unicorn.plist
으로 활성화하거나 다시 부팅하여 활성화 할 수 있습니다.
편집 :
이
<key>StandardOutPath</key>
<string>/tmp/unicorn.out</string>
<key>StandardErrorPath</key>
<string>/tmp/unicorn.err</string>
<key>Debug</key>
<true/>
그런 다음 (sudo launchctl unload /Library/LaunchDaemons/local.unicorn.plist
)를 언로드하고 다시로드하고,/tmp에 /var/log/system.log 확인 : 문제 해결을 위해, 당신은 .plist 파일에 다음과 같이 뭔가를 추가 할 수 있습니다 /unicorn.out 및 /tmp/unicorn.err에 대해 힌트를 얻으십시오.
EDIT2가 : 다른 사용자로 실행 같은 것을 추가 :
<key>UserName</key>
<string>choise</string>
EDIT3 : 내가 RVM에 익숙하지 않아요하고 구성을 처리하는 방법,하지만 당신은 몇 가지를 설정해야처럼 소리 환경 변수를 올바르게 설정하십시오. 일반 셸의 디렉토리에 cd'ing하지 않으므로 .rvmrc 파일이 실행되지 않습니다. 이것을 해결할 수있는 몇 가지 방법이 있습니다.
첫째, 당신은 환경 변수를 설정할 필요가 무엇인지 파악하고,이 같은으로 .plist 파일들을 추가 할 수 있습니다
<key>EnvironmentVariables</key>
<array>
<key>ruby_string</key>
<string>ruby-1.9.2-p136</string>
<key>gemset_name</key>
<string>unicorn</string>
</array>
...하지만, 특히, 조금 깨지기 쉬운 될 수있다 그들이 변하면; 일관되게 작동하려면 .rvmrc와 .plist 파일을 함께 업데이트해야합니다.
유니콘을 시작하기 전에 실제로 쉘을 열고 source
에 필요한 모든 설정 파일을 설치하는 것이 좋습니다. 쉘 스크립트를 사용하거나 쉘에 필요한 명령 시퀀스를 (하나의 긴) 매개 변수로 포함시켜이 작업을 수행 할 수 있습니다. 이 작업을 수행하려면이 같은으로 ProgramArguments 섹션을 대체 :
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>source /etc/rvmrc; source /Users/server/.rvmrc; source .rvmrc; /Users/server/.rvm/gems/[email protected]/bin/unicorn -c /Users/server/Sites/Rails/q/config/unicorn.rb -E production</string>
</array>
(하지만 존재하지 않는 rvmrc 파일 중 하나를 sourceing 생략.)
당신이 OS X의에 귀하의 유니콘을 시작하는 관리나요 시작? 그렇다면 작업 스크립트를 어딘가에 게시하십시오. 나는 os x 서버에서 성공하지 않고 똑같이하려고 노력하고있다 ... – Yannis