Для начала переустановил VDS из VDSmanager'а, выбрав голую FreeBSD.
Затем, подготовив сервер (как описано в статье Установка ISPmanager на чистую FreeBSD), собственно установил ISPmanager. На этапе установки приложений выбрал «Minimal install (web-server only)».
Когда установка завершится, ставим и активируем Nginx через «Возможности».
Затем ставим сами рельсы.
pkg_add -r rubygem-rails
Обновляем список команд:
rehash
Устанавливаем thin:
gem install thin
Устанавливаем mysql:
gem install mysql
Проверяем:
rails -v
ruby -v
thin -v
ruby -v
thin -v
Настраиваем связку nginx+thin (конфиг подсмотрен
- 1. В секции http:
upstream thin {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
server 127.0.0.1:3003;
}
- 2. Создаём через ISPmanager сайт (www-домен), заново открываем конфиг nginx
Редактируем секцию location / нашего сайта:
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://thin;
break;
}
}
Ниже ищем перенаправление для статики, зачастую это секция вида
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/%username%/data/www/%domain%;
access_log /home/httpd-logs/%domain%.access.log;
error_page 404 = @fallback;
}
Изменяем её следующим образом:
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/%username%/data/www/%domain%/%projectname%/public;
access_log /home/httpd-logs/%domain%.access.log;
error_page 404 = @fallback;
}
Объясню почему: дело в том, что работа с RoR требует чёткой структуры сайта. Весь публичнодоступный контент должен быть расположен в директории /public, туда мы и направили nginx в поисках статики.
Перезапустите nginx:
/usr/local/etc/rc.d/nginx restart
Создадим наш первый проект на Ruby.
Для этого выберем для него директорию:
cd /home/%username%/data/www/%domain%
где /home/%username%/data/www/%domain% — путь в папку для созданного выше домена, например /home/paveldurov/data/www/vkontakte.ruТеперь собственно создаём проект:
rails -d mysql %projectname%
Уточню, что если команда rails не работает («not found»), обновите список команд (воспользовавшись rehash) или указывайте полный путь к rails:
/usr/local/bin/rails -d mysql %projectname%
И да, %projectname% выше подразумевает любое название проекта, например — test, а опция -d означает что в качестве БД надо использовать MySQL.
Перейдите в директорию самого проекта (иначе нижеперечисленные команды выполняться не будут):
cd /home/%username%/data/www/%domain%/%projectname%
Запустите thin:
thin start
или просто:/usr/local/bin/thin start
Чтобы thin работал в фоновом режиме (как т.н. «демон»), используйте опцию -d, например:
thin -d start
Далее, создайте три базы данных.
К примеру, название проекта — testproject, тогда имена БД будут следующими:
- testproject_test
- testproject_development
- testproject_production
Также создайте пользователя MySQL.
Всё это пропишите в файле ./config/database.yml
Затем выполните следующую команду:
rake db:create
Если не создать и не подключить БД, вы будете постоянно сталкиваться с ошибкой
We're sorry, but something went wrong.
Напомню, что вышеперечисленные команды (thin, rake и т.д.) должны выполняться в домашней директории проекта.
Продолжение описания начала работы с ruby (в т.ч. создание первого контроллера) смотрите здесь.
Прочие методы установки Ruby on Rails на FreeBSD и просто интересные статьи:
- Nginx для Ruby on Rails. Установка nginx+passenger.
- Обсуждение на rubyclub.com.ua + описание процесса установки mongrel + apache
- Варианты настройки Ruby On Rails на максимальную производительность: mongrel vs lighttpd vs nginx
- «How to install Ruby on Rails on FreeBSD?» — установка apache+mod_fastcgi
- Ещё одна статья по установке mod_fastcgi
No comments:
Post a Comment