由于接下来的几天试图为 Rails、Apache 和Passenger 设置开发环境,我的脑袋即将从混乱中爆炸。
我的问题是:
- 您需要乘客来开发环境吗?我可以只用 pow.cx 开发吗?-我 99.99% 肯定答案是否定的(你不使用乘客进行开发),但我需要确认,因为我现在很困惑。
- 当我部署时,我只使用乘客,对吗?即,在部署之前,我从不接触乘客。
- 我的开发环境正确吗?
- 生产部署只是在Passenger 和Apache VHOST 的影响下移动一个rails 应用程序?
背景(我建议你阅读):
似乎网络上的所有信息都关心为已经知道他们在做什么的人解释事情,而不是详细解释事情是如何工作的,这只是一系列安装步骤,这让我对角色的作用感到非常困惑事情,以及如何设置开发环境和正确部署 RoR 应用程序 - 所以请耐心等待这个长问题。
在过去的 3 天里,我一直在尝试在我的 Macbook Pro 上设置一个开发环境,该环境不会被 Apple 对 Apache 安装的可笑限制所破坏。我安装了一个自定义的 Apache 安装(从 bitnami 使用他们的 ruby 堆栈,因为我拒绝使用 Server.app),这样我就可以运行 Apache 并将 PHP 之类的东西轻松升级到 5.5,而且效果很好。
我正在尝试进入 RoR,但到目前为止,这一直是一场斗争,我准备放弃了。
我知道您需要 Apache 来为 Rails 应用程序提供服务,以便服务器可以同时处理请求,而不是一次处理一个请求,并且为此存在各种接口,例如 Thin 或其他;强烈推荐乘客。
我按照他们的说明安装了Passenger,并为Bitnami 乘客安装做了一些修改,而不是Mac OS X 上的默认Apache——它正在工作。当我启动 apache 并运行时:passenger-memory-stats
我从安装指南中得到预期的结果,这告诉我乘客正在运行。
但是,当我尝试部署一个简单的 hello world Rails 应用程序时,我会收到大量“我们很抱歉……”或者根本没有结果,只是一个空白页面。
我相当确定我的开发环境是正确的,除了最后一点,一切正常。我可以想象在 pow.cx 服务器上进行的开发,一旦部署准备就绪,您只需复制 Rails 应用程序并配置 Apache 的 VHOST 以指向您准备好部署的应用程序,而让 Passenger 处理其余部分,对吗?
我通过 Postgress.app 使用 PostgresSQL,服务器工作正常,我可以连接到它。
我gem 'pg'
的 Gemfile 中有。
我已经阅读并尝试了以下 SO 问题的所有可能的解决方案,但我要么没有得到任何结果,要么是空日志,这……至少可以说是令人愤怒的:
- 我们很抱歉,但有些不对劲。- 使用 Rails、Apache、Passenger
- Ruby on Rails:如何为 postgresql 编辑 database.yml?
- 如何在 Rails 中设置 database.yml 文件?
- https://www.ruby-forum.com/topic/187128
综上所述,我正在尝试使用以下命令部署这个 hello world 应用程序(在标准 Rails 服务器上工作):
通过以下方式调用应用程序:
http://dmarket.local:8081/
虚拟主机:
<VirtualHost *:8081>
PassengerEnabled on
RailsEnv production
ErrorLog /Applications/rubystack/apache2/htdocs/helloworld/project_error.log
CustomLog /Applications/rubystack/apache2/htdocs/helloworld/project_error.log combined
ServerName dmarket.local:8081
ServerAlias www.dmarket.local:8081
DocumentRoot "/Applications/rubystack/apache2/htdocs/helloworld/public"
PassengerPreStart http://dmarket.local:8081
<Directory "/Applications/rubystack/apache2/htdocs/helloworld/public">
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
主机文件:
127.0.0.1 dmarket.local
127.0.0.1 www.dmarket.local
DATABASE.YML(开发、测试和生产相同):
adapter: postgresql
encoding: unicode
host: 127.0.0.1
port: 5432
database: tsujp
pool: 5
username: tsujp
password: