如何在数字海洋上一键部署rails个应用?
How to one click deploy rails app on digital ocean?
我已经在 rails 上的 ruby 数字海洋上创建了一个 droplet,其中已经配置了 nginx 和 unicorn 服务器。
如何将我已经创建的 rails 应用程序部署到该服务器。
我应该使用 capistrano 来部署吗?或者还有其他部署方式吗?
我去过digital ocean guide进行部署,但是对我这样的初学者来说很迷惑。
Tutorial used for creating droplet.
我创建了相同的 droplet
是的,您可以使用 Capistrano 进行部署,最好使用 Capistrano,您可以参考 http://robmclarty.com/blog/how-to-deploy-a-rails-4-app-with-git-and-capistrano。
如果您遇到任何问题,请告诉我。
或者您也可以使用 mina 进行部署。它类似于 capistrano,但它比 capistrano 更容易、更快。
我会逐步解释的。
使用 Ubuntu 12 或 14。
你需要 Nginx、RoR、Capistrano、git、passenger.
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 端口
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 乘客:
gem install passenger
11。使用 passenger
安装 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。为 nginx 克隆好的脚本 start/stop/restart if Ubuntu:
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
博雅!!检查您的浏览器!
我们去我们的应用程序吧!
1. gem depoly 的‘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.上限 deploy:check
7.上限 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。上限 deploy:cold
博雅!不清楚的地方我开问了
我已经在 rails 上的 ruby 数字海洋上创建了一个 droplet,其中已经配置了 nginx 和 unicorn 服务器。
如何将我已经创建的 rails 应用程序部署到该服务器。
我应该使用 capistrano 来部署吗?或者还有其他部署方式吗?
我去过digital ocean guide进行部署,但是对我这样的初学者来说很迷惑。
Tutorial used for creating droplet.
我创建了相同的 droplet
是的,您可以使用 Capistrano 进行部署,最好使用 Capistrano,您可以参考 http://robmclarty.com/blog/how-to-deploy-a-rails-4-app-with-git-and-capistrano。
如果您遇到任何问题,请告诉我。
或者您也可以使用 mina 进行部署。它类似于 capistrano,但它比 capistrano 更容易、更快。
我会逐步解释的。 使用 Ubuntu 12 或 14。 你需要 Nginx、RoR、Capistrano、git、passenger.
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 端口
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 乘客:
gem install passenger
11。使用 passenger
安装 nginxrvmsudo 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。为 nginx 克隆好的脚本 start/stop/restart if Ubuntu:
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
博雅!!检查您的浏览器!
我们去我们的应用程序吧!
1. gem depoly 的‘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.上限 deploy:check
7.上限 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。上限 deploy:cold
博雅!不清楚的地方我开问了