2011-02-08 37 views
6

Vâng, tôi tự hỏi liệu có cách nào để chạy cả hai đường ray và PHP trên Lighty, trên Ubuntu. Tôi muốn chạy cả dự án PHP và các dự án Rails trên một máy chủ/miền.Chạy Rails và PHP trên Lighttpd trên Linux

Tôi có ít kinh nghiệm với Linux thực sự, vì vậy hãy tha thứ cho sự ngây thơ của tôi.

Nếu có cách thực hiện việc này, vui lòng cho tôi biết :)

Trả lời

3

Thực sự khá đơn giản để chạy cả hai. Tôi làm tất cả thời gian (ROR để chạy Redmine, và PHP cho phần còn lại).

Bạn có 2 tùy chọn thực sự cho ROR. Hoặc là phục vụ nó từ FastCGI (những gì tôi làm), hoặc chạy nó với một máy chủ độc lập (như Mongrel, vv) và proxy cho nó. Cả hai đều có lợi thế. FastCGI có lợi thế là nó độc lập (không có máy chủ phụ để chạy). Các độc lập có lợi thế là nó dễ dàng hơn để cấu hình.

Nếu bạn có câu hỏi cụ thể, tôi có thể hướng dẫn, nhưng có hướng dẫn trên internet về cách thực hiện việc này.

lighttpd.conf của tôi:

$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" 
      ) 
     ) 
    ) 
) 

Và đó là nó. Lưu ý tùy chọn kill-signal. Điều đó quan trọng, nếu không bạn sẽ kết thúc với các quy trình zombie ở mọi nơi mỗi khi bạn khởi động lại máy chủ ...

+0

đang cố gắng thực hiện ngay bây giờ, có vẻ như nó sẽ giải quyết được vấn đề của tôi: D – Zen

+0

'$ HTTP [" host "] = ~" my.ror.site "' - The '= ~' có nghĩa là nó đang so sánh cụm từ thông dụng, điều này có thể không cần thiết. Sử dụng '==' khi bạn muốn so sánh chuỗi bình thường. [Thông tin thêm] (http://redmine.lighttpd.net/wiki/lighttpd/Docs:Configuration#Conditional-Configuration). Khác hơn thế, cảm ơn cho mẫu! –

+0

@Garret: Điểm tốt. Tôi thực sự sử dụng regex trong tôi (vì có nhiều hơn một tên miền trỏ đến nó, vì một vài lý do). Tôi chỉ lột nó ra (được khử trùng) để đăng ở đây. Nhưng đó là điều đáng nói đến ... – ircmaxell

-2

Tôi không sử dụng Lighty. Rails được phục vụ tốt nhất với Passenger và Apache, xem xét sức mạnh của add-on hành khách đối với Apache. Tôi đã phục vụ Wordpress (PHP) trong cùng một miền với ứng dụng Rails của tôi bằng cách trỏ đường dẫn đến một nơi khác. Here's an article to follow. HTH.

+0

Cảm ơn bạn đã trả lời nhưng tôi đã yêu cầu trợ giúp định cấu hình để chạy nhanh, không phải apache. Cụ thể không phải Apache. – Zen

1

Kiểm tra fastcgi.conf trong thư mục con conf.d của thư mục cấu hình của Lighty (không chắc chắn vị trí nằm trên Ubuntu, nhưng tìm kiếm nhanh gợi ý /etc/lighttpd). Có những ví dụ bình luận cho cả PHP và Rails; bằng cách kết hợp cả hai, bạn sẽ có thể nhận được thiết lập mà bạn đang tìm kiếm (mặc dù tôi khuyên bạn nên bắt đầu làm việc trước và sau đó thiết lập một thiết bị khác).

FastCGI là phương pháp mà Lighty có thể giao tiếp với các thời gian chạy như Ruby hoặc PHP. Lighty cũng có thể sử dụng SCGI, mặc dù tôi chưa bao giờ sử dụng nó và không chắc chắn nó hoạt động tốt như thế nào (cuối cùng tôi nghe nó vẫn là thử nghiệm-ish).

Bạn cũng có thể tìm thấy trang Optimizing FastCGI trên wiki tài liệu của Lighty hữu ích, mặc dù nó khá là PHP/MySQL cụ thể.

+0

sẽ có giao diện, cảm ơn phản hồi – Zen

Các vấn đề liên quan