2015-11-06 6 views
4

У меня есть исходный код или рельсы, и мне нужно запустить на локальной машине. Фактически на виртуальной машине Ubuntu.Запуск приложения rails с apache и пассажиром на ubuntu

Я не уверен, что все, что мне нужно для установки и настройки, чтобы запустить его локально. Есть ли стандартный способ найти все это во всем исходном коде?

Я выяснил, что приложение использует SQL Lite в среде разработки и MySQL в производственной среде.

от конфигурации/database.rb

# MySQL. Versions 4.1 and 5.0 are recommended. 
# 
# Install the MySQL driver: 
# gem install mysql2 
# 
# And be sure to use new-style password hashing: 
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html 
development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

staging: 
    adapter: mysql2 
    database: appname_staging 
    username: rails 
    password: somepassword 
    host: localhost 

production: 
    adapter: mysql2 
    database: appname_production 
    username: rails 
    password: somepassword 
    host: localhost 

Также я установил правильный вариант рубин и рельсов и установить его с помощью РВМ. Я знаю, что версии верны из-за файлов .ruby-gemset .ruby-version. Также я установил пакет и все драгоценные камни из Gemfile успешно установлены.

рубин -v => рубин 1.9.3p551 рельсы -v => 3.2.13

apache2 -v => Версия сервера: Apache/2.4.7 (Ubuntu) Сервер построен: 14 октября 2015 14 : 18: 49

MySQL -V => MySQL Ver 14,14 Distrib 5.5.46, для Debian-Linux-гну (i686) с использованием Readline 6,3

lsb_release -a => нет LSB модули не доступны. Дистрибьютор ID: Ubuntu Описание: Ubuntu 14.04.3 LTS выпуска: 14,04 Codename: испытанный

Это довольно много, где мой опыт останавливается. Я не уверен, какое приложение веб-сервера должно использовать. Является ли это предопределенным в исходном коде где-нибудь?

Я вижу, что есть апач, пассажир и самогон.

из приложения/манифестов/application_manifest.rb

# The default_stack recipe install Rails, Apache, Passenger, the database from 
    # database.yml, Postfix, Cron, logrotate and NTP. See lib/moonshine/manifest/rails.rb 
    # for details. To customize, remove this recipe and specify the components you want. 
    recipe :default_stack 
    recipe :ssh 

Я также не уверен, что именно цель каждого из них по отдельности.

Как apache как веб-сервер может распознавать и интерпретировать код Ruby?

Я был бы рад, если бы мог разместить любое приложение rails на apache. Я создал очень простое приложение и пробует эти шаги https://www.linode.com/docs/websites/ror/ruby-on-rails-with-apache-on-ubuntu-10-04-lucid, но он всегда открывает веб-страницу по умолчанию apache.

Я не начинаю с чего начать. У меня просто куча вопросов и много споров. Я не понимаю, как работает ROR на apache.

Является ли пассажиром вещь на apache, которая интерпретирует рубиновый код?

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

Спасибо за любую помощь.

ответ

0

Веб-сервер, используемый приложением, не является предопределенным и может быть выбран на основе ваших потребностей развертывания.Существует много разных опций, но прежде чем вы начнете беспокоиться о том, какой сервер является вашим лучшим выбором для производственной среды, я бы рекомендовал попробовать запустить приложение с помощью WEBRick, простого рубинового HTTP-сервера, который является частью стандартной библиотеки Ruby. Это тривиально легко начать с: из корневой директории приложения, тот, который содержит Rakefile и Gemfile, выполнить:

rake db:setup # setup an sqlite database for development
rails server # start the development server

(Обратите внимание, что если вы уже не имеете его , вам необходимо установить SQLite с sudo apt-get install sqlite3 libsqlite3-dev)

Перемещение оттуда, Moonshine - это инструмент автоматизации развертывания. Это может помочь вам развернуть приложение на производственном сервере, но оно не является неотъемлемой частью приложения.

Phusion Passenger является ответом на ваш вопрос «Как apache, поскольку веб-сервер может распознавать и интерпретировать код Ruby?» Однако это не только для Apache; он может использоваться в автономном режиме больше или вместо nginx. В любом случае веб-сервер (Apache, nginx или встроенный для автономного режима) принимает запрос и передает его Пассажиру, который «переводит» его в стандартизованный формат, который Rails понимает и передает его.

