2011-08-01 18 views
5

私は現在、CodeIgniterアプリケーションのビルドとデプロイを自動化するためにPhingとJenkinsを使用しています。私が問題を抱えている問題の1つは、Apacheサービスを再起動することです。私はPhingで試しましたが、十分なアクセス許可がありません。再始動する最良の方法は何ですか?JenkinsやPhingでApacheを再起動する

EDIT:

sudoerファイルにジェンキンスを追加し、サービスのhttpdの再起動をexec'ingた後、ジェンキンスはスロー:プロセス漏洩したファイルディスクリプタ。以下は、Jenkins経由のPhing出力のスニペットです。回避策は、daemonizeをインストールすることです。あなたは、Linuxを使っているのであれば、あなたはそれが十分な権限のapacheを再起動できるようにsudoコマンドでのPhingを実行することができます

...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 
+1

ジェンキンスの新しいプロセスの産出に問題があります。私は新しいプロセスIDが作成されるので、このカテゴリにはApacheの再起動があると思います。ポストビルドタスクに再起動を追加しようとしましたか?私はちょうどあなたが圧縮とphpdependタスクをとにかくした後、なぜApacheを再起動しているのだろうと思っていますか? vhostの設定や何かを再構築していますか? –

+0

私はAPCを使用しています。私が再起動しなければ、時々私は死の白い画面を得る。 APCでこの問題を回避する方法を知っていれば教えてください:)しかし、ポストビルドタスクとしてApacheを再起動するためのプラグインはありますか? –

+0

私は実際にプラグインを見つけました、チップのおかげで!しかし、もし私がapacheを再起動することなく死の問題の白い画面の修正を得ることができれば、それは素晴らしいことでしょう! –

答えて

5

...それが何を意味するのかわかりません。

restartapacheがapache restartコマンドを呼び出すexecタスクであると仮定します。例:

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

あなたは(この例では、ジェンキンスユーザーのためのsudoのパスワードプロンプトをオフにする実証)の下でビルドを実行しているものは何でもユーザーアカウントのsudoの権限を更新することができ、パスワードの入力を求めるsudoコマンドを避けるために:上記this answerに係るセキュリティを向上させるために編集された

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

sudo visudo 

そして次の行を追加JenkinsはパスワードなしでApache以外のものを再起動することはできません。

+0

はいくつかの例外を除いて動作しています。新しい情報の説明を見てください。 –

+2

ジェンキンズに* anything *を実行する許可を与えることは悪い考えです。ソリューションの改善方法については、[この回答はこちら](http://security.stackexchange.com/a/26267/2264)を参照してください。 – tylerl

+1

ありがとうございます。あなたの改善されたソリューションで私の答えを更新しました。 –

関連する問題