2011-08-01 19 views
5

Şu anda CodeIgniter uygulamasına ait yapıları ve dağıtımları otomatikleştirmek için Phing ve Jenkins kullanıyorum. Sorun yaşıyorum bir sorun apache hizmetini yeniden başlatıyor. Phing'i denedim ama yeterli izin yok. Yeniden başlatmanın en iyi yolu nedir?Jenkins veya Phing ile apache'nin yeniden başlatılması

DÜZENLEME:

sudoer dosyasına Jenkins'i ekleme ve hizmet httpd yeniden exec'ing sonra Jenkins atar: Süreç sızan dosya tanımlayıcıları. Aşağıda, Jenkins aracılığıyla Phing çıktısının bir pasajı bulunmaktadır. Bir geçici çözüm cihaza yüklemek olduğunu söylüyor. Eğer Linux üzerinde iseniz ... Bunun ne anlama geldiğini emin değil

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

Jenkins'de yeni bir süreç oluşturma ile ilgili bir sorun var. Yeni bir işlem kimliği oluşturulacak gibi apache'nin yeniden başlatılması bu kategoriye giriyor sanırım. Yeniden oluşturmayı görev sonrası bir göreve eklemeyi denediniz mi? Sıkıştırma ve phpdepend görevlerini yaptıktan sonra neden Apache'yi yeniden başlattığınızı merak ediyorum. Vhost yapılandırmalarını veya bir şeyi yeniden mı yapıyorsunuz? –

+0

APC kullanıyorum. Yeniden başlamazsam, bazen beyaz bir ölüm ekranı olur. Eğer APC ile bu problemin bir yolunu biliyorsanız, bana bildirin :) Ama apache'nin bir post-build görevi olarak yeniden başlatılması için bir eklentisi var mı? –

+0

Aslında sadece eklentiyi buldum, bahşiş için teşekkürler! Fakat apache'yi yeniden başlatmadan ölüm sorununun beyaz ekranına bir çözüm bulabilirsem, bu harika olurdu! –

cevap

5

bunun yeterli ayrıcalıkları Apache'yi yeniden izin vermek için sudo komutuyla Phing çalıştırabilirsiniz.

sudo phing restartapache 

Restartapache'nin apache restart komutunu çağıran bir exec görevi olduğunu varsayarsak. Ör:

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

ne olursa olsun kullanıcı hesabı için (bu örnekte Jenkins kullanıcı için sudo parolası istemini kapatma gösterir) altında yapı çalıştıran size sudo izinlerini güncelleyebilir şifre isteyen sudo komutu önlemek için:

sudo visudo 

Daha sonra aşağıdaki satırları ekleyin:

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

yukarıda this answer göre güvenliğini artırmak için düzenlendi Böylece Jenkins'in sadece apache'yi parola olmadan ve başka bir şey olmadan yeniden başlatmasına izin verilir.

+0

, bazı istisnalarla çalışıyor. Yeni bilgi için açıklamaya bakın. –

+2

jenkins'in çalışması için battaniye izninin verilmesi * her şey * kötü bir fikirdir. Çözümünüzü nasıl geliştireceğinize dair buradaki [http://security.stackexchange.com/a/26267/2264] adresine bakın. – tylerl

+1

Teşekkürler. Cevabımı gelişmiş çözümünüzle güncelledim. –

İlgili konular