2015-06-14 3 views
2

Ruby on Rails - это фантастика, но встать и работать с ним может быть неприятным опытом, особенно для нового разработчика. У меня, случается, есть книга, которая делает Rails 4, но хостинг Dreamhost поддерживает Rails 3.2. Создание веб-приложений и невозможность их развертывания на хостинг, за которые я уже плачу, заставляет меня грустить, но изучение различий между 3.2 и 4, в то время как на самом деле изучение языка - не забава.Running Rails 4 на общедоступном хостинге Dreamhost

4 > 3.2, так что кажется, что Rails 4 работает и работает на хостинге Dreamhost - это путь. Оказывается, для этого есть instructions online, я столкнулся с множеством проблем, пытающихся следовать им. Работа с командной строкой, зарегистрированной на удаленном сервере, отчасти затруднена, потому что вы получите сообщения об ошибках, которые, когда Googled, не дают ответа, который вам может понадобиться, или предполагайте, что у вас нет знаний.

Как я могу заставить это работать, чтобы я мог учиться Rails?

+0

Вы используете VPN? Я только смог запустить его с помощью VPN, а не для общего хостинга. –

+0

Я пытаюсь заставить его работать на общем хостинге. Просто обновил вопрос, чтобы отразить это, и ответ, чтобы отразить последний прогресс. Вход будет приветствоваться. @JasonMorelandDigitalrecline –

+0

Невозможно обновить его на общем хостинге, так как вы не можете изменить окружающие вещи. Единственный способ - VPN мечты. Тогда это, в основном, ваша коробка, и у вас есть корневой доступ к среде изменений и установка собственных программных продуктов. Общий хостинг не позволяет изменять необходимые изменения, так как может нарушить другие настройки. –

ответ

