如何在重新启动服务器后重新启动RoR服务

时间:2012-11-15 20:38:21

标签: ruby-on-rails ubuntu nginx apache2 webserver

更新我一直在寻找重启后我的项目中可能需要重启的服务。其中一个人正在考虑狮身人面像,我终于达到了记录的程度:

[Fri Nov 16 19:34:29.820 2012] [29623] accepting connections

但是我仍然无法运行searchd或searchd --stop,因为在etc / sphinxsearch中没有生成sphinx.conf文件以获取更多信息,请参阅thinking_sphinx after reboot上的这个开放线程

然后我转而根据我得到的一些见解转向寻找重启独角兽或瘦身。问题是,当我检查我的宝石时,我看到一个薄和独角兽。但是当我尝试启动其中任何一个时,他们没有驻留在etc / init.d /中的文件,其中nginx和sphinxsearch文件位于...

重新启动会完全删除像瘦或独角兽这样的应用服务器的文件吗?我们托管Rackspace运行

ruby​​ 1.9.2p290
导轨(3.2.8,3.2.7,3.2.0)
nginx的/ 1.1.19

  • 注意到有独角兽和瘦的宝石但我的app的配置文件夹中没有unicorn.rb或thin.rb ...如果任何人可以给我的话,我还是迷失了对于解决这个问题的一些步骤的一些见解我会非常感激。任何事情都会有所帮助,感谢阅读。

瘦1.4.1
独角兽4.3.1

当我运行独角兽时,我会得到相同的issue as referenced here

> /usr/local/bin/unicorn start

/usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/lib/unicorn/configurator.rb:610:in `parse_rackup_file': rackup file (start) not readable (ArgumentError)
from /usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/lib/unicorn/configurator.rb:76:in `reload'
from /usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/lib/unicorn/configurator.rb:67:in `initialize'
from /usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:104:in `new'
from /usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/lib/unicorn/http_server.rb:104:in `initialize'
from /usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/bin/unicorn:121:in `new'
from /usr/local/lib/ruby/gems/1.9.1/gems/unicorn-4.3.1/bin/unicorn:121:in `<top (required)>'
from /usr/local/bin/unicorn:19:in `load'
from /usr/local/bin/unicorn:19:in `<main>'

当我运行瘦身时,只需打开一个命令行提示符......

/usr/local/bin/thin start

>> Using rack adapter

其他宝石:

*本地宝石*

actionmailer (3.2.8, 3.2.7, 3.2.0)
actionpack (3.2.8, 3.2.7, 3.2.0)
activemodel (3.2.8, 3.2.7, 3.2.0)
activerecord (3.2.8, 3.2.7, 3.2.0)
activeresource (3.2.8, 3.2.7, 3.2.0)
activesupport (3.2.8, 3.2.7, 3.2.0)
arel (3.0.2)
builder (3.0.0)
bundler (1.1.5)
carmen (1.0.0.beta2)
carmen-rails (1.0.0.beta3)
cocaine (0.2.1)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.3.3)
daemons (1.1.9)
erubis (2.7.0)
eventmachine (0.12.10)
execjs (1.4.0)
faraday (0.8.4)
faraday_middleware (0.8.8)
foursquare2 (1.8.2)
geokit (1.6.5)
hashie (1.2.0)
hike (1.2.1)
httparty (0.8.3)
httpauth (0.1)
i18n (0.6.0)
journey (1.0.4)
jquery-rails (2.0.2)
json (1.7.4, 1.7.3)
jwt (0.1.5)
kgio (2.7.4)
lastfm (1.8.0)
libv8 (3.3.10.4 x86_64-linux)
mail (2.4.4)
mime-types (1.19, 1.18)
minitest (1.6.0)
multi_json (1.3.6)
multi_xml (0.5.1)
multipart-post (1.1.5)
mysql2 (0.3.11)
oauth2 (0.8.0)
paperclip (3.1.1)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.2.8, 3.2.7, 3.2.0)
railties (3.2.8, 3.2.7, 3.2.0)
raindrops (0.10.0, 0.9.0)
rake (0.9.2.2, 0.8.7)
rdoc (3.12, 2.5.8)
riddle (1.5.3)
sass (3.2.0, 3.1.19)
sass-rails (3.2.5)
sprockets (2.1.3)
sqlite3 (1.3.6)
sqlite3-ruby (1.3.3)
therubyracer (0.10.2, 0.10.1)
thin (1.4.1)
thinking-sphinx (2.0.10)
thor (0.16.0, 0.15.4, 0.14.6)
tilt (1.3.3)
treetop (1.4.10)
tzinfo (0.3.33)
uglifier (1.2.7, 1.2.4)
unicorn (4.3.1)
xml-simple (1.1.1)

我正在开发一个由另一个团队建造的项目。我对config文件夹中的常量文件进行了一些修改(更改了填充某些下拉字段的数组的某些值),但是必须重新启动应用程序才能识别这些更改。托管是通过Rackspace,我们通过他们网站上的选项重新启动。我联系了他们并检查了我们服务器的状态,端口是开放的还是可操作的。问题是当您转到该站点的地址时,应用程序未运行。然后,当我输入服务器的IP地址时,它只是说“欢迎来到Nginx”。但在日志文件中我看到:

[Thu Nov 15 02:34:37.945 2012] [15916] caught SIGTERM, shutting down
[Thu Nov 15 02:34:37.996 2012] [15916] shutdown complete

我不太熟悉服务器端设置。我也从未参与过必须在应用程序启动之前启动特定服务的Rails项目。任何有关如何确定需要重新启动哪些服务以及如何重新启动它们的见解都将非常感激。此时我觉得自己有点死了......

谢谢,

艾伦

3 个答案:

答案 0 :(得分:1)

Nginx本身不会为Rails应用程序提供服务。它需要一个&#34; app服务器&#34;它可以传递请求并获得响应。有很多选择,最受欢迎的是Passenger,Thin和Unicorn。我建议你从服务器上的nginx配置开始,看看是否有任何提到。这应该指出如何重新启动它们。

http://www.modrails.com/documentation/Users%20guide%20Nginx.html

http://articles.slicehost.com/2008/5/27/ubuntu-hardy-nginx-rails-and-thin

http://sirupsen.com/setting-up-unicorn-with-nginx/(向下滚动到Unicorns上的Rails)

答案 1 :(得分:0)

好的,经过几个小时的搜索和尝试无数的东西,我在网上找到了我从命令行运行它:

unicorn_rails -p 3000

就像魔术一样,网站已经恢复运行,现在我的问题是当我关闭控制台时(我运行了该命令)网站再次关闭。

我将follow this希望能解决此问题

注意:这些是我为实现目标而采取的步骤

重新启动服务器时,您必须重新启动某些服务才能访问该应用程序:

1)thinking_sphinx
参考网站
http://pat.github.com/ts/en/rake_tasks.html
http://www.claytonlz.com/2010/09/thinkingsphinx-conf-problems/

a)create/modify  app/config/sphinx.yml

    development:
      morphology: stem_en
      port: 9312
      bin_path: "/usr/bin"             # set up the path to binary for searchd
      searchd_binary_name: searchd
      indexer_binary_name: indexer
      #mem_limit: 128M
    test:
      morphology: stem_en
      port: 9312
      mem_limit: 128M
    production:
      morphology: stem_en
      port: 9312
      mem_limit: 512M
    # the searchd ip, in case it's not on localhost
    # address: 10.10.0.0
    # this is by default included in db/sphinx
    # searchd_file_path: "/path/to/shared/folder/sphinx"

b)rake thinking_sphinx:index
c)rake thinking_sphinx:configure       # creates config/development.sphinx.conf which helps define sphinx's indexing

d)# then you have to start sphinx, there are 2 ways to do this

    rake thinking_sphinx:start
    rake thinking_sphinx:stop

    OR

    searchd
    searchd --stop

    # only the rake commands worked for me, when I tried to run searchd
    # I got an error FATAL: no readable config file (looked in /etc/sphinxsearch/sphinx.conf, ./sphinx.conf).
    # for some reason we dont have a sphinx.conf file, but the rake commands work without it

e)# once you start thinking_sphinx check log/searchd.log file for the line
    [Fri Nov 16 19:34:29.820 2012] [29623] accepting connections

2)nginx
参考网站:
http://wiki.nginx.org/CommandLine

a) check that nginx is up and running
    i) start server 
        # to check where nginx resides type in this into server console
        which nginx
        # whatever path it gives you is how you start the server this is my path
        /usr/sbin/nginx 
    ii) stop server
        /usr/sbin/nginx -s stop # use the path given by which command

3)独角兽(启动应用程序服务器)
参考网站:
http://codelevy.com/2010/02/09/getting-started-with-unicorn.html

a) test if unicorn will run after previous changes
    unicorn_rails -p 3000
    # the site should now be up and running, check that it is
    # console should now log the different actions you do on the site 

b) create unicorn.rb in config folder (if none is there)
    # only start this step if the step above got the site running
    # close the console or exit the process you started above
    # contents of unicorn.rb 
    worker_processes 2      #(starts 2 child processes, not completely neccissary)
    preload_app true
    timeout 30
    listen 3000

    after_fork do |server, worker|
      ActiveRecord::Base.establish_connection
    end

c) run unicorn in the background
    # make sure you exited the process above before running this
    unicorn_rails -c config/unicorn.rb -D

    # this was giving me an error that it said was logged by stderr
    # I got the command to run by adding a command to the front
    http://stackoverflow.com/questions/2325152/check-for-stdout-or-stderr

    exec 2> /dev/null unicorn_rails -c config/unicorn.rb -D


d) (optional) check stats from starting unicorn

    i) pgrep -lf unicorn_rails
        #sample output
        5374 unicorn_rails master -c config/unicorn.rb -D             
        5388 unicorn_rails worker[0] -c config/unicorn.rb -D    # not needed currently  
        5391 unicorn_rails worker[1] -c config/unicorn.rb -D    # not needed currently

    ii) cat tmp/pids/unicorn.pid # from inside the streetpotato folder
        #sample output
        5374

答案 2 :(得分:0)

我知道我迟到了比赛,但是你正在运行的过程:

unicorn_rails -p 3000

默认情况下关闭会话时会死亡。如果你希望它继续而不会死亡,请运行:

nohup unicorn_rails -p 3000 &

&#39; nohup的&#39;代表&#34;没有挂机&#34;,即使在您放弃之后也能保持流程运行。 &#39;&amp;&#39;告诉操作系统将其作为后台作业运行。

希望这会有所作为!