Debian 8使用Apache部署Ruby on Rails

Ruby on Rails是一个快速开发的Web框架,Web设计人员和开发人员利用它能实现动态的全功能Web应用程序。 本文使用Phusion Passenger或mod_rails方法部署Rails应用程序。 Passenger允许您直接在Apache应用程序中嵌入Rails应用程序,而无需使用FastCGI或复杂的Web服务器代理。

安装Passenger和依赖关系

1.安装使用Ruby,构建Ruby模块和运行Rails应用程序所需的系统包:

  1. sudo apt-get install build-essential libapache2-mod-passenger apache2 ruby ruby-dev libruby zlib1g-dev libsqlite3-dev

2.使用gem模块的gem包管理器,安装fastthread gem:

  1. sudo gem install fastthread

3.安装Ruby On Rails:

  1. sudo gem install rails

4.(可选)为您的应用程序安装其他依赖项,例如MySQL支持:

  1. sudo apt-get install mysql-server libmysqlclient-dev mysql-client mysql-common
  2. sudo gem install mysql

5.将rails添加到$PATH环境变量。 请确保用正在运行的Ruby版本替换VERSION:

  1. ls /var/lib/gems
  2. PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/VERSION/bin"

6.在您的网站的公共文件夹中启动一个新的rails项目,以确保一切正常配置。 替换为你的应用程序名称:

  1. sudo rails new /var/www/html/example.com/public_html/application

配置Apache以使用Passenger

1.打开配置文件,调整DocumentRoot
/etc/apache2/sites-available/example.com.conf:

  1. DocumentRoot /var/www/html/example.com/application/public

2.重启Apache

  1. sudo systemctl restart apache2

部署多个Rails应用程序

有许多方法可以使用Passenger部署多个Rails应用程序。 最简单的方法是运行如上配置的多个不同的虚拟主机来托管单个Rails应用程序。 或者,您可以在单个虚拟主机中托管多个Rails应用程序。 本节介绍一个。
1.添加RailsBaseURI指令,指定虚拟主机配置中Rails应用程序的路径,如以下示例所示:
/etc/apache2/sites-available/example.com.conf:

  1. DocumentRoot /var/www/html/example.com/public_html/
  2. RailsBaseURI /app1
  3. RailsBaseURI /app2
  4. RailsBaseURI /app3

这些指令配置Passenger在example.com站点上指定的三个位置运行三个Rails应用程序。
2.将应用程序的public/目录链接到public_html/的子目录:

  1. ln -s /var/www/html/example.com/app1/public/ /var/www/html/example.com/public_html/app1/
  2. ln -s /var/www/html/example.com/app1/app2/ /var/www/html/example.com/public_html/app2/
  3. ln -s /var/www/html/example.com/app1/app3/ /var/www/html/example.com/public_html/app3/

Ubuntu 14.04使用Unicorn Nginx部署Ruby on Rails应用

Ruby on Rails是一个流行的快速开发Web框架,网页设计师和开发人员可以借助它使用Ruby编程语言实现功能齐全的动态Web应用程序。 本文介绍使用Unicorn部署Ruby on Rails和在Ubuntu 14.04上部署Nginx Web服务器。

安装必要软件包

使用以下命令更新系统的存储库数据库和安装的软件包:

  1. apt-get update
  2. apt-get upgrade

安装Ruby

1.安装Ruby依赖

  1. 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。

  1. wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz

3.解压

  1. tar -xzvf ruby-2.3.0.tar.gz

4.切换目录

  1. cd ruby-2.3.0

5.编译安装

  1. ./configure
  2. make
  3. sudo make install

安装并创建一个Rails应用

1.使用gem(Ruby的包管理框架)在服务器上安装Rails:

  1. sudo gem install rails

2.切换到家目录

  1. cd

3.创建一个新的Rails项目。 使用example作为项目名称:

  1. rails new example

4.切换到项目目录

  1. cd example

安装配置Unicorn

1.使用gem在服务器上安装Unicorn:

  1. sudo gem install unicorn

2.创建文件config/unicorn.rb,其中包含unicorn配置,并将以下配置粘贴到文件中。
/home/username/example/config/unicorn.rb:

  1. # set path to the application
  2. app_dir git File.expand_path("../..", __FILE__)
  3. shared_dir = "#{app_dir}/shared"
  4. working_directory app_dir
  5.  
  6. # Set unicorn options
  7. worker_processes 2
  8. preload_app true
  9. timeout 30
  10.  
  11. # Path for the Unicorn socket
  12. listen "#{shared_dir}/sockets/unicorn.sock", :backlog => 64
  13.  
  14. # Set path for logging
  15. stderr_path "#{shared_dir}/log/unicorn.stderr.log"
  16. stdout_path "#{shared_dir}/log/unicorn.stdout.log"
  17.  
  18. # Set proccess id path
  19. pid "#{shared_dir}/pids/unicorn.pid"

