搜索
您的当前位置:首页正文

使用Puma部署Rails项目

来源:二三娱乐

Puma是一个基于Ruby的Web Server服务器,与其他Ruby Web服务器不同的是,Puma是为速度与并发而生的。它和Unicorn的很大不同是,Puma主要基于多线程,而Unicorn是基于多进程,所以Puma的内存占用要比Unicorn小很多。(当然基于多线程最大的问题就是线程安全的问题,这个在Ruby1.9之后已经逐步得到比较完美的解决了,Ruby1.8就别指望跑Puma了。)

下面是Puma的官方给出的数据,内存占用占据明显优势,而速度方面也是独占鳌头,所以Puma在部署中越来越流行了。

Paste_Image.png

使用Puma

和unicorn一样,使用Puma之前先在Gemfile中添加:

  gem 'puma'

之后添加配置文件config/puma.rb

    #!/usr/bin/env puma

    environment 'production'
    threads 2, 32 # minimum 2 threads, maximum 64 threads
    workers 2

    app_name = 'rails_test'

    application_path = 

    directory "#{application_path}/current"

    pidfile "#{application_path}/shared/tmp/pids/puma.pid"
    state_path "#{application_path}/shared/tmp/sockets/puma.state"
    stdout_redirect "#{application_path}/shared/log/puma.stdout.log", "#{application_path}/shared/log/puma.stderr.log"


    # bind "unix://#{application_path}/shared/tmp/sockets/puma.sock"  #绑定sock
    bind 'tcp://127.0.0.1:801'    #绑定端口801
    worker_timeout 60

    daemonize true

    preload_app!

启动重启

bundle exec puma -C config/puma.rb

bundle exec pumactl --state tmp/sockets/puma.state stop

bundle exec pumactl --state tmp/sockets/puma.state restart

参考

Top