如果使用Mongrel来部署Rails,就不可避免的使用
  1. mongrel_rails start -C mongrel.config
这里mongrel.config是mongrel的配置文件,可以为:
  1. :config_script:
  2. :environment: development
  3. :pid_file: log/mongrel.pid
  4. :num_processors: 1024
  5. :docroot: public
  6. :timeout: 0
  7. :host: 0.0.0.0
  8. :mime_map:
  9. :port: 3000
  10. :daemon: false
  11. :cwd: /home/linux/projects/mongrel/testapp
  12. :includes:
  13. - mongrel
  14. :debug: false
  15. :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. def configure
  5. options [
  6. ["-e", "–environment ENV", "Rails environment to run as", :@environment, ENV[’RAILS_ENV’] || "development"],
  7. ["-d", "–daemonize", "Run daemonized in the background", :@daemon, false],
  8. [’-p’, ’–port PORT’, "Which port to bind to", :@port, 3000],
  9. [’-a’, ’–address ADDR’, "Address to bind to", :@address, "0.0.0.0"],
  10. [’-l’, ’–log FILE’, "Where to write log messages", :@log_file, "log/mongrel.log"],
  11. [’-P’, ’–pid FILE’, "Where to write the PID", :@pid_file, "log/mongrel.pid"],
  12. [’-n’, ’–num-procs INT’, "Number of processors active before clients denied", :@num_procs, 1024],
  13. [’-t’, ’–timeout TIME’, "Timeout all requests after 100th seconds time", :@timeout, 0],
  14. [’-m’, ’–mime PATH’, "A YAML file that lists additional MIME types", :@mime_map, nil],
  15. [’-c’, ’–chdir PATH’, "Change to dir before starting (will be expanded)", :@cwd, Dir.pwd],
  16. [’-r’, ’–root PATH’, "Set the document root (default ’public’)", :@docroot, "public"],
  17. [’-B’, ’–debug’, "Enable debugging mode", :@debug, false],
  18. [’-C’, ’–config PATH’, "Use a config file", :@config_file, nil],
  19. [’-S’, ’–script PATH’, "Load the given file as an extra config script", :@config_script, nil],
  20. [’-G’, ’–generate PATH’, "Generate a config file for use with -C", :@generate, nil],
  21. [”, ’–user USER’, "User to run as", :@user, nil],
  22. [”, ’–group GROUP’, "Group to run as", :@group, nil],
  23. [”, ’–prefix PATH’, "URL prefix for Rails app", :@prefix, nil]
  24. ]
  25. end
  26. def validate
  27. @cwd = File.expand_path(@cwd)
  28. valid_dir? @cwd, "Invalid path to change to during daemon mode: #@cwd"
  29. # Change there to start, then we’ll have to come back after daemonize
  30. Dir.chdir(@cwd)
  31. valid?(@prefix[0].chr == "/" && @prefix[-1].chr != "/", "Prefix must begin with / and not end in /") if @prefix
  32. valid_dir? File.dirname(@log_file), "Path to log file not valid: #@log_file"
  33. valid_dir? File.dirname(@pid_file), "Path to pid file not valid: #@pid_file"
  34. valid_dir? @docroot, "Path to docroot not valid: #@docroot"
  35. valid_exists? @mime_map, "MIME mapping file does not exist: #@mime_map" if @mime_map
  36. valid_exists? @config_file, "Config file not there: #@config_file" if @config_file
  37. valid_dir? File.dirname(@generate), "Problem accessing directory to #@generate" if @generate
  38. valid_user? @user if @user
  39. valid_group? @group if @group
  40. return @valid
  41. end
  42. def run
  43. # Config file settings will override command line settings
  44. settings = { :host => @address,  :port => @port, :cwd => @cwd,
  45. :log_file => @log_file, :pid_file => @pid_file, :environment => @environment,
  46. :docroot => @docroot, :mime_map => @mime_map, :daemon => @daemon,
  47. :debug => @debug, :includes => ["mongrel"], :config_script => @config_script,
  48. :num_processors => @num_procs, :timeout => @timeout,
  49. :user => @user, :group => @group, :prefix => @prefix, :config_file => @config_file
  50. }
  51. #……
  52. if @config_file
  53. settings.merge! YAML.load_file(@config_file)
  54. STDERR.puts "** Loading settings from #{@config_file} (they override command line)." unless settings[:daemon]
  55. end
  56. config = Mongrel::Rails::RailsConfigurator.new(settings) do
  57. if defaults[:daemon]
  58. if File.exist? defaults[:pid_file]
  59. log "!!! PID file #{defaults[:pid_file]} already exists.  Mongrel could be running already.  Check your #{defaults[:log_file]} for errors."
  60. log "!!! Exiting with error.  You must stop mongrel and clear the .pid before I’ll attempt a start."
  61. exit 1
  62. end
  63. daemonize
  64. log "Daemonized, any open files are closed.  Look at #{defaults[:pid_file]} and #{defaults[:log_file]} for info."
  65. log "Settings loaded from #{@config_file} (they override command line)." if @config_file
  66. end
