Запуск демона при запуске от имени конкретного пользователя в Mac OS X (Server) Mavericks

Я хочу запустить сервер CI (TeamCity 8.1) при запуске на сервере Mac OS X под управлением Mavericks.
Я не хочу, чтобы сервер CI запускался пользователем root, а другим пользователем в системе.


Пользователь, с которым я хочу запустить сервер, - это server1:staff.
Я установил TeamCity в /Applications / TeamCity. Папка TeamCity принадлежит server1: staff.


Затем я создал 2 plist в /Library / LaunchDaemons, принадлежащих root: wheel, но указав, что я хочу, чтобы этот процесс запускаться пользователем server1: staff.

вот plists. Этот запускает сервер:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>WorkingDirectory</key>
    <string>/Applications/TeamCity</string>
    <key>Debug</key>
    <false/>
    <key>Label</key>
    <string>jetbrains.teamcity.server</string>
    <key>OnDemand</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>bin/teamcity-server.sh</string>
        <string>run</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>logs/launchd.err.log</string>
    <key>StandardOutPath</key>
    <string>logs/launchd.out.log</string>
    <key>UserName</key>
    <string>server1</string>
</dict>
</plist>

этот запускает агент сборки, который запускает сборки:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Debug</key>
    <false/>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>jetbrains.teamcity.BuildAgent</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>launcher/bin/TeamCityAgentService-macosx-universal-32</string>
        <string>-c</string>
        <string>../conf/wrapper.conf</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>SessionCreate</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>logs/launchd.err.log</string>
    <key>StandardOutPath</key>
    <string>logs/launchd.out.log</string>
    <key>WorkingDirectory</key>
    <string>/Applications/TeamCity/buildAgent</string>
    <key>UserName</key>
    <string>server1</string>
</dict>
</plist>

при такой конфигурации сервер не запускается при запуске.


Единственный способ запустить сервер при запуске с моей конфигурацией-не указывать имя пользователя / группу пользователей в списке plist. Но при этом сервер запускается от имени пользователя root.


Я уже пытался изменить владельца plist, чтобы соответствовать server1: staff пользователя, но без успеха.


Я как бы застрял с этой конфигурацией, и я не знаю, что с ней не так.


Любые советы приветствуются.

[EDIT]


У меня нет ничего плохого в консоли.приложение о TeamCity.


Чтобы быть уверенным, я переустановил TeamCity с нуля и т. д.


В launchd ничего нет.ошибаться.бревно. Хотя я нашел это в launchd.из.бревно но я не знаю, когда это произошло (в настоящее время перезагрузки после удаления всех файлов журнала)

BuildId=null, AgentOwnAddress='null', AlternativeAddresses=[10.175.11.48, 192.168.2.92], Port=9090, Version='29939', PluginsVersion='29939-md5-51785f46b7e643a588892acce02b9333', AvailableRunners=[Ant, Duplicator, gradle-runner, Inspection, Ipr, JPS, Maven2, rake-runner, simpleRunner, Xcode], AvailableVcs=[perforce, mercurial, jetbrains.git, svn, cvs], AuthorizationToken='afccc2fae65d1c580e34d4aed4cc55df', PingCode='DX5fzIvbgFCvVghhwuvARdEU33XOfzCW'} 
jvm 1    | Call http://localhost:8111/RPC2 buildServer.registerAgent3: java.net.ConnectException: Connection refused 
jvm 1    | Registering on server http://localhost:8111, AgentDetails{Name='Default Agent', AgentId=null, BuildId=null, AgentOwnAddress='null', AlternativeAddresses=[10.175.11.48, 192.168.2.92], Port=9090, Version='29939', PluginsVersion='29939-md5-51785f46b7e643a588892acce02b9333', AvailableRunners=[Ant, Duplicator, gradle-runner, Inspection, Ipr, JPS, Maven2, rake-runner, simpleRunner, Xcode], AvailableVcs=[perforce, mercurial, jetbrains.git, svn, cvs], AuthorizationToken='afccc2fae65d1c580e34d4aed4cc55df', PingCode='DX5fzIvbgFCvVghhwuvARdEU33XOfzCW'} 
jvm 1    | Call http://localhost:8111/RPC2 buildServer.registerAgent3: java.net.ConnectException: Connection refused 
wrapper  | TERM trapped.  Shutting down.
jvm 1    | Processing shutdown hook. 
jvm 1    | Sending agent force shutdown command to: http://localhost:9090 
jvm 1    | Shutdown command successfully sent. Agent is exiting. 
jvm 1    | Stop command called 
jvm 1    | Agent process finished 
jvm 1    | Agent has exited with code: 30 
jvm 1    | Launcher is exiting 
wrapper  | <-- Wrapper Stopped  

[EDIT2] после перезапуска
У меня ничего нет в логах сервера и консоли.app (сервер не запускается, поэтому я думаю, что это ожидаемое поведение).

10
задан Spiff
04.12.2022 13:01 Количество просмотров материала 3403
Распечатать страницу

1 ответ

использование всех этих относительных путей немного сомнительный. Я думаю, что вы неправильно продумываете свой текущий рабочий каталог и относительные пути.

например, build agent plist указывает, что его рабочий каталог...

/Applications/TeamCity/buildAgent

...но один из аргументов программы, который вы передаете в двоичный файл запуска...

../conf/wrapper.conf.

Я уверен, что это будет трактоваться как относительно рабочего каталога of...

/Applications/TeamCity/buildAgent

... не двоичный каталог...

/Applications/TeamCity/buildAgent/launcher/bin.

так вы на самом деле говорите ему смотреть в главном...

/Applications/TeamCity/conf

...который обычно не имеет wrapper.conf, но я думаю, что, может быть, вы думали, что вы говорили ему, чтобы посмотреть в...

/Applications/TeamCity/buildAgent/launcher/conf

...где wrapper.conf как правило живет.

Я думаю, что у вас может быть другой рабочий каталог / относительный путь ошибки в ваших plists также. Например, похоже, что у вас есть два отдельных logs каталоги, поэтому у вас есть два отдельных набора файлов launchd stdout / stderr. Купить может быть, это то, что вы хотели.

Я думаю, что тебе лучше уладить эти проблемы пути первым. Это может быть ваша проблема, а не проблема запуска вообще. Но даже если это не так, вам нужно прояснить это, чтобы это не мешало дальнейшему устранению неполадок launchd.

1
отвечен Spiff 2022-12-05 20:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх