文字

本篇文档帮助您将基于Rails3.x的应用快速部署到好雨云平台。Sinatra 或其他类型的Ruby应用请参考:语言支持

本地环境设置

基础环境

本文使用 Ubuntu 14.04.2 LTS 系统,root用户操作,Rails 使用3.2.3版本

  • 本地安装git命令行或者git的GUI软件
    $ apt-get update
    $ apt-get install git
  • 安装 Ruby 2.0.0
    
    $ cd /tmp/  && mkdir soft && cd soft
    $ wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p645.tar.gz
    $ tar xvzf ruby-2.0.0-p645.tar.gz
    $ cd ruby-2.0.0-p645
    $ ./configure --prefix=/usr/local/ruby
    $ make && make install
    $ export PATH=$PATH:/usr/local/ruby/bin/
    $ echo 'export PATH=$PATH:/usr/local/ruby/bin/' >> ~/.bashrc
    $ ruby -v
    ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-linux]

设置淘宝gem源

$ gem source list
CURRENT SOURCES

https://rubygems.org/

$ gem sources --remove https://rubygems.org/
https://rubygems.org/ removed from sources

$ gem sources -a https://ruby.taobao.org/
https://ruby.taobao.org/ added to sources

$ gem source -l
CURRENT SOURCES

https://ruby.taobao.org/

* 安装 Rails 3.2.3

$ gem install rails -v 3.2.3
$ rails -v
Rails 3.2.3

安装bundle

gem install bundle

### 创建应用
#### **创建新应用**

$ mkdir -pv /app/ && cd /app/
$ rails new myapp --database=mysql

修改Gemfile,将源替换为taobao地址

$ sed -i s'#rubygems.org#ruby.taobao.org/#g' Gemfile

重新生成Gemfile.lock文件

$ bundle install

#### **使用已有应用**
如果使用现有的应用,请确认使用mysql数据库。

$ grep mysql2 Gemfile

如果没有mysql2标示,请添加:

$ echo "gem 'mysql2'" >> Gemfile

重新生成 Gemfile.lock文件

$ bundle install

#### **数据库配置**
当应用部署到好雨云平台时数据库的配置建议使用环境变量的形式,这样可以避免敏感信息泄露,同时又保证了配置的灵活性,下面是一个实例:

**config/database.yml**

development:
adapter: mysql2
encoding: utf8
reconnect: false
database: myapp_development
pool: 5
username: root
password:
host: localhost

test:
adapter: mysql2
encoding: utf8
reconnect: false
database: myapp_test
pool: 5
username: root
password:
host: localhost

production:
adapter: mysql2
encoding: utf8
reconnect: true
pool: 5
host: <%= ENV['MYSQL_HOST'] %>
port: <%= ENV['MYSQL_PORT'] %>
database: myapp
username: <%= ENV['MYSQL_USER'] %>
password: <%= ENV['MYSQL_PASSWORD'] %>

**注意**

* development、test 环境的数据库配置请根据本地实际情况填写
* production 的MYSQL_开头的环境变量是在好雨云平台关联mysql服务后自动生成的。
* production 的数据库需要提前创建

#### **Rails 插件**
为了Rails应用能够在好雨云平台工作得更好,建议添加rails_12factor gem 修改 Gemfile文件添加如下内容:

$ echo "gem 'rails_12factor', group: :production" >> Gemfile

更新依赖文件

$ bundle install

#### **设置 Asset Pipeline**
从Rails 3.1版本开始引入了Asset Pipeline 的概念,其提供了一个框架,用于连接、压缩 JavaScript 和 CSS 文件。还允许使用其他语言和预处理器编写 JavaScript 和 CSS,例如 CoffeeScript、Sass 和 ERB。

我们建议用户本地生成线上环境的静态资源,这样可以加快线上部署的时间,下面介绍本地操作方法

RAILS_ENV=production bundle exec rake assets:precompile
/usr/local/ruby/bin/ruby /usr/local/ruby/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
Compiled application.js (0ms) (pid 1601)
Compiled application.css (0ms) (pid 1601)
Compiled application.js (0ms) (pid 1601)
Compiled application.css (0ms) (pid 1601)

**注意**

>#####如果执行bundle exec rake assets:precompile 有如下报错:
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes
只需要将Gemfile文件中 # gem 'therubyracer', :platform => :ruby 的注释去掉即可,然后执行 bundle install 安装gem并更新依赖文件
RAILS_ENV=production bundle exec rake assets:precompile 这条命令设置了RAILS_ENV环境变量为production,是因为部署在云平台上的应用会自动设置RAILS_ENV= production

为了告知云平台不在构建过程中生成 Asset,需要在config/application.rb配置文件中添加如下配置:

config.assets.initialize_on_precompile = false

#### **指定Ruby版本**

为了保证线下和线上的ruby版本一直,可以将ruby的版本要求写在Gemfile文件中,这样当程序在云平台部署时就会按照我们的要求安装指定版本的ruby

$ echo "ruby '2.0.0'" >> Gemfile

重新生成依赖文件

$ bundle install

点击Ruby语言概述查看云平台支持的ruby版本

配置运行方式
默认情况下,rails在平台使用webrick作为web服务器,但webrick只是为开发环境使用的,问题参见:rails默认web server。我们建议使用Puma作为web服务器,可以参考 使用Puma 部署 Rails 应用 文档,下面介绍使用puma的方法:

1、安装puma

echo "gem 'puma'" >> Gemfile

安装puma

bundle install


1、配置puma

touch config/puma.rb

vi config/puma.rb

将下面部分粘贴到config/puma.rb 文件中

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)

若程序不是线程安全的需要将threads_count设置为1

threads_count = 1

threads threads_count, threads_count

preload_app!

rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do

Valid on Rails up to 4.1 the initializer method of setting pool size

ActiveSupport.on_load(:active_record) do
config = ActiveRecord::Base.configurations[Rails.env] ||
Rails.application.config.database_configuration[Rails.env]
config['pool'] = ENV['MAX_THREADS'] || 5
ActiveRecord::Base.establish_connection(config)
end
end

#### **编写Procfile文件**

echo "web: bundle exec puma -C config/puma.rb" > ./Procfile

### **将应用部署到好雨云平台**
#### **创建应用**
操作方法参见:新建应用

#### **提交代码**
创建应用的最后一步会给出应用的git代码仓库地址,提交用户名是好雨登陆邮箱,密码为平台登陆密码。

命令行下提交代码的命令:

$ cd /app/myapp
$ git init
$ git add .

设置git提交信息,这里根据用户实际情况填写

$ git config --global user.email "demo@goodrain.com"
$ git config --global user.name "demo"

$ git commit -m "init"
$ git remote add origin http://code.goodrain.com/app/团队名_应用名.git

git push origin master

Username for 'http://code.goodrain.com': 平台登陆邮箱地址
Password for 'http://zyq916@gmail.com@code.goodrain.com': 平台登陆密码
Counting objects: 68, done.
Delta compression using up to 16 threads.
Compressing objects: 100% (52/52), done.
Writing objects: 100% (68/68), 82.08 KiB | 0 bytes/s, done.
Total 68 (delta 2), reused 0 (delta 0)
To http://code.goodrain.com/app/团队名_应用名.git

  • [new branch] master -> master

一键部署

操作方法参见: 应用详情-一键部署

查看日志

部署或运行中的状态、错误信息都可以在日志中动态查看,操作方法参见:查看日志

访问应用

部署并启动成功后可以直接通过应用概览页的 “访问” 按钮打开应用

上一篇: 下一篇:
  页面正在加载中