3.现在,创建Unicorn配置文件中涉及到的目录:

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

安装配置Nginx

1.安装Nginx

  1. sudo apt-get install nginx

2.我们需要配置nginx作为反向代理。 编辑配置文件/etc/nginx/nginx.conf并将以下配置粘贴到HTTP块中:

  1. upstream rails {
  2. # Path to Unicorn socket file
  3. server unix:/home/username/example/shared/sockets/unicorn.sock fail_timeout=0;
  4. }

3.删除默认的nginx站点配置:

  1. sudo rm /etc/nginx/sites-enabled/default

4.为Rails应用程序创建新的nginx站点配置文件:
/etc/nginx/sites-available/example:

  1. server {
  2. listen 80;
  3. server_name localhost;
  4.  
  5. root /home/username/example;
  6.  
  7. try_files $uri/index.html $uri @rails;
  8.  
  9. location @rails {
  10.    proxy_pass http://rails;
  11.    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  12.     proxy_set_header Host $http_host;
  13.    proxy_redirect off;
  14. }
  15.  
  16. error_page 500 502 503 504 /500.html;
  17. client_max_body_size 4G;
  18. keepalive_timeout 10;
  19. }

5.创建指向nginx sites-enabled目录的软链接以启用站点配置文件:

  1. sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled

6.重启Nginx

  1. sudo service nginx restart

启动Unicorn

以开发环境模式启动Unicorn:

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

以生产环境模式启动Unicorn:

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

要停止Unicorn,请执行以下命令:

  1. sudo pkill unicorn

Debian 7 (Wheezy)安装Nginx Passenger部署Ruby on Rails

Ruby on Rails是一个流行的快速开发Web框架,允许网页设计师和开发人员使用Ruby编程语言实现功能齐全的动态Web应用程序。 本文介绍使用Passenger部署Ruby on Rails和在Debian 7(Wheezy)上部署Nginx Web服务器。

安装必要软件包

使用以下命令更新系统的存储库数据库和安装的软件包:

  1. apt-get update
  2. apt-get upgrade

执行以下命令来安装Ruby on Rails所需的软件包:

  1. apt-get install wget build-essential ruby1.8 ruby1.8-dev zlib1g-dev libruby1.8 rubygems1.8 libruby libssl-dev libpcre3-dev libcurl4-openssl-dev rake ruby-rack rails

安装Passenger和Nginx

Nginx不支持动态加载模块,所以Phusion Passenger包含了一个Nginx副本,其中编译了Passenger支持。如果您以前是通过Debian仓库安装了Nginx,请使用以下命令删除它:

  1. apt-get remove nginx nginx-full nginx-light nginx-naxsi nginx-common

Phusion托管包含Phusion Passenger的最新版本的存储库。 要将其添加到您的包管理器中,请首先通过运行以下命令来安装Phusion PGP密钥:

  1. apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 561F9B9CAC40B2F7

创建/etc/apt/sources.list.d/passenger.list文件,内容为:

  1. deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main

通过运行以下命令启用APT的HTTPS支持:

  1. sudo apt-get install apt-transport-https

更新您的本地包数据库并安装Phusion Passenger:

  1. apt-get update
  2. apt-get install nginx-extras passenger

运行Phusion Passenger安装程序:

  1. passenger-install-nginx-module

你会看Phusion Passenger Nginx的欢迎界面。 按“Enter”继续安装。
安装进程启动一个交互式会话,将指导您完成安装Phusion Passenger的过程。 当提示Nginx安装方法时,我们建议您选择“1”,以允许安装程序自动下载,编译和安装Nginx。 除非你有特定的需求,需要在编译时传递自定义选项到Nginx,这是最安全的方式。 以Nginx的默认安装位置继续安装。

启用Passenger支持并启动Nginx

Nginx已经安装在您的系统上,但您需要启用对Phusion Passenger的支持。 编辑文件/etc/nginx/nginx.conf并取消注释这些行:

  1. passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
  2. passenger_ruby /usr/bin/ruby;

现在可以使用以下命令重新启动Nginx:

  1. service nginx restart

要验证passenger是否已正确安装和启用,您可以运行以下操作:

  1. passenger-memory-stats

如果Passenger正在运行,您应该在“Passenger processes”区块下看到几个正在运行的进程。
Nginx的配置文件位于/etc/nginx/nginx.conf。您需要编辑的文件,以添加对Rails应用程序的支持。 此文件中已配置默认服务器,并且还包含备用虚拟主机和SSL配置的示例。