`
jiaoronggui
  • 浏览: 1327972 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116417
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199308
社区版块
存档分类
最新评论

Mongrel无法启动解决方案

阅读更多

如果使用Mongrel来部署Rails,就不可避免的使用

  1. mongrel_rails start -C mongrel.config  

这里mongrel.config是mongrel的配置文件,可以为:

  1. —  
  2.  :config_script:  
  3.  :environment: development  
  4.  :pid_file: log/mongrel.pid  
  5.  :num_processors: 1024   
  6.  :docroot: public   
  7.  :timeout: 0   
  8.  :host: 0.0 . 0.0   
  9.  :mime_map:  
  10.  :port: 3000   
  11.  :daemon: false   
  12.  :cwd: /home/linux/projects/mongrel/testapp  
  13.  :includes:  
  14.  - mongrel  
  15.  :debug: false   
  16.  :log_file: log/mongrel.log  

然后到app的根目录下运行上述的命令,恭喜您,你启动成功了.
但是有个问题,如果我不在app的根目录下运行呢?系统会给出我们信息:

  1. !!! Path to log file not valid: log/mongrel.log  
  2. mongrel::start reported an error. Use mongrel_rails mongrel::start -h to get help.  

第一眼看见这个错误,觉得非常简单,Mongrels的创始人给出的答案是将相对路径改为绝对路径.
也许上述的方法能解决问题,但是我相信仍然有一种情况:即使改为绝对路径,还是出现同样的错误.
如果发生上述的错误应该怎么办?
不幸的是,上述的问题我已经碰见过,很长时间不得要领.文档看破皮了,还是不能运行.不得已,打开mongrels的源代码看看.最后发现需要指定工作目录,因为工作目录是在log之前验证的.
摘录一段代码:

ruby 代码
  1. module  Mongrel  
  2.   class  Start < GemPlugin::Plugin  "/commands"   
  3.     include Mongrel::Command::Base  
  4.   
  5.     def  configure  
  6.       options [  
  7.         ["-e" "--environment ENV" "Rails environment to run as" , : @environment , ENV['RAILS_ENV'] ||  "development" ],  
  8.         ["-d" "--daemonize" "Run daemonized in the background" , : @daemon false ],  
  9.         ['-p', '--port PORT', "Which port to bind to" , : @port , 3000],  
  10.         ['-a', '--address ADDR', "Address to bind to" , : @address "0.0.0.0" ],  
  11.         ['-l', '--log FILE', "Where to write log messages" , : @log_file "log/mongrel.log" ],  
  12.         ['-P', '--pid FILE', "Where to write the PID" , : @pid_file "log/mongrel.pid" ],  
  13.         ['-n', '--num-procs INT', "Number of processors active before clients denied" , : @num_procs , 1024],  
  14.         ['-t', '--timeout TIME', "Timeout all requests after 100th seconds time" , : @timeout , 0],  
  15.         ['-m', '--mime PATH', "A YAML file that lists additional MIME types" , : @mime_map nil ],  
  16.         ['-c', '--chdir PATH', "Change to dir before starting (will be expanded)" , : @cwd Dir .pwd],  
  17.         ['-r', '--root PATH', "Set the document root (default 'public')" , : @docroot "public" ],  
  18.         ['-B', '--debug', "Enable debugging mode" , : @debug false ],  
  19.         ['-C', '--config PATH', "Use a config file" , : @config_file nil ],  
  20.         ['-S', '--script PATH', "Load the given file as an extra config script" , : @config_script nil ],  
  21.         ['-G', '--generate PATH', "Generate a config file for use with -C" , : @generate nil ],  
  22.         ['' , '--user USER',  "User to run as" , : @user nil ],  
  23.         ['' , '--group GROUP',  "Group to run as" , : @group nil ],  
  24.         ['' , '--prefix PATH',  "URL prefix for Rails app" , : @prefix nil ]  
  25.       ]  
  26.     end   
  27.   
  28.     def  validate  
  29.       @cwd  =  File .expand_path( @cwd )  
  30.       valid_dir? @cwd "Invalid path to change to during daemon mode: #@cwd"   
  31.   
  32.       # Change there to start, then we’ll have to come back after daemonize   
  33.       Dir .chdir( @cwd )  
  34.   
  35.       valid?(@prefix [0].chr ==  "/"  &&  @prefix [-1].chr !=  "/" "Prefix must begin with / and not end in /" if   @prefix   
  36.       valid_dir? File .dirname( @log_file ),  "Path to log file not valid: #@log_file"   
  37.       valid_dir? File .dirname( @pid_file ),  "Path to pid file not valid: #@pid_file"   
  38.       valid_dir? @docroot "Path to docroot not valid: #@docroot"   
  39.       valid_exists? @mime_map "MIME mapping file does not exist: #@mime_map"   if   @mime_map   
  40.       valid_exists? @config_file "Config file not there: #@config_file"   if   @config_file   
  41.       valid_dir? File .dirname( @generate ),  "Problem accessing directory to #@generate"   if   @generate   
  42.       valid_user? @user   if   @user   
  43.       valid_group? @group   if   @group   
  44.   
  45.       return   @valid   
  46.     end   
  47.   
  48.     def  run  
  49.       # Config file settings will override command line settings   
  50.       settings = { :host  =>  @address ,   :port  =>  @port :cwd  =>  @cwd ,  
  51.         :log_file  =>  @log_file :pid_file  =>  @pid_file :environment  =>  @environment ,  
  52.         :docroot  =>  @docroot :mime_map  =>  @mime_map :daemon  =>  @daemon ,  
  53.         :debug  =>  @debug :includes  => [ "mongrel" ],  :config_script  =>  @config_script ,  
  54.         :num_processors  =>  @num_procs :timeout  =>  @timeout ,  
  55.         :user  =>  @user :group  =>  @group :prefix  =>  @prefix :config_file  =>  @config_file   
  56.       }  
  57.   
  58.      #……   
  59.   
  60.       if   @config_file   
  61.         settings.merge! YAML.load_file(@config_file )  
  62.         STDERR.puts "** Loading settings from #{@config_file} (they override command line)."   unless  settings[ :daemon ]  
  63.       end   
  64.   
  65.       config = Mongrel::Rails::RailsConfigurator.new (settings)  do   
  66.         if  defaults[ :daemon ]  
  67.           if   File .exist? defaults[ :pid_file ]  
  68.             log "!!! PID file #{defaults[:pid_file]} already exists.  Mongrel could be running already.  Check your #{defaults[:log_file]} for errors."   
  69.             log "!!! Exiting with error.  You must stop mongrel and clear the .pid before I’ll attempt a start."   
  70.             exit 1  
  71.           end   
  72.   
  73.           daemonize  
  74.           log "Daemonized, any open files are closed.  Look at #{defaults[:pid_file]} and #{defaults[:log_file]} for info."   
  75.           log "Settings loaded from #{@config_file} (they override command line)."   if   @config_file   
  76.         end   

看看上面的代码就非常清楚了.
那么如何解决,可以这样:

  1. mongrel_rails  start -c youapp/path/to -C mongrel.config  

这样就OK了.

扩展应用:可以配置为服务自动启动.

分享到:
评论

相关推荐

    Rails 中mongrel的安装

    3. **轻量级**: Mongrel体积小巧,启动快速,适合开发和测试环境。 ** 安装Mongrel ** 在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下...

    Mongrel

    在“Mongrel”这个主题下,我们主要讨论的是MongoDB的特性和使用场景。首先,MongoDB使用一种称为BSON的数据格式,它是Binary JSON的缩写,提供了与JSON相似的数据表示,但以二进制形式存储,提高了存储效率和读取...

    Web服务器Mongrel2.zip

    Mongrel2是一个基于ZeroMQ的Web服务器,语言独立,可以用17种语言编写应用,还有更多非常奇特的地方:What makes Mongrel2 special is how it satisfies these requests in a language agnostic andasynchronous way...

    mongrel-1.1.5.gem

    Mongrel是一种快速的针对Ruby的Http 服务器,专门为部署发布rails应用而产生的。 可以替代mod_ruby/fastcgi,可以用于生产部属环境。

    基于Ubuntu Nginx Mongrel Mysql部署rails monit-5.0

    接着,部署Rails应用到服务器,并启动Mongrel进程。最后,配置Monit来监控所有关键服务,确保它们始终处于运行状态。 总结来说,这个部署方案利用了Ubuntu的稳定基础,Nginx的高性能,Rails的开发效率,Mongrel的...

    Nginx+Mongrel实践过程

    2. **启动Mongrel**:在Rails应用目录下,使用`mongrel_rails cluster::start`命令启动Mongrel集群,每个实例对应一个进程。 3. **配置Nginx**:编辑Nginx的配置文件(通常为`/etc/nginx/nginx.conf`或`nginx/sites...

    mongrel_service 安装包

    相信安装Redmine时会用到它们 win32-service-0.5.2.gem gem_plugin-0.2.3.gem mongrel_service-0.3.4-i386-mswin32.gem

    net.sf.mongrel_1.0.0.zip

    Mongrel 是一个 Eclipse 插件,用来在 Eclipse 环境中开发和运行基于 Tomcat 的Web应用。可方便进行配置、调试 Tomcat 会话,基于 Sysdeo Tomcat 插件开发。 安装方法:下载后将压缩包解压到 Eclipse 的 plugins ...

    mongrel2:Mongrel2 Web服务器项目

    Mongrel2:与语言无关的Web服务器Mongrel2是与应用程序,语言和网络体系结构无关的Web服务器,其重点是使用现代浏览器技术的Web应用程序。特征语言不可知论者,带有一个简单的后端协议,支持Mongrel2粉丝编写的17种...

    nim-mongrel2:Mongrel2 Web服务器的处理程序框架

    然后创建一个监听8080端口的服务器,添加处理程序,并启动服务。 **总结** nim-mongrel2是Nim开发者构建高性能Web服务的有力工具,它充分利用了Nim语言的特性,为Mongrel2服务器提供了简洁、高效的处理程序框架。...

    mongrel-1.1.4-x86-mswin32-60.gem

    mongrel-1.1.4-x86-mswin32-60.gem 的gem包

    Linux系统上配置Nginx Mongrel cluster

    接下来,在`server`块中配置Nginx,让它将无法处理的请求(如不存在的静态文件)转发给Mongrel Cluster。例如: ```nginx server { listen 80; server_name example.com; # 设置服务器根目录为Rails应用的...

    RailsWithApacheAndMongrel.pdf

    此外,通过使用反向代理技术,可以灵活地调整应用的部署位置和结构,为大型项目的部署提供了一种可行的解决方案。 #### 致谢 文档最后提到了致谢部分,感谢所有为这个项目做出贡献的人。 #### 附录 文档还包括了...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    最后,创建测试的 Rails 应用程序,并启动 Mongrel 服务器。 知识点1:Ruby 安装 * 下载 Ruby One-Click Installer 版本 * 安装 Ruby * 检查 Ruby 版本 知识点2:Rails 安装 * 下载 Rails 2.0.2 版本 * 安装 ...

    mongel for linux安装

    为了解决这个问题,我们可以引入Mongrel,一个高效的Ruby web服务器,它可以替代Webrick来提高Redmine的服务性能。 安装MongoDB: 1. **添加MongoDB的官方存储库**: 在Debian或Ubuntu系统中,执行以下命令添加...

    mongrel_service

    将RedMine安装为Windows服务所需的文件,有了这个文件,就可以非上网机上安装了。

    基于Ubuntu Nginx Mongrel Mysql部署rails

    博文链接:https://swachian.iteye.com/blog/175033

    m2php:Mongrel2 PHP 的东西

    m2php - 在 PHP 中开发 Mongrel2 处理程序的库Mongrel2: ://mongrel2.org Mongrel2 Python 库: ://sheddingbikes.com/posts/1279007133.html要求ZeroMQ 2.0.7 或更高版本: ://... 只需为您的项目创建一个 composer....

Global site tag (gtag.js) - Google Analytics