Tôi thực sự muốn chạy một số mã ruby trên máy chủ Apache. Tôi đã cài đặt libapache2-mod-ruby
và libapache-ruby1.8
(danh sách đầy đủ những gì được cài đặt là here). Tôi phải làm gì bây giờ để chạy nó (here`s một ví dụ)?Ruby trên Apache với mod_ruby
Trả lời
mod-ruby không thực sự là cách ưa thích để tham gia cộng đồng Ruby.
Cách dễ nhất để bạn bắt đầu cài đặt hành khách (trough gem) và định cấu hình apache để sử dụng nó.
Nó là rất dễ dàng để làm,
bạn có thể làm theo các hướng dẫn chính thức ở đây: http://www.modrails.com/install.html
Dưới đây là một quick howto để có được mod_ruby lên và chạy. Một bản tóm tắt ngắn các bước tôi đã sử dụng trên Ubuntu 12.04 được sao chép ở đây:
Cài đặt mod_ruby cho apache:
sudo apt-get install libapache2-mod-ruby
Để kích hoạt mod_ruby cho tất cả các file trong/var/www, chỉnh sửa tập tin cấu hình apache của bạn, ví dụ: /etc/apache2/sites-enabled/000-default
tôi đã có thêm +ExecCGI
-Options
, và thêm phần liên quan đến Ruby:
<Directory /var/www/>
Options Indexes +ExecCGI
# Ruby with mod_ruby
RubyRequire apache/ruby-run
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
AddType text/html rb
</Files>
</Directory>
Hạn chế chính mà tôi thấy là tôi dường như không thể tìm cách thiết lập loại mime/content từ bên trong kịch bản lệnh. Bạn phải đặt nó trên toàn cầu cho tất cả các tập lệnh ruby với chỉ thị AddType text/html rb
.
Cuối cùng, bạn cần một tập lệnh thử nghiệm trong/var/www và nó phải được thực thi. Ví dụ, tôi có /var/www/test.rb
:
#!/usr/bin/ruby
puts "Hello World!<br><pre>"
ENV.each { |k,v|
puts "#{k}=#{v}"
}
puts "</pre>"
Đừng quên để làm cho nó thực thi:
chmod a+x /var/www/test.rb
Và kết quả đầu ra này:
Hello World!
HTTP_HOST=10.0.1.3
HTTP_CONNECTION=keep-alive
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
HTTP_ACCEPT_ENCODING=gzip,deflate,sdch
HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8
HTTP_COOKIE=__test=1;
PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin
SERVER_SIGNATURE=
Apache/2.2.22 (Ubuntu) Server at 10.0.1.3 Port 80
SERVER_SOFTWARE=Apache/2.2.22 (Ubuntu)
SERVER_NAME=10.0.1.3
SERVER_ADDR=10.0.1.3
SERVER_PORT=80
REMOTE_ADDR=10.0.1.3
DOCUMENT_ROOT=/var/www
[email protected]
SCRIPT_FILENAME=/var/www/test.rb
REMOTE_PORT=38188
SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET
REQUEST_URI=/test.rb
SCRIPT_NAME=/test.rb
MOD_RUBY=mod_ruby/1.2.6
GATEWAY_INTERFACE=CGI-Ruby/1.1
tôi đã chạy một điểm chuẩn Apache trên mod_ruby so với Ruby đơn giản như CGI (mà xoay vòng trình thông dịch Ruby mỗi yêu cầu) và mod_ruby nhanh hơn khoảng 8 lần và ngang bằng với hiệu năng PHP.
- 1. Tại sao không có một mod_ruby khả thi cho Apache?
- 2. Tại sao Rails không thể làm việc với mod_ruby?
- 3. PHP stdout trên Apache
- 4. Apache Cassandra tích hợp với Apache Solr
- 5. Cài đặt ruby-RVM trên Ubuntu 11.10 với ruby 1.9.3
- 6. Phải khởi động lại Apache khi sử dụng Django trên Apache với mod_wsgi
- 7. Apache HttpClient 4.1 trên Android
- 8. Ruby On Rails trên Windows với Mongrel
- 9. Cuộc thăm dò dài với PHP trên Apache
- 10. Chạy Python từ virtualenv với Apache/mod_wsgi, trên Windows
- 11. Chạy ứng dụng django trên apache với uWSGI
- 12. Undestanding “408 Request Timeout” trên Apache với PHP
- 13. Ruby on Rails trên IIS?
- 14. Bật SSL trên apache instance trên EC2
- 15. Đa luồng với Apache DBCP
- 16. Khi nào nên sử dụng Apache so với Apache + Tomcat?
- 17. Apache Camel với nhóm ActiveMQ
- 18. Mahout Plugin cho ruby trên đường ray
- 19. Lợi thế của RESTEasy trên Apache CXF?
- 20. Máy chủ Mercurial trên Apache/Windows
- 21. Cách khởi động Apache trên EC2
- 22. Sử dụng WebSocket trên máy chủ Apache
- 23. Triển khai Django trên máy chủ apache
- 24. Apache Storm so với Hadoop
- 25. difflib trên Ruby
- 26. Máy chủ Apache chậm trên EasyPHP
- 27. Lỗi Apache trên Mac OS X Lion
- 28. APC trên PHP 5.3.10/Apache 2.2.21
- 29. nội dung động với ajax (ruby trên đường ray)
- 30. IIS tương đương với VirtualHost trong Apache
Hành khách dường như là dành cho Rails - đó là những gì @folone muốn? –
Tôi với Brent. Có nhiều cách sử dụng để chèn Ruby vào giữa một yêu cầu Apache (xác thực, ủy quyền, sửa chữa các yêu cầu không đúng định dạng, v.v.) thay vì làm bộ chuyển đổi điểm cuối - đó là, những gì Hành khách + Đường ray làm cùng nhau. –