2
  1. Вход в SSH: Первое, что вам нужно сделать, это войти в свой сервер Dreamhost в командной строке. Откройте терминал (на Mac) и введите ssh -l [username] [hostname]. Имя пользователя здесь не является именем пользователя, с которого вы входите в свою веб-панель, это имя пользователя, которое вы видите в разделе «Управление пользователями» на веб-панели. Возможно, вам придется переключить эту учетную запись пользователя «Пользователь оболочки». (Вам также потребуется пароль для этой учетной записи.) Hostname - это URL вашего сайта. Я печатаю ssh -l alesh alesh.com.
  2. Скачать Ruby: Вы собираетесь загружать и устанавливать много вещей, и вы хотите временный каталог для работы, поэтому следуйте инструкциям Адама и типа

    cd 
    mkdir build 
    cd build 
    

    Далее вы должен набрать http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz, но вы получите Нет такого файла или каталога Ошибка. Вам нужно использовать wget, и вы также можете зайти и получить последнюю версию Ruby. Или, в моем случае, я хотел, чтобы версия 1.9.3 соответствовала тому, что я делаю на своей локальной машине. Направьте свой веб-браузер на http://cache.ruby-lang.org/pub/ruby/ и выберите версию. Я не уверен, какая лучшая стратегия для выбора, но я знаю, что 1.9.3 и 2.0.0 работают с Rails 4. Скопируйте ссылку на файл, заканчивающуюся на .tar.gz, и вставьте его в терминал. Вы будете в конечном итоге с чем-то вроде этого:

    wget http://cache.ruby-lang.org/pub/ruby/ruby-1.9.3-p551.tar.gz 
    

    В этот момент, когда я пытался идти дальше и компиляции Ruby, я получил сообщение об ошибке, и все это развалилось. Вы можете пропустить следующий шаг и вернуться к нему, если у вас есть проблемы с линией, но вам придется переустановить Ruby.

  3. Скачать и установить YAML: Ruby хочет YAML. К сожалению, instructions, который я нашел для установки YAML, также не работал, по той же причине у нас так много проблем с работой Ruby: у нас нет полного доступа к sudo на нашем общем сервере Dreamhost. Но это должно работать:

    wget http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz 
    tar xzf yaml-0.1.5.tar.gz 
    cd yaml-0.1.5 
    ./configure --prefix /home/alesh/ruby 
    make 
    make install 
    

    (не забудьте заменить ваш домашний директор или имя пользователя между /home/ и /ruby целой кучей вещей будет прокручиваться, но вы не должны видеть какие ужасные сообщений об ошибках

  4. ..

    Установить Ruby: Теперь Ruby должен установить без ошибок. Замените любую версию, которую вы загрузили в настоящих инструкциях.Опять-таки, некоторые из этих шагов займут довольно много времени:

    cd .. 
    tar xzf ruby-1.9.3-p551.tar.gz 
    cd ruby-1.9.3-p551 
    ./configure --prefix /home/alesh/ruby 
    make install 
    

    Опять же, вы не должны видеть никаких серьезных сообщений об ошибке.

  5. Корректировать Баш Профиль: Вы можете сделать это из командной строки, но это легче открыть клиент FTP в ваш домашний каталог Dreamhost, и отредактировать файл .bash_profile. Возможно, вам придется включить отображение скрытых файлов. добавьте эти строки в конец и сохранить его:

    export GEM_HOME="$HOME/.gems" 
    export GEM_PATH="$GEM_HOME" 
    export PATH=~/ruby/bin:$PATH 
    

    Полностью необязательными, но в то время как вы здесь вы можете установить переменную, чтобы изменить командную строку. Я добавил строку PS1=' \w$ ', которая устанавливает мое приглашение в качестве каталога, в котором я находилась, плюс добавляет четыре ведущих пространства, поэтому я могу легко найти свои команды, если мне нужно прокрутить обратно через вывод терминала. possibilities are many.

  6. Установить Rails:gem install rails --no-document должен быть следующим шагом, но это также дало мне сообщение об ошибке. Я думаю, что это может быть из-за Ruby 1.9.x, и в этом случае gem install rails --no-ri --no-rdoc должен работать. Я закончил работу с

    gem install rails 
    

    Это установит последнюю версию Rails. Я считаю, что вы можете указать такую ​​версию: gem install rails:4.0.0.

Update: Та часть, кажется, чтобы быть успешным. Я могу запустить Rails из командной строки, и он сообщает, что это версия 4.2.1. Когда я создаю проект и тестирую его, следуя остальным Adam's instructions, я получаю Rails application failed to start properly. Но я все еще работаю над этим. Отчитается.

http://alesh.com/rails/demo/

Это, насколько я получил сейчас! Изменим этот ответ, когда смогу. В то же время, см. Adam's blog post о том, как действовать, и, пожалуйста, добавьте исправления, предложения и вопросы здесь.

2

Я также нашел эти инструкции. Они, как и большинство других документов для рельсов на Dreamhost, несколько ... устарели.

Я, наконец, получил свое приложение онлайн, и я опубликовал все следующие, чтобы кодировать, но я действительно хочу поделиться тем, что я сделал, так как потребовалось несколько недель, чтобы понять все.

Это полный список того, что я сделал для того, чтобы Ruby 2.2.1p85 и Rails 4.2.4 работали на общем сервере Dreamhost. Это делается, начиная с совершенно нового размещенного домена с нуля. Это НЕ используется с VPS с помощью Passenger.

Сначала создайте веб-хостинг dreamhost, добавив нового пользователя и получив доступ к этой оболочке пользователя. Вам также необходимо снять флажок запрета FTP (пользователь должен иметь возможность использовать FTP).

Веб-каталог будет /home/username/<domain-name>/public

режим PHP (в настоящее время) PHP 5.6 FastCGI (по умолчанию)

Check Extra Web Security

Оставить Passenger UNCHECKED

Используя инструкции, которые я нашел здесь: http://adamish.com/blog/archives/775 я сделал следующее:

Перейти на сайт http://cache.ruby-lang.org/pub/ruby/ и найти версию рубина, которую вы хотите использовать с расширением *.tar.gz и загрузить его в свою систему. Используйте FTP (например, filezilla) для загрузки этого файла на ваш сервер в новой папке с именем build.

Войдите в свою учетную запись оболочки, перейдя на терминал и набрав ssh <username>@<domain-name> Это приведет к вашему паролю. Введите его и перейдите в свою папку сборки.

Тип: tar xzf <your-ruby-filename.tar.gz>

Тип: cd <your-uncompressed-ruby-folder>

Тип: ./configure --prefix /home/<username>/ruby

Тип: make install

Когда это будет завершена (и это занимает некоторое время) перейти в свой домашний каталог, введя cd ~ и открытие вашего .bash_profile (я использовал vim, nano тоже должен работать).

Добавьте следующие .bash_profile:

export GEM_HOME=”$HOME/.gems” 
export GEM_PATH=”$GEM_HOME” 
export PATH=~/ruby/bin:$PATH 

Теперь вы можете установить рельсы, набрав: gem install rails -v <Rails-version-number>

На своей персональной машине, я рекомендую очистить кэш перед загрузкой. Вам не обязательно, но это сэкономит некоторое время. Вы можете сделать это, набрав rake tmp:cache:clear

Теперь вы можете загрузить приложение рельсов либо FTP или мерзавцем, но убедитесь, что вы находитесь в каталоге /home/<username>/<domain-name>

Когда все файлы будут загружены, сначала получить доступ к вашей Gemfile через нано или vim.

Раскомментировать номер gem 'therubyracer' и добавить gem 'fcgi'. Сохраните его и введите bundle install.

Перейдите в папку <domain-name>/public и создать два новых файла, .htaccess и dispatch.fcgi

файл .htaccess должен выглядеть следующим образом:

<IfModule mod_fastcgi.c> 
AddHandler fastcgi-script .fcgi 
</IfModule> 
<IfModule mod_fcgid.c> 
AddHandler fcgid-script .fcgi 
</IfModule> 

Options +FollowSymLinks +ExecCGI 

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L] 