Лично, если вы просто пытаетесь познакомиться с Rails и не имеете конкретной причины стремиться к Apache, я бы начал с автономного режима, поскольку его проще настроить. В любом случае, их Quickstart and Deployment Guides отличные.

Postfix - это SMTP-сервер; вам понадобится (или какой-либо другой SMTP-сервер) для отправки электронной почты из вашего приложения Rails, хотя, строго говоря, его не нужно устанавливать на том же сервере, что и рельсы, и если вы не планируете отправлять электронную почту, вообще не нужны.

Cron, logrotate и NTP - все инструменты для системного администрирования. Ничто в Rails не зависит от любого из них, хотя конкретное выбранное приложение может. Logrotate сохраняет ваши файлы журналов в проверке, NTP предназначен для обеспечения правильного времени работы системных часов, а cron - для запуска задач по расписанию. Moonshine устанавливает их все по умолчанию, но вполне возможно, что они вам действительно не нужны, особенно если вы просто «проверяете» приложение Rails.

Наконец, вы упомянули установку MySQL, но этого недостаточно, чтобы просто установить MySQL; вам также потребуется настроить таблицы базы данных. К счастью, это не намного сложнее в производственной среде, чем для развития; предполагая, что mysql config в базе данных.yml указывает на вашу фактическую установку MySQL с действительным именем пользователя и паролем, вы можете запустить RAILS_ENV=production rake db:setup, чтобы добиться этого. Опять же, я бы рекомендовал сначала начать в режиме разработки с вашей базой данных sqlite, чтобы это было просто.

0

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

Вместо этого, как мы развертывание приложений Rails в производство является использование сервера переднего плана, таких как Apache, для обработки запросов от клиента. Затем мы используем HTTP-прокси Пассажир для отправки запросов, которые должны обрабатываться Rails, в одно из любого количества обратных приложений.

Предполагаю, что вы установили веб-сервер Apache, и он работает на вашем компьютере.

Выполнить следующие команды для установки Passenger:

$ gem install passenger -v 5.0.30 
$ passenger-install-apache2-module 

Если необходимые зависимости не будут выполнены, последняя команда покажет вам, что вам нужно сделать. Если это произойдет, следуйте инструкциям и попробуйте снова установить команду «Пассажир».

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

LoadModule passenger_module /home/devel/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/passenger-5.1.5/buildout/apache2/mod_passenger.so 
<IfModule mod_passenger.c> 
    PassengerRoot /home/devel/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/passenger-5.1.5 
    PassengerDefaultRuby /home/devel/.rbenv/versions/2.4.0/bin/ruby 
</IfModule> 

(Примечание: Пассажир расскажет вам точные линии, чтобы скопировать и вставить в этот файл, поэтому использовать их, а не они)

Чтобы узнать, где ваш файл конфигурации Apache, попробуйте выдачи следующая команда:

$ apachectl -V | grep HTTPD_ROOT 
$ apachectl -V | grep SERVER_CONFIG_FILE 

Развертывание приложения

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

<VirtualHost *:80> 
    ServerName depot.yourhost.com 
    DocumentRoot /home/devel/depot/public/ 
    SetEnv SECRET_KEY_BASE "abcdef" 
    SetEnv DEPOT_DATABASE_PASSWORD "some-password" 
    <Directory /home/devel/depot/public/> 
    AllowOverride all 
    Options -MultiViews 
    Require all granted 
    </Directory> 
</VirtualHost> 

Используйте следующую команду, чтобы создать подходящий ключ, который будет использоваться в качестве секрета. Этот ключ используется для шифрования файлов cookie, отправленных клиенту.

$ bin/rails secret 

Здесь мы используем SetEnv директивы для определения переменных окружения, вместо того, чтобы наш секретный ключ и пароль к базе данных в файлах конфигурации для производства режима.

Заключительный шаг, чтобы перезапустить наш веб-сервер Apache:

$ sudo apachectl restart 
0

Как вы заявили, что вы используете sqlite базу данных, так что добавьте gem 'sqlite3' в Gemfile, а затем запустить bundle установки.

Затем вам нужно создать базу данных и выполнить все миграции для добавления таблиц.

Команда:

rake db:create 
rake db:migrate 

Затем запустите сервер

Команда:

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