forked from discourse/discourse
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.rb.sample
More file actions
101 lines (83 loc) · 3.51 KB
/
Copy pathdeploy.rb.sample
File metadata and controls
101 lines (83 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# This is a set of sample deployment recipes for deploying via Capistrano.
# One of the recipes (deploy:symlink_nginx) assumes you have an nginx configuration
# file at config/nginx.conf. You can make this easily from the provided sample
# nginx configuration file.
#
# For help deploying via Capistrano, see this thread:
# http://meta.discourse.org/t/deploy-discourse-to-an-ubuntu-vps-using-capistrano/6353
require 'bundler/capistrano'
require 'sidekiq/capistrano'
# Repo Settings
# You should change this to your fork of discourse
set :repository, 'git@github.com:discourse/discourse.git'
set :deploy_via, :remote_cache
set :branch, fetch(:branch, 'master')
set :scm, :git
ssh_options[:forward_agent] = true
# General Settings
set :deploy_type, :deploy
default_run_options[:pty] = true
# Server Settings
set :user, 'admin'
set :use_sudo, false
set :rails_env, :production
role :app, 'SERVER_ADDRESS_HERE', primary: true
role :db, 'SERVER_ADDRESS_HERE', primary: true
role :web, 'SERVER_ADDRESS_HERE', primary: true
# Application Settings
set :application, 'discourse'
set :deploy_to, "/var/www/#{application}"
# Perform an initial bundle
after "deploy:setup" do
run "cd #{current_path} && bundle install"
end
# Tasks to start/stop/restart thin
namespace :deploy do
desc 'Start thin servers'
task :start, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && RUBY_GC_MALLOC_LIMIT=90000000 bundle exec thin -C config/thin.yml start", :pty => false
end
desc 'Stop thin servers'
task :stop, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && bundle exec thin -C config/thin.yml stop"
end
desc 'Restart thin servers'
task :restart, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && RUBY_GC_MALLOC_LIMIT=90000000 bundle exec thin -C config/thin.yml restart"
end
end
# Symlink config/nginx.conf to /etc/nginx/sites-enabled. Make sure to restart
# nginx so that it picks up the configuration file.
namespace :config do
task :nginx, roles: :app do
puts "Symlinking your nginx configuration..."
sudo "ln -nfs #{release_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
end
end
after "deploy:setup", "config:nginx"
# Tasks to start/stop/restart a daemonized clockwork instance
namespace :clockwork do
desc "Start clockwork"
task :start, :roles => [:app] do
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec clockworkd -c #{current_path}/config/clock.rb --pid-dir #{shared_path}/pids --log --log-dir #{shared_path}/log start"
end
task :stop, :roles => [:app] do
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec clockworkd -c #{current_path}/config/clock.rb --pid-dir #{shared_path}/pids --log --log-dir #{shared_path}/log stop"
end
task :restart, :roles => [:app] do
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec clockworkd -c #{current_path}/config/clock.rb --pid-dir #{shared_path}/pids --log --log-dir #{shared_path}/log restart"
end
end
after "deploy:stop", "clockwork:stop"
after "deploy:start", "clockwork:start"
before "deploy:restart", "clockwork:restart"
# Seed your database with the initial production image. Note that the production
# image assumes an empty, unmigrated database.
namespace :db do
desc 'Seed your database for the first time'
task :seed do
run "cd #{current_path} && psql -d discourse_production < pg_dumps/production-image.sql"
end
end
# Migrate the database with each deployment
after 'deploy:update_code', 'deploy:migrate'