forked from discourse/discourse
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add sample Capistrano deployment files
Add the following sample Capistrano configuration files to ease deployment to a VPS using Capistrano: * `config/deploy.rb.sample` * `config/thin.yml.sample` * `Capfile.sample` The sample Capfile will additionally load any recipes provided by Discourse plugins. Signed-off-by: David Celis <[email protected]>
- Loading branch information
1 parent
4d2c28e
commit 5d014c6
Showing
3 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
load 'deploy' if respond_to?(:namespace) | ||
load 'deploy/assets' | ||
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) } | ||
load 'config/deploy' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# 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. | ||
|
||
require 'bundler/capistrano' | ||
require 'sidekiq/capistrano' | ||
|
||
# Repo Settings | ||
# You should change this to your fork of discourse | ||
set :repository, '[email protected]: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' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
--- | ||
chdir: /var/www/discourse/current | ||
environment: production | ||
address: 0.0.0.0 | ||
port: 3000 | ||
timeout: 30 | ||
log: /var/www/discourse/shared/log/thin.log | ||
pid: /var/www/discourse/shared/pids/thin.pid | ||
socket: /var/www/discourse/tmp/thin.sock | ||
max_conns: 1024 | ||
max_persistent_conns: 100 | ||
require: [] | ||
wait: 30 | ||
servers: 4 | ||
daemonize: true |