如何在数字海洋上单击部署rails app?

时间:2015-04-22 09:52:33

标签: ruby-on-rails ruby nginx deployment digital-ocean

我已经在已经配置好的nginx和unicorn服务器的轨道上的ruby数字海洋上创建了一个小滴。

如何将已创建的rails应用程序部署到该服务器。

我应该使用capistrano进行部署吗?或者还有其他方法可以部署吗?

我去过数字海洋指南进行部署,但对于像我这样的初学者来说这是非常令人困惑的。

Tutorial used for creating droplet.

我创建了相同的Droplet

2 个答案:

答案 0 :(得分:6)

我将尝试逐步解释它。 使用Ubuntu 12或14。 你需要Nginx,RoR,Capistrano,git,乘客。

<强> 0。记录到服务器

ssh root@server_ip

你可以在这里找到ip https://cloud.digitalocean.com/droplets

<强> 1。创建用户(如果需要)

adduser deployer

<强> 2。将用户移至sudo用户

visudo
deployer ALL=(ALL:ALL) ALL

第3。为他安装bash

nano /etc/passwd
Change /bin/sh to /bin/bash

<强> 4。更改ssh-port以确保安全性

nano /etc/ssh/sshd_config
Change Port 22 on Port XXXX (where XXXX is any number)

<强> 5。重新加载ssh

<强> 6。通过ssh输入我们的新用户

ssh -p XXXX deployer@XXX.XXX.XXX.XXX

<强> 7。如果需要,请更新系统

sudo apt-get update 
sudo apt-get upgrade
sudo apt-get install curl

<强> 8。安装rvm:

curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm requirements

<强> 9。安装ruby,postgres等。

rvm install [version of ruby similar to app]

sudo apt-get install postgresql

如果未创建群集,请手动执行:

sudo pg_createcluster [postgresql_version] main --start

sudo apt-get install language-pack-en-base
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales

创建postgres用户

sudo -u postgres psql 
alter user postgres with password '[password]';

要从psql退出,请按\ q

sudo apt-get install git-core

<强> 10。安装宝石乘客:

gem install passenger

<强> 11。使用乘客安装nginx

rvmsudo passenger-install-nginx-module

<强> 12。如果需要,设置交换

sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap

<强> 13。更改nginx的配置(服务器部分):

server {
      listen 80;
      server_name www.yourhost.com;
      root /somewhere/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
      location ^~ /assets/ 
           { gzip_static on; 
           expires max; 
           add_header Cache-Control public; 
      }
 }

<强> 14。如果Ubuntu:

,克隆nginx启动/停止/重启的好脚本
git clone https://github.com/vkurennov/rails-nginx-passenger-ubuntu.git
sudo cp nginx/nginx.conf /etc/init.d/nginx.conf
sudo chmod +x /etc/init.d/nginx/conf

<强> 15。运行nginx:

sudo /etc/init.d/nginx start

<强> BOYA !!检查您的浏览器!

我们去看看我们的应用程序吧!

<强> 1。解密的宝石'capistrano'

group :development do
  gem 'capistrano'
  gem 'rvm-capistrano'
  gem 'net-ssh’, ‘2.7.0'
end

<强> 2。运行

capify .

打开deploy.rb并设置:

set :application, 'app_title'
set :repository,  'app_repo'

<强> 5。添加

require 'bundler/capistrano'
require "rvm/capistrano"

load 'deploy/assets’

set :port, XXXX
set :use_sudo, false

set :rails_env, :production
set :branch, "master"
set :deploy_to, "/home/deployer/app_title"
set :user, 'deployer'

role :web, "XXX.XXX.XXX.XXX"                          # Your HTTP server, Apache/etc
role :app, "XXX.XXX.XXX.XXX"                          # This may be the same as your `Web` server
role :db,  "XXX.XXX.XXX.XXX", :primary => true # This is where Rails migrations will run

<强> 6。 cap deploy:check

<强> 7。 cap deploy:setup

set :bundle_cmd, "/home/deployer/.rvm/gems/ruby-2.0.0-p451@global/bin/bundle"
set :bundle_dir, "/home/deployer/.rvm/gems/ruby-2.0.0-p451"

set :rvm_type, :user
set :rvm_ruby_string, 'ruby-2.0.0-p451@global'

<强> 8。部署配方:

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

<强> 9。在服务器上克隆ssh-key并添加到repo

ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

<强> 10。添加gem'therubyracer'

<强> 11。 cap deploy:cold

博雅!如果不清楚,我会提出问题。

答案 1 :(得分:0)

是的,您可以使用Capistrano进行部署,最好使用Capistrano,您可以参考http://robmclarty.com/blog/how-to-deploy-a-rails-4-app-with-git-and-capistrano

如果您遇到任何问题,请告诉我。