2011-02-08 17 views
6

Ubuntu'da Lighty'de hem rayları hem de PHP'yi çalıştırmanın bir yolu olup olmadığını merak ediyorum. Ben hem PHP projemi hem de Rails projemi tek bir sunucuda/etki alanında çalıştırmak istiyorum.Linux'ta Lighttpd'de Rayları ve PHP'yi Çalıştırma

Linux konusunda çok az tecrübem var, bu yüzden naifliğimi bağışla.

Eğer gidecekseniz lütfen bana bildirin :)

cevap

3

Her ikisini de çalıştırmak gerçekten çok basit. Her zaman yaparım (ROR, Redmine ve geri kalanı için PHP'yi çalıştırmak için).

ROR için 2 gerçek seçeneğiniz vardır. Ya FastCGI'den (ne yapıyorum), ya da bağımsız bir sunucu (Mongrel gibi) ve proxy ile çalıştır. Her ikisinin de avantajları var. FastCGI, kendi kendine yeten (ikincil sunucu çalıştıran) bir avantajı vardır. Bağımsız olarak yapılandırmanın daha kolay olması avantajı vardır.

Belirli sorularınız varsa, size rehberlik edebilirim, ancak bunun nasıl yapılacağı konusunda internette kılavuzlar bulunmaktadır.

Benim lighttpd.conf:

$HTTP["host"] =~ "my.ror.site" { 
    server.error-handler-404="/dispatch.fcgi" 
    fastcgi.server = (".fcgi" => ("ror_1" => (
      "min-procs"=>8, 
      "max-procs" => 8, 
      "socket" => "/tmp/myrorlock.fastcgi", 
      "bin-path"=> "/path/to/ror/site/public/dispatch.fcgi", 
      "kill-signal" => 9, 
      "bin-environment" => ("RAILS_ENV" => "production") 
    ))) 
} 

fastcgi.server = (".php" => 
    (
     (
      "socket" => "/tmp/php-fastcgi.socket", 
      "bin-path" => "/usr/bin/php-cgi -c /etc/php.ini", 
      "min-procs" => 1, 
      "disable-time" => 1, 
      "max-procs" => 1, 
      "idle-timeout" => 20, 
      "broken-scriptfilename" => "enable", 
      "bin-copy-environment"=> (
       "PATH", "SHELL", "USER" 
      ), 
      "bin-environment" => (
       "PHP_FCGI_CHILDREN" => "40", 
       "PHP_FCGI_MAX_REQUEST" => "50000" 
      ) 
     ) 
    ) 
) 

Ve işte bu kadar. kill-signal seçeneğini unutmayın. Bu önemli, aksi takdirde sunucuyu yeniden her zaman her yerde zombi işlemleri ile rüzgar olacaksınız ...

+0

yanıtı için teşekkürler, şu anda sorunumu çözecek gibi görünüyor: D – Zen

+0

'$ HTTP [" host "] = ~" my.ror.site "' - The = = ~ ' Bu, gerekli olmayan normal bir ifade karşılaştırması yapmak anlamına gelir. Normal bir dizge karşılaştırması yapmak istediğinizde '==' kullanın. [Daha fazla bilgi] (http://redmine.lighttpd.net/wiki/lighttpd/Docs:Configuration#Conditional-Configuration). Bunun dışında örnek için teşekkürler! –

+0

@Garret: İyi nokta. Aslında bende düzenli ifadeleri kullanıyorum (çünkü birkaç nedenden ötürü ona işaret eden birden fazla alan var). Ben sadece burada yayınlamak için (sanitized) çıkardı. Ama bahsetmeye değer bir şey ... – ircmaxell

-2

Ben Lighty kullanmayın Bunu yapmanın bir yolu. Yolcu Eklentisinin Apache'ye olan gücü göz önünde bulundurulduğunda, raylar en iyi Yolcu ve Apache ile sunulur. Ben başka bir yere yolunu işaret ederek benim Rails uygulaması ile aynı alanda Wordpress (PHP) hizmet verdim. Here's an article to follow. HTH.

+0

Cevabınız için teşekkürler, ama apache değil, açık çalıştırmak için yapılandırma ile ilgili yardım istedi. Özellikle Apache değil. – Zen

1

Lighty'nin yapılandırma dizininin conf.d alt dizinindeki fastcgi.conf'a bakın (Ubuntu'da nerede bulunduğundan emin olun, ancak hızlı arama, /etc/lighttpd'u önerir). PHP ve Rails için yorumlanmış örnekler vardır; ikisini birleştirerek, aradığınız düzeni elde edebilmelisiniz (yine de önce birini çalıştırmayı ve sonra diğerini ayarlamayı öneririm).

FastCGI, Lighty'nin Ruby veya PHP gibi çalışma zamanlarıyla iletişim kurabileceği yöntemdir. Lighty ayrıca SCGI kullanabiliyor, ama ben asla kullanmıyorum ve ne kadar iyi çalıştığından emin değilim (son olarak hala deneysel-ish olduğunu duydum).

Ayrıca, PHP/MySQL'e özgü olsa da, Lighty'nin dokümantasyon wiki'sindeki Optimizing FastCGI sayfasını da bulabilirsiniz.

+0

bir göz atacaksınız, – Zen