Перезапуск apache с помощью Jenkins или Phing

В настоящее время я использую Phing и Jenkins для автоматизации сборки и развертывания моего приложения CodeIgniter. Одна проблема, с которой у меня возникли проблемы, - это перезапуск службы apache. Я пытался в Phing, но не хватает разрешений. Каков наилучший способ перезапустить?

ИЗМЕНИТЬ:

После добавления jenkins в файл sudoer и выполнения перезапуска службы httpd Jenkins выдает: Обработать просочившиеся файловые дескрипторы. Ниже приведен фрагмент вывода Phing через Jenkins. В нем говорится, что обходным путем является установка daemonize. Не уверен, что это значит...

...Build_test > compress:

     [echo] YUI Compression started
     [echo] Replacing normal JS with compressed files.
     [echo] Replacing normal CSS with compressed files.
     [echo] chmoding assets
     [echo] YUI Compression ended

Build_test > pdepend:


Build_test > httpd_restart:

     [echo] Stopping httpd: [  OK  ]
     [echo] Starting httpd: [  OK  ]


BUILD FINISHED

Total time: 13.1424 seconds

Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
[JDepend] JDepend plugin is ready
[JDepend] Found 68 classes in 1 packages
Finished: SUCCESS

person lamp_scaler    schedule 01.08.2011    source источник
comment
Существует проблема с созданием нового процесса в Jenkins. Я предполагаю, что перезапуск apache попадает в эту категорию, поскольку будет создан новый идентификатор процесса. Пробовали ли вы добавить перезагрузку в задачу после сборки? Мне просто интересно, почему вы все равно перезапускаете Apache после выполнения задач сжатия и phpdepend? Вы перестраиваете конфиги vhost или что-то в этом роде?   -  person Tom Jowitt    schedule 01.08.2011
comment
Я использую АПК. Если я не перезагружаюсь, иногда я получаю белый экран смерти. Если вы знаете, как обойти эту проблему с APC, дайте мне знать :) Но есть ли у них плагин для перезапуска apache после сборки?   -  person lamp_scaler    schedule 01.08.2011
comment
Я на самом деле только что нашел плагин, спасибо за совет! Но если бы я мог исправить проблему с белым экраном смерти без перезапуска apache, это было бы здорово!   -  person lamp_scaler    schedule 01.08.2011
comment
Никогда не сталкивался с этой проблемой APC, но я бы изучил ее и попытался исправить, а не кодировать ее с перезапуском apache. Удачи!   -  person Tom Jowitt    schedule 02.08.2011


Ответы (1)


Если вы работаете в Linux, вы можете запустить Phing с помощью команды sudo, чтобы предоставить ему достаточно привилегий для перезапуска apache.

sudo phing restartapache

Предполагая, что restartapache — это задача exec, которая вызывает команду перезапуска apache. Например:

<target name="restartapache" description="Restarts the web server">
    <exec command="/etc/init.d/apache2 restart" />
</target>  

Чтобы команда sudo не запрашивала пароль, вы можете обновить свои разрешения sudo для любой учетной записи пользователя, под которой вы запускаете свою сборку (в этом примере показано отключение запроса пароля sudo для пользователя jenkins):

sudo visudo

Затем добавьте следующие строки:

Defaults:jenkins !requiretty,!lecture
jenkins ALL=NOPASSWD:/etc/init.d/apache2

Вышеуказанное было отредактировано для повышения безопасности в соответствии с этот ответ, так что Дженкинсу разрешено перезапускать apache только без пароля и ничего больше.

person Tom Jowitt    schedule 01.08.2011
comment
получил это работает с некоторыми исключениями. Взгляните на описание новой информации. - person lamp_scaler; 01.08.2011
comment
Предоставление Дженкинсу полного разрешения на запуск всего — плохая идея. См. этот ответ, чтобы узнать, как улучшить ваше решение. - person tylerl; 01.01.2013
comment
Спасибо. Я обновил свой ответ вашим улучшенным решением. - person Tom Jowitt; 03.01.2013