使用Unicorn和Nginx在Ubuntu 14.04上配置Ruby on Rails应用程序

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

安装 Ruby

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

安装并创建 Rails 应用程序

  1. 使用gem( Ruby 的包管理框架)在服务器上安装Rails :
sudo gem install rails
  1. 在创建项目之前,请转到主目录:
cd 
  1. example 命名新建一个 Rails 项目。
rails new examplecd example
  1. 进入项目目录
cd example

安装和配置 Unicorn

  1. 使用gem以下命令在服务器上安装 Unicorn :
sudo gem install unicorn
  1. 创建config/unicorn.rb包含 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"
  1. 创建一个新的 Rails 项目。您将example用作项目名称:
rails
  1. 移动到项目目录:
cd example

现在,创建 Unicorn 配置文件中提到的目录:

mkdir -p shared/pids shared/sockets shared/log

注意 请注意,我们仍然在 Rails 应用程序目录中。

安装和配置 Nginx

  1. 安装 nginx:
sudo apt-get install nginx
  1. 我们需要配置 nginx 作为反向代理。编辑配置文件/etc/nginx/nginx.conf并将以下配置粘贴到 HTTP 块中:
/etc/nginx/nginx.conf
upstream rails {
# Path to Unicorn socket file
server unix:/home/username/example/shared/sockets/unicorn.sock fail\_timeout=0;
}     

注意 使用适当的值编辑usernameexample

  1. 删除默认的 nginx 站点配置:
sudo rm /etc/nginx/sites-enabled/default
  1. 为 Rails 应用程序创建新的 nginx 站点配置文件:
/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;
}

注意 确保使用合适的用户名示例。

  1. 创建一个符号链接到 nginx 的sites-enabled目录以启用您的站点配置文件:
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled
  1. 重启 nginx:
sudo service nginx restart

启动 Unicorn

要在开发环境中启动 Unicorn

sudo unicorn -c config/unicorn.rb -E development -D

要在生产环境中启动 Unicorn:

sudo unicorn -c config/unicorn.rb -E production -D

注意 确保您在应用程序目录中; 否则,您需要输入整个路径名。

要停止 Unicorn,使用以下命令

sudo pkill unicorn

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

本文的版权归 LPD6375 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何使用Apache驱动Django

Django是一个功能强大的Web框架,可以帮助您快速启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码。但是其也需要...

3105
来自专栏云计算教程系列

如何在CentOS 7上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您启动Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

1643
来自专栏网络

Tomcat服务器+JSP页面+MySQL数据库网站部署

一、关于Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由A...

1.5K6
来自专栏石瞳禅的互联网实验室

Centos下Mysql因为pid文件启动失败问题解析

不管是直接启动Mysql反馈的错误信息,还是错误日志里的报错信息,信息中都指向了Mysql的PID文件。而笔者直接去查找相应的文件,确实不存在。

5002
来自专栏WebDeveloper

使用Charles工具拦截app请求

如果已连接wifi则忘记,重新连接,下来连接时不止写入密码,还要选择“手动配置代理”、“电脑ipc”、“上面设置的端口号(默认8888)”, 点击确定连接

5702
来自专栏SpringBoot 核心技术

SpringCloud组件:Eureka服务注册是采用主机名还是IP地址?

我们一直在使用Eureka进行注册服务,然而你有可能很少关心服务在注册到Eureka Server时是采用的主机名的方式?还是IP地址的方式?

2551
来自专栏左瞅瞅,右瞅瞅

Mysql5.5——xtrabackup主从同步

192.168.102.128 linux-node1.example.com (主)

1569
来自专栏小巫技术博客

Android自动化构建之-Ant多渠道打包(上)

802
来自专栏Kirito的技术分享

java实用小技巧(一)--远程debug

该系列介绍一些java开发中常用的一些小技巧,多小呢,从不会到会只需要一篇文章这么小。这一篇介绍如何使用jdk自带的扩展包配合Intellij IDEA实现远程...

4034
来自专栏iOSDevLog

在Mac OS X上安装Python 3并使用virtualenv和virtualenvwrapper

这篇文章解释了如何在Mac OS X中安装Python 3,包括Mavericks和Yosemite。如果要清理安装Python 2.7,请查看此帖子。你也可以...

2741

扫码关注云+社区

领取腾讯云代金券