Це перша стаття на Розробці опублікована мною, проба пера так сказати. Прошу не судити строго. Ця стаття була написана мною ще у вересні 2007 року. Хоча і досі не втратила своєї актуальності.
У цій статті ми розглянемо установку і налаштування Web-сервера Apache 2, Ruby 1.8 (mod_ruby + eruby) для використання їх на локальній машині під операційною системою Linux(Ubuntu/Debian).
Інсталяція
Для початку встановлюємо необхідні пакети з репозиторія:
Ми будемо використовувати конфігурацію Apache «по замовчуванню».
Після інсталяції mod_ruby, буде створений файл /etc/apache2/mods-available/ruby.load з наступним вмістом:
Конфігурування Apache
В дистрибутивах на базі Ubuntu/Debian конфігураційний файл httpd.conf розбитий на велику кількість менших файлів у директорії /etc/apache2.
Для конфігурації mod_ruby створимо файл /etc/apache2/mods-available/ruby.conf. Також необхідно створити посилання на нього до каталогу /etc/apache2/mods-enabled, щоб він завантажувався автоматично під час старту Apache.
З докладним описом процесу інсталяції і налаштування можна ознайомитися .
Ми будемо використовувати зв'язку eRuby + mod_ruby.
mod_ruby — це вбудований інтерпретатор Ruby для веб-сервера Apache.
eRuby — це система шаблонів, яка вбудовує код Ruby у текстовий документ. Вона часто використовується, щоб вставляти код Ruby в HTML документи, як ASP, JSP і PHP. Зазвичай має розширення *.rhtml. Є шаблонізатором по замовчуванню в Ruby on Rails. Код включається за допомогою пари роздільників "<%" і "%>".
<% print "hello world" %>
Додамо наступні рядки до /etc/apache2/mods-available/ruby.conf:
<IfModule mod_ruby.c>
RubyRequire apache/eruby-run
# Обробляти файлами з директорій /eruby як файли eRuby
<Location /eruby>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Location>
# Обробляти *.rhtml файли як eRuby файли
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
</IfModule>
<Directory /var/www/eruby>
AllowOverride All
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
AddType text/html .rhtml
Існує одна проблема, коли ви здійснюєте запит (наприклад, ), mod_ruby викликає помилку
/usr/lib/ruby/1.8/apache/eruby-run.rb:101:in `compile_file': Is a directory - /var/www/eruby/ (Errno::EISDIR).
Щоб виправити це додамо наступний рядок до ruby.conf.
RedirectMatch ^/eruby/?$ /eruby/index.rhtml
Перезапустимо веб-сервер командою:
sudo /etc/init.d/apache2 restart
Створимо файл /var/www/eruby/index.rhtml:
<%= Time.now %>
Перейдемо у Web-броузері за адресою і побачимо поточну дату і час.
Вуаля, готово!
Відображення помилок mod_ruby
mod_ruby не терпить невдачу з попередженнями(warnings) і повідомлення про попередження не записуються до log-файлу (наприклад, /var/log/apache2/error.log). Тільки повідомлення про помилки(errors) записуються до цього файлу. Так що забудьте про попередження під mod_ruby. Можливо є якийсь діагностичний рівень, на якому це можна встановити, але мені не відомо про це :(.
Коли Ruby зазнає синтаксичну або іншу помилку він повертає «Internal Server Error (500)» і повідомлення про помилку записується до log-файлу Apache. Щоб слідкувати за помилками доводиться читати цей файл або використовувати утиліту tail:
sudo tail -f /var/log/apache2/error.log
Постійно доводиться переключатися у консоль, шо не дуже зручно у процесі написання коду.
Для виведення помилок на Web-сторінку використовується опція ErrorDocument Apache.
Створимо файл /var/www/eruby/errors/error_500.rhtml з наступним вмістом:
Уявлення не маю ). Ніколи не доводилось стикатися з fastcgi.
Наскільки мені здається, mod_ruby тільки і придатний для того щоб парсити *.rhtml файли.
Для важчих задач є зручний .
Коментарі (4)
RSS згорнути / розгорнутиblaster
lemon
Наскільки мені здається, mod_ruby тільки і придатний для того щоб парсити *.rhtml файли.
Для важчих задач є зручний .
mamantoha
zenyk
Тільки зареєстровані й авторизовані користувачі можуть залишати коментарі.