如果使用Mongrel来部署Rails,就不可避免的使用
-
mongrel_rails start -C mongrel.config
这里mongrel.config是mongrel的配置文件,可以为:
-
—
-
:config_script:
-
:environment: development
-
:pid_file: log/mongrel.pid
-
:num_processors: 1024
-
:docroot: public
-
:timeout: 0
-
:host: 0.0
.
0.0
-
:mime_map:
-
:port: 3000
-
:daemon: false
-
:cwd: /home/linux/projects/mongrel/testapp
-
:includes:
-
- mongrel
-
:debug: false
-
:log_file: log/mongrel.log
然后到app的根目录下运行上述的命令,恭喜您,你启动成功了.
但是有个问题,如果我不在app的根目录下运行呢?系统会给出我们信息:
-
!!! Path to log file not valid: log/mongrel.log
-
mongrel::start reported an error. Use mongrel_rails mongrel::start -h to get help.
第一眼看见这个错误,觉得非常简单,Mongrels的创始人给出的答案是将相对路径改为绝对路径.
也许上述的方法能解决问题,但是我相信仍然有一种情况:即使改为绝对路径,还是出现同样的错误.
如果发生上述的错误应该怎么办?
不幸的是,上述的问题我已经碰见过,很长时间不得要领.文档看破皮了,还是不能运行.不得已,打开mongrels的源代码看看.最后发现需要指定工作目录,因为工作目录是在log之前验证的.
摘录一段代码:
ruby 代码
-
module
Mongrel
-
class
Start < GemPlugin::Plugin
"/commands"
-
include Mongrel::Command::Base
-
-
def
configure
-
options [
-
["-e"
,
"--environment ENV"
,
"Rails environment to run as"
, :
@environment
, ENV['RAILS_ENV'] ||
"development"
],
-
["-d"
,
"--daemonize"
,
"Run daemonized in the background"
, :
@daemon
,
false
],
-
['-p', '--port PORT', "Which port to bind to"
, :
@port
, 3000],
-
['-a', '--address ADDR', "Address to bind to"
, :
@address
,
"0.0.0.0"
],
-
['-l', '--log FILE', "Where to write log messages"
, :
@log_file
,
"log/mongrel.log"
],
-
['-P', '--pid FILE', "Where to write the PID"
, :
@pid_file
,
"log/mongrel.pid"
],
-
['-n', '--num-procs INT', "Number of processors active before clients denied"
, :
@num_procs
, 1024],
-
['-t', '--timeout TIME', "Timeout all requests after 100th seconds time"
, :
@timeout
, 0],
-
['-m', '--mime PATH', "A YAML file that lists additional MIME types"
, :
@mime_map
,
nil
],
-
['-c', '--chdir PATH', "Change to dir before starting (will be expanded)"
, :
@cwd
,
Dir
.pwd],
-
['-r', '--root PATH', "Set the document root (default 'public')"
, :
@docroot
,
"public"
],
-
['-B', '--debug', "Enable debugging mode"
, :
@debug
,
false
],
-
['-C', '--config PATH', "Use a config file"
, :
@config_file
,
nil
],
-
['-S', '--script PATH', "Load the given file as an extra config script"
, :
@config_script
,
nil
],
-
['-G', '--generate PATH', "Generate a config file for use with -C"
, :
@generate
,
nil
],
-
[''
, '--user USER',
"User to run as"
, :
@user
,
nil
],
-
[''
, '--group GROUP',
"Group to run as"
, :
@group
,
nil
],
-
[''
, '--prefix PATH',
"URL prefix for Rails app"
, :
@prefix
,
nil
]
-
]
-
end
-
-
def
validate
-
@cwd
=
File
.expand_path(
@cwd
)
-
valid_dir? @cwd
,
"Invalid path to change to during daemon mode: #@cwd"
-
-
-
Dir
.chdir(
@cwd
)
-
-
valid?(@prefix
[0].chr ==
"/"
&&
@prefix
[-1].chr !=
"/"
,
"Prefix must begin with / and not end in /"
)
if
@prefix
-
valid_dir? File
.dirname(
@log_file
),
"Path to log file not valid: #@log_file"
-
valid_dir? File
.dirname(
@pid_file
),
"Path to pid file not valid: #@pid_file"
-
valid_dir? @docroot
,
"Path to docroot not valid: #@docroot"
-
valid_exists? @mime_map
,
"MIME mapping file does not exist: #@mime_map"
if
@mime_map
-
valid_exists? @config_file
,
"Config file not there: #@config_file"
if
@config_file
-
valid_dir? File
.dirname(
@generate
),
"Problem accessing directory to #@generate"
if
@generate
-
valid_user? @user
if
@user
-
valid_group? @group
if
@group
-
-
return
@valid
-
end
-
-
def
run
-
-
settings = { :host
=>
@address
,
:port
=>
@port
,
:cwd
=>
@cwd
,
-
:log_file
=>
@log_file
,
:pid_file
=>
@pid_file
,
:environment
=>
@environment
,
-
:docroot
=>
@docroot
,
:mime_map
=>
@mime_map
,
:daemon
=>
@daemon
,
-
:debug
=>
@debug
,
:includes
=> [
"mongrel"
],
:config_script
=>
@config_script
,
-
:num_processors
=>
@num_procs
,
:timeout
=>
@timeout
,
-
:user
=>
@user
,
:group
=>
@group
,
:prefix
=>
@prefix
,
:config_file
=>
@config_file
-
}
-
-
-
-
if
@config_file
-
settings.merge! YAML.load_file(@config_file
)
-
STDERR.puts "** Loading settings from #{@config_file} (they override command line)."
unless
settings[
:daemon
]
-
end
-
-
config = Mongrel::Rails::RailsConfigurator.new
(settings)
do
-
if
defaults[
:daemon
]
-
if
File
.exist? defaults[
:pid_file
]
-
log "!!! PID file #{defaults[:pid_file]} already exists. Mongrel could be running already. Check your #{defaults[:log_file]} for errors."
-
log "!!! Exiting with error. You must stop mongrel and clear the .pid before I’ll attempt a start."
-
exit 1
-
end
-
-
daemonize
-
log "Daemonized, any open files are closed. Look at #{defaults[:pid_file]} and #{defaults[:log_file]} for info."
-
log "Settings loaded from #{@config_file} (they override command line)."
if
@config_file
-
end
看看上面的代码就非常清楚了.
那么如何解决,可以这样:
-
mongrel_rails start -c youapp/path/to -C mongrel.config
这样就OK了.
扩展应用:可以配置为服务自动启动.
分享到:
相关推荐
3. **轻量级**: Mongrel体积小巧,启动快速,适合开发和测试环境。 ** 安装Mongrel ** 在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下...
在“Mongrel”这个主题下,我们主要讨论的是MongoDB的特性和使用场景。首先,MongoDB使用一种称为BSON的数据格式,它是Binary JSON的缩写,提供了与JSON相似的数据表示,但以二进制形式存储,提高了存储效率和读取...
Mongrel2是一个基于ZeroMQ的Web服务器,语言独立,可以用17种语言编写应用,还有更多非常奇特的地方:What makes Mongrel2 special is how it satisfies these requests in a language agnostic andasynchronous way...
Mongrel是一种快速的针对Ruby的Http 服务器,专门为部署发布rails应用而产生的。 可以替代mod_ruby/fastcgi,可以用于生产部属环境。
接着,部署Rails应用到服务器,并启动Mongrel进程。最后,配置Monit来监控所有关键服务,确保它们始终处于运行状态。 总结来说,这个部署方案利用了Ubuntu的稳定基础,Nginx的高性能,Rails的开发效率,Mongrel的...
2. **启动Mongrel**:在Rails应用目录下,使用`mongrel_rails cluster::start`命令启动Mongrel集群,每个实例对应一个进程。 3. **配置Nginx**:编辑Nginx的配置文件(通常为`/etc/nginx/nginx.conf`或`nginx/sites...
相信安装Redmine时会用到它们 win32-service-0.5.2.gem gem_plugin-0.2.3.gem mongrel_service-0.3.4-i386-mswin32.gem
Mongrel 是一个 Eclipse 插件,用来在 Eclipse 环境中开发和运行基于 Tomcat 的Web应用。可方便进行配置、调试 Tomcat 会话,基于 Sysdeo Tomcat 插件开发。 安装方法:下载后将压缩包解压到 Eclipse 的 plugins ...
Mongrel2:与语言无关的Web服务器Mongrel2是与应用程序,语言和网络体系结构无关的Web服务器,其重点是使用现代浏览器技术的Web应用程序。特征语言不可知论者,带有一个简单的后端协议,支持Mongrel2粉丝编写的17种...
然后创建一个监听8080端口的服务器,添加处理程序,并启动服务。 **总结** nim-mongrel2是Nim开发者构建高性能Web服务的有力工具,它充分利用了Nim语言的特性,为Mongrel2服务器提供了简洁、高效的处理程序框架。...
mongrel-1.1.4-x86-mswin32-60.gem 的gem包
接下来,在`server`块中配置Nginx,让它将无法处理的请求(如不存在的静态文件)转发给Mongrel Cluster。例如: ```nginx server { listen 80; server_name example.com; # 设置服务器根目录为Rails应用的...
此外,通过使用反向代理技术,可以灵活地调整应用的部署位置和结构,为大型项目的部署提供了一种可行的解决方案。 #### 致谢 文档最后提到了致谢部分,感谢所有为这个项目做出贡献的人。 #### 附录 文档还包括了...
为了解决这个问题,我们可以引入Mongrel,一个高效的Ruby web服务器,它可以替代Webrick来提高Redmine的服务性能。 安装MongoDB: 1. **添加MongoDB的官方存储库**: 在Debian或Ubuntu系统中,执行以下命令添加...
将RedMine安装为Windows服务所需的文件,有了这个文件,就可以非上网机上安装了。
博文链接:https://swachian.iteye.com/blog/175033
m2php - 在 PHP 中开发 Mongrel2 处理程序的库Mongrel2: ://mongrel2.org Mongrel2 Python 库: ://sheddingbikes.com/posts/1279007133.html要求ZeroMQ 2.0.7 或更高版本: ://... 只需为您的项目创建一个 composer....
更好的 Linux 构建体验,也许这样 Linux 构建可以基于 VS 解决方案和项目文件。 记录如何使用 m2net 和 ASP.NET 处理程序。 查看接收套接字是否也不喜欢多个线程使用它,并在需要时添加一个接收队列。 编译一个 ...