ErrorDocument 500 "Rails application failed to start properly." 

и ваш dispatch.fcgi файл, как это:

#!/home/<username>/ruby/bin/ruby 
ENV['RAILS_ENV'] = 'production' 
ENV['HOME'] ||= `echo ~`.strip 
ENV['GEM_HOME'] = File.expand_path('~/.gems') 
ENV['GEM_PATH'] = File.expand_path('~/.gems') 
require 'fcgi' 
require File.join(File.dirname(\__FILE\__),  '../config/environment.rb') 
class Rack::PathInfoRewriter 
    def initialize(app) 
    @app = app 
    end 
    def call(env) 
    env.delete('SCRIPT_NAME') 
    parts = env['REQUEST_URI'].split('?') 
    env['PATH_INFO'] = parts[0] 
    env['QUERY_STRING'] = parts[1].to_s 
    @app.call(env) 
    end 
end 
Rack::Handler::FastCGI.run Rack::PathInfoRewriter.new(<application-name>::Application) 

Примечание: имя приложения может быть отличается от вашего имени домена.

Это то, что сработало для меня. Я все еще новичок в Rails и не использовал никакой базы данных.Я призываю всех, кто обеспокоен этой настройкой, комментировать или редактировать этот пост, поскольку нет хорошей текущей документации для использования современного Ruby on Rails с общим сервером Dreamhost.

UPDATE

Хотя этот метод работает и получает все, что говорить, как только я создал устойчивое приложение было убитым их procwatch. Их поддержка сказала мне, что я использую слишком много ОЗУ, но не сказал бы, насколько я использую или что их предел. С тех пор я переключился на услуги хостинга и не испытывал никаких проблем.

Смежные вопросы