我有一些源代码或rails项目,我需要在本地机器上运行.实际上在Ubuntu虚拟机上.
我不确定我需要安装和配置什么才能在本地运行它.有没有一种标准的方法可以在整个源代码中找到它?
我发现应用程序在开发环境中使用SQL Lite,在生产环境中使用MySQL.
来自config / 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和rails并用rvm安装它.我知道版本是正确的,因为.ruby-gemset .ruby-version文件.我也成功安装了捆绑安装和Gemfile的所有宝石.
ruby -v =>ruby1.9.3p551
rails -v => 3.2.13
apache2 -v =>服务器版本:Apache / 2.4.7(Ubuntu)
服务器内置:2015年10月14日14:18:49
mysql -V => mysql Ver 14.14 Distrib 5.5.46,
对于使用readline 6.3的debian-linux-gnu(i686)
lsb_release -a =>没有LSB模块可用.
分销商ID:Ubuntu
说明:Ubuntu 14.04.3 LTS
发布:14.04
代号:值得信赖
这几乎是我的专业知识停止的地方.我不确定应该使用哪个Web服务器应用程序.它是在源代码中预定义的吗?
我发现有阿帕奇,乘客和月光被使用.
来自app / manifests / 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
我也不确定每个人的具体目的是什么.
作为Web服务器的apache如何识别和解释ruby代码?
如果我能在apache上托管任何rails应用程序,我会很高兴.我创建了一些非常简单的应用程序并尝试这些步骤https://www.linode.com/docs/websites/ror/ruby-on-rails-with-apache-on-ubuntu-10-04-lucid,但它始终打开默认的apache网页.
我不是从哪里开始的.我只是有很多问题而且还有很多困难.我不明白apache上的ROR是如何工作的.
乘客是解释ruby代码的apache上的东西吗?
我表明nginx是乘客的替代品,但它也是apache的替代品,它让我更加困惑.
谢谢你的帮助.
最佳答案 Web是一个非常并发的环境.生产Web服务器(如Apache)可以同时处理多个请求 – 甚至数十或数百个请求.单进程,基于Ruby的Web服务器无法跟上,幸运的是它没有必要.
相反,我们将Rails应用程序部署到生产中的方式是使用前端服务器(如Apache)来处理来自客户端的请求.然后,我们使用Passenger的HTTP代理将应由Rails处理的请求发送到任意数量的后端应用程序进程之一.
我假设您已经安装了Apache Web服务器并且它正在您的计算机上运行.
运行以下命令安装Passenger:
$gem install passenger -v 5.0.30
$passenger-install-apache2-module
如果不满足必要的依赖关系,后一个命令将告诉您需要执行的操作.如果发生这种情况,请按照提供的说明操作,然后再次尝试Passenger安装命令.
在此过程中,它会要求您更新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 "0123456789abcdef"
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 Web服务器:
$sudo apachectl restart