看看上面的代码就非常清楚了.
那么如何解决,可以这样:
  1. mongrel_rails  start -c youapp/path/to -C mongrel.config
这样就OK了.
扩展应用:可以配置为服务自动启动.

本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/68281,如需转载请自行联系原作者

mongrel启动问题的解决方案相关推荐

  1. 防火墙启动被拒绝解决方案

    防火墙启动被拒绝解决方案 在工作中,我们会遇到很多问题,不管是新问题,还是老问题,我都喜欢记录下来,以备不时之需,本文分为以下几个部分: 1,问题描述 2,问题分析 3,解决方案 4,问题总结 一 问 ...

  2. TOMCAT启动汉字乱码解决方案

    TOMCAT启动汉字乱码解决方案 参考文章: (1)TOMCAT启动汉字乱码解决方案 (2)https://www.cnblogs.com/fujingtao5470/p/12290350.html ...

  3. 开机按F1才能进入(启动)系统的解决方案

    1.BIOS ROM check sum error,System halted (BIOS信息进行总和校验时发现错误,系统锁定) 解决方案:这个错误是一般人不会遇到的,这种信息多半是对主板BIOS刷 ...

  4. Mysql启动报错解决方案:Failed to open log (file ‘./mysql-bin.000901‘, errno 2)

    Mysql启动报错解决方案:Failed to open log (file './mysql-bin.000901', errno 2) 参考文章: (1)Mysql启动报错解决方案:Failed ...

  5. CentOS 7下mysqld服务启动失败终极解决方案

    CentOS 7下mysqld服务启动失败终极解决方案 参考文章: (1)CentOS 7下mysqld服务启动失败终极解决方案 (2)https://www.cnblogs.com/waycx/p/ ...

  6. Linux MySQL 常见无法启动或启动异常的解决方案

    Linux MySQL 常见无法启动或启动异常的解决方案 参考文章: (1)Linux MySQL 常见无法启动或启动异常的解决方案 (2)https://www.cnblogs.com/youjia ...

  7. Microsoft Office 2008 for Mac Service Pack 1 更新后无法启动程序问题解决方案

    Microsoft Office 2008 for Mac Service Pack 1 更新后无法启动程序问题解决方案 1. 删除文件(不是根目录下的,而是你的用户名下的目录中...) ~/Libr ...

  8. linux 进程无法启动,linux6.*无法正常启动has进程解决方案

    1. 数据库安装成功之后:发现ohasd进程存在异常: [root@oracle234 ~]# su - grid [grid@oracle234 ~]$ ps -ef| grep ohasd gri ...

  9. Win10系统无法启动的最终解决方案

    电脑操作失误导致系统无法启动.分享一下Win10系统无法启动的最终解决方案. 操作步骤如下: 1.首先需要准备一个Windows10安装盘,只需将Windows10微软原版镜像写入U盘即可.当然如果你 ...

最新文章

  1. jquery仿邮箱文本输入框自动加载邮箱后缀
  2. 目标检测中的分类和定位冲突问题
  3. redis的学习使用,第二章
  4. RedHat6.5 搭建glusterfs全过程
  5. Scala集合体系:可变集合和不可变集合
  6. python 数据驱动接口自动化框架_python接口自动化测试 - 数据驱动DDT模块的简单使用...
  7. Android Jenkins自动化构建之路
  8. 安装meme_新的Meme订单:通过简单的浏览器缓存更改游戏
  9. 在系统启动时至少有一个服务或驱动程序产生错误_Cassandra Java驱动程序
  10. 【iOS报错】“Internal error. Please file a bug at bugreport.apple.com and attach /var/folders/v5/......”
  11. 运行在MAMP Pro上的PhP和Mysql更改版本教程
  12. DeepLearning tutorial(6)易用的深度学习框架Keras简介
  13. 国产开源数据库建模工具
  14. 苦心研究两周,我特么终于搞懂啥是「元宇宙」了
  15. 记录java使用EasyExcel进行单元格内换行操作
  16. BT服务器的搭建(tracker-P2P服务器架设)(转)
  17. 图文解说S参数(进阶篇)
  18. 自建DHCP TFTP服务 用PXE启动实现无人值守安装Centos6
  19. Facebook背后的人工智能
  20. java八进制转换器,Java将八进制转换为十进制

热门文章

  1. 基于JAVA动漫网站和特效处理系统(Springboot框架+AI人工智能) 开题报告
  2. ajax自动加载blogjava和博客园的rss
  3. 计算机桌面打标签,桌面记事本,详细教您怎么在桌面添加便签
  4. 大专自学python找工作_大专生自学Python到找到工作的经历
  5. 作为一名项目管理人,这几款软件帮了我很多
  6. 小米6刷Ubuntu Touch系统
  7. 【springboot】实现阿里云视频点播上传视频
  8. 红黑树系列1——红黑树的建立
  9. 源码解析-Volley(转自codeKK)
  10. 微信小程序 延时执行 延时跳转