Ruby on Rails 是一个流行的 Web 应用程序框架,允许开发人员创建动态 Web 应用程序。本指南介绍如何在 Ubuntu 14.04 上使用Unicorn和 nginx 在服务器上部署Rails应用程序。
Unicorn 是一个 HTTP 服务器,就像 Passenger 或 Puma 一样。由于用户不能直接访问 Unicorn,我们将使用 nginx 作为反向代理,它将缓冲用户和 Rails 应用程序之间的请求和响应。
在开始本指南之前,请确保已阅读并完成了 入门和服务器防护指南。
注意 本指南是为非 root 用户编写的。需要提升权限的命令带有前缀
sudo
。如果您不熟悉该sudo
命令,可以查看我们的 用户和组 指南。
1.在安装任何软件包之前,请确保您的主机名正确无误:
hostname hostname -f
2.确保您的系统是最新的:
sudo apt-get update && apt-get upgrade
1.安装 Ruby 依赖项:
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev nodejs
2.下载最新版本的 Ruby。在撰写本文时,当前,最新和稳定版本是2.3,但您可以在此处查看最新版本:
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
3.解压缩 tarball:
tar -xzvf ruby-2.3.0.tar.gz
4.移至解压缩的目录:
cd ruby-2.3.0
5.从源代码配置和安装 Ruby:
./configure make sudo make install
gem
( Ruby 的包管理框架)在服务器上安装Rails :sudo gem install rails
cd
example
命名新建一个 Rails 项目。rails new examplecd example
cd example
gem
以下命令在服务器上安装 Unicorn :sudo gem install unicorn
# set path to the application
app\_dir git File.expand\_path("../..", \_\_FILE\_\_)
shared\_dir = "#{app\_dir}/shared"
working\_directory app\_dir
# Set unicorn options
worker\_processes 2
preload\_app true
timeout 30
# Path for the Unicorn socket
listen "#{shared\_dir}/sockets/unicorn.sock", :backlog => 64
# Set path for logging
stderr\_path "#{shared\_dir}/log/unicorn.stderr.log"
stdout\_path "#{shared\_dir}/log/unicorn.stdout.log"
# Set proccess id path
pid "#{shared\_dir}/pids/unicorn.pid"
example
用作项目名称:rails
cd example
现在,创建 Unicorn 配置文件中提到的目录:
mkdir -p shared/pids shared/sockets shared/log
注意 请注意,我们仍然在 Rails 应用程序目录中。
sudo apt-get install nginx
/etc/nginx/nginx.conf
upstream rails {
# Path to Unicorn socket file
server unix:/home/username/example/shared/sockets/unicorn.sock fail\_timeout=0;
}
注意 使用适当的值编辑
username
和example
。
sudo rm /etc/nginx/sites-enabled/default
/etc/nginx/sites-available/example
server {
listen 80;
server_name localhost;
root /home/username/example;
try_files $uri/index.html $uri @rails;
location @rails {
proxy_pass http://rails;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
注意 确保使用合适的用户名示例。
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled
sudo service nginx restart
要在开发环境中启动 Unicorn
sudo unicorn -c config/unicorn.rb -E development -D
要在生产环境中启动 Unicorn:
sudo unicorn -c config/unicorn.rb -E production -D
注意 确保您在应用程序目录中; 否则,您需要输入整个路径名。
要停止 Unicorn,使用以下命令
sudo pkill unicorn
有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。