cloud66 easydeploy
This commit is contained in:
parent
d80f4fa3f7
commit
108d5e5c34
|
@ -0,0 +1,233 @@
|
|||
production:
|
||||
first_thing:
|
||||
# 1. Permissions on postgres box
|
||||
- source: /.cloud66/scripts/permissions.sh
|
||||
destination: /tmp/scripts/permissions.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
after_postgresql:
|
||||
# 2. Copy SQL image to PSQL server
|
||||
- source: /pg_dumps/production-image.sql
|
||||
destination: /tmp/images/production-image.sql
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
owner: postgres
|
||||
after_checkout:
|
||||
# 3. Copy Procfile
|
||||
- source: /.cloud66/files/Procfile
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/Procfile
|
||||
target: rails
|
||||
# 4. Copy redis settings
|
||||
- source: /.cloud66/files/redis.yml
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/redis.yml
|
||||
target: rails
|
||||
parse: false
|
||||
# 5. Copy production.rb file
|
||||
- source: /.cloud66/files/production.rb
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/environments/production.rb
|
||||
target: rails
|
||||
# 6. Move thin config to server
|
||||
- source: /.cloud66/files/thin.yml
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/thin.yml
|
||||
target: rails
|
||||
after_rails:
|
||||
# 7. Set environment variables and allow PSQL user to access them
|
||||
- source: /.cloud66/scripts/env_vars.sh
|
||||
destination: /tmp/scripts/env_vars.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
last_thing:
|
||||
# 8. KILL DB
|
||||
- source: /.cloud66/scripts/kill_db.sh
|
||||
destination: /tmp/scripts/kill_db.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 9. DB:DROP & DB:CREATE
|
||||
- source: /.cloud66/scripts/drop_create.sh
|
||||
destination: /tmp/scripts/drop_create.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 10. Import database image
|
||||
- source: /.cloud66/scripts/import_prod.sh
|
||||
destination: /tmp/scripts/import_prod.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
owner: postgres
|
||||
run_as: postgres
|
||||
# 11. Migrate database
|
||||
- source: /.cloud66/scripts/migrate.sh
|
||||
destination: /tmp/migrate.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 12. Curl script
|
||||
- source: /.cloud66/scripts/curl.sh
|
||||
destination: /tmp/curl.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
staging:
|
||||
first_thing:
|
||||
# 1. Permissions on postgres box
|
||||
- source: /.cloud66/scripts/permissions.sh
|
||||
destination: /tmp/scripts/permissions.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
after_postgresql:
|
||||
# 2. Copy SQL image to PSQL server
|
||||
- source: /pg_dumps/production-image.sql
|
||||
destination: /tmp/images/production-image.sql
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
owner: postgres
|
||||
after_checkout:
|
||||
# 3. Copy Procfile
|
||||
- source: /.cloud66/files/Procfile
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/Procfile
|
||||
target: rails
|
||||
# 4. Rename redis.yml.sample file
|
||||
- source: /.cloud66/files/redis.yml
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/redis.yml
|
||||
target: rails
|
||||
parse: false
|
||||
# 5. Rename production.rb.sample file
|
||||
- source: /.cloud66/files/production.rb
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/environments/production.rb
|
||||
target: rails
|
||||
# 6. Move thin config to server
|
||||
- source: /.cloud66/files/thin.yml
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/thin.yml
|
||||
target: rails
|
||||
after_rails:
|
||||
# 7. Set environment variables and allow PSQL user to access them
|
||||
- source: /.cloud66/scripts/env_vars.sh
|
||||
destination: /tmp/scripts/env_vars.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
last_thing:
|
||||
# 8. KILL DB
|
||||
- source: /.cloud66/scripts/kill_db.sh
|
||||
destination: /tmp/scripts/kill_db.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 9. DB:DROP & DB:CREATE
|
||||
- source: /.cloud66/scripts/drop_create.sh
|
||||
destination: /tmp/scripts/drop_create.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 10. Import database image
|
||||
- source: /.cloud66/scripts/import_prod.sh
|
||||
destination: /tmp/scripts/import_prod.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
owner: postgres
|
||||
run_as: postgres
|
||||
# 11. Migrate database
|
||||
- source: /.cloud66/scripts/migrate.sh
|
||||
destination: /tmp/migrate.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 12. Curl script
|
||||
- source: /.cloud66/scripts/curl.sh
|
||||
destination: /tmp/curl.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
development:
|
||||
first_thing:
|
||||
# 1. Permissions on postgres box
|
||||
- source: /.cloud66/scripts/permissions.sh
|
||||
destination: /tmp/scripts/permissions.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
after_postgresql:
|
||||
# 2. Copy SQL image to PSQL server
|
||||
- source: /pg_dumps/development-image.sql
|
||||
destination: /tmp/images/development-image.sql
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
owner: postgres
|
||||
after_checkout:
|
||||
# 3. Copy Procfile
|
||||
- source: /.cloud66/files/Procfile
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/Procfile
|
||||
target: rails
|
||||
# 4. Rename redis.yml.sample file
|
||||
- source: /.cloud66/files/redis.yml
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/redis.yml
|
||||
target: rails
|
||||
parse: false
|
||||
# 5. Move thin config to server
|
||||
- source: /.cloud66/files/thin.yml
|
||||
destination: <%= ENV['RAILS_STACK_PATH'] %>/config/thin.yml
|
||||
target: rails
|
||||
after_rails:
|
||||
# 6. Set environment variables and allow PSQL user to access them
|
||||
- source: /.cloud66/scripts/env_vars.sh
|
||||
destination: /tmp/scripts/env_vars.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
last_thing:
|
||||
# 7. KILL DB
|
||||
- source: /.cloud66/scripts/kill_db.sh
|
||||
destination: /tmp/scripts/kill_db.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 8. DB:DROP & DB:CREATE
|
||||
- source: /.cloud66/scripts/drop_create.sh
|
||||
destination: /tmp/scripts/drop_create.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 9. Import database image
|
||||
- source: /.cloud66/scripts/import_dev.sh
|
||||
destination: /tmp/scripts/import_dev.sh
|
||||
target: postgresql
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
owner: postgres
|
||||
run_as: postgres
|
||||
# 10. Migrate database
|
||||
- source: /.cloud66/scripts/migrate.sh
|
||||
destination: /tmp/migrate.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
||||
# 11. Curl script
|
||||
- source: /.cloud66/scripts/curl.sh
|
||||
destination: /tmp/curl.sh
|
||||
target: rails
|
||||
apply_during: build_only
|
||||
execute: true
|
||||
sudo: true
|
|
@ -0,0 +1,3 @@
|
|||
web: bundle exec rails server -p $PORT
|
||||
sidekiq: bundle exec sidekiq -e $RAILS_ENV
|
||||
custom_web: bundle exec thin start -C config/thin.yml -e $RACK_ENV -d
|
|
@ -0,0 +1,69 @@
|
|||
Discourse::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
# Code is not reloaded between requests
|
||||
config.cache_classes = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
|
||||
# Disable Rails's static asset server (Apache or nginx will already do this)
|
||||
config.serve_static_assets = false
|
||||
|
||||
# Compress JavaScripts and CSS
|
||||
config.assets.compress = true
|
||||
|
||||
# stuff should be pre-compiled
|
||||
config.assets.compile = false
|
||||
|
||||
# Generate digests for assets URLs
|
||||
config.assets.digest = true
|
||||
|
||||
# Specifies the header that your server uses for sending files
|
||||
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# the I18n.default_locale when a translation can not be found)
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
|
||||
# you may use other configuration here for mail eg: sendgrid
|
||||
|
||||
config.action_mailer.delivery_method = :smtp
|
||||
config.action_mailer.smtp_settings = {
|
||||
:address => ENV['SMTP_ADDRESS'],
|
||||
:port => ENV['SMTP_PORT'],
|
||||
:domain => ENV['SMTP_DOMAIN'],
|
||||
:user_name => ENV['SMTP_USERNAME'],
|
||||
:password => ENV['SMTP_PASSWORD'],
|
||||
:authentication => 'plain',
|
||||
:enable_starttls_auto => true }
|
||||
|
||||
#config.action_mailer.delivery_method = :sendmail
|
||||
#config.action_mailer.sendmail_settings = {arguments: '-i'}
|
||||
|
||||
# Send deprecation notices to registered listeners
|
||||
config.active_support.deprecation = :notify
|
||||
|
||||
# this will cause all handlebars templates to be pre-compiles, making your page faster
|
||||
config.handlebars.precompile = true
|
||||
|
||||
# this setting enables rack_cache so it caches various requests in redis
|
||||
config.enable_rack_cache = true
|
||||
|
||||
# allows admins to use mini profiler
|
||||
config.enable_mini_profiler = true
|
||||
|
||||
# allows Cross-origin resource sharing (CORS) for API access in JavaScript (default to false for security).
|
||||
# See the initializer and https://github.com/cyu/rack-cors for configuration documentation.
|
||||
#
|
||||
# config.enable_rack_cors = false
|
||||
# config.rack_cors_origins = ['*']
|
||||
# config.rack_cors_resource = ['*', { :headers => :any, :methods => [:get, :post, :options] }]
|
||||
|
||||
# Discourse strongly recommend you use a CDN.
|
||||
# For origin pull cdns all you need to do is register an account and configure
|
||||
# config.action_controller.asset_host = "http://YOUR_CDN_HERE"
|
||||
|
||||
end
|
|
@ -0,0 +1,23 @@
|
|||
defaults: &defaults
|
||||
uri: <%= uri = URI.parse( ENV['REDIS_ADDRESS'].nil? ? ENV['REDIS_PROVIDER_URL'] || "redis://localhost:6379" : "redis://#{ENV['REDIS_ADDRESS']}:6379") %>
|
||||
host: <%= uri.host %>
|
||||
port: <%= uri.port %>
|
||||
password: <%= uri.password %>
|
||||
db: 0
|
||||
cache_db: 2
|
||||
|
||||
development:
|
||||
<<: *defaults
|
||||
|
||||
profile:
|
||||
<<: *defaults
|
||||
|
||||
test:
|
||||
<<: *defaults
|
||||
db: 1
|
||||
|
||||
staging:
|
||||
<<: *defaults
|
||||
|
||||
production:
|
||||
<<: *defaults
|
|
@ -0,0 +1,13 @@
|
|||
address: localhost
|
||||
port: 3000
|
||||
timeout: 30
|
||||
pid: /tmp/web_server.pid
|
||||
socket: /tmp/web_server.sock
|
||||
max_conns: 1024
|
||||
max_persistent_conns: 100
|
||||
require: []
|
||||
wait: 30
|
||||
daemonize: true
|
||||
chdir: $STACK_PATH
|
||||
environment: $RAILS_ENV
|
||||
log: $STACK_PATH/log/thin.log
|
|
@ -0,0 +1,19 @@
|
|||
production:
|
||||
rails:
|
||||
server:
|
||||
unique_name: frontend
|
||||
configuration:
|
||||
ignore_missing_schema: true
|
||||
staging:
|
||||
rails:
|
||||
server:
|
||||
unique_name: frontend
|
||||
configuration:
|
||||
ignore_missing_schema: true
|
||||
development:
|
||||
rails:
|
||||
server:
|
||||
unique_name: frontend
|
||||
configuration:
|
||||
use_asset_pipeline: false
|
||||
ignore_missing_schema: true
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
FILE=/tmp/curl_done
|
||||
|
||||
if [ -f $FILE ]
|
||||
then
|
||||
echo "File $FILE exists..."
|
||||
else
|
||||
curl localhost
|
||||
curl localhost
|
||||
curl localhost
|
||||
curl localhost
|
||||
curl localhost
|
||||
touch /tmp/curl_done
|
||||
fi
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
FILE=/tmp/drop_create_done
|
||||
|
||||
if [ -f $FILE ]
|
||||
then
|
||||
echo "File $FILE exists..."
|
||||
else
|
||||
cd $RAILS_STACK_PATH
|
||||
bundle exec rake db:drop db:create
|
||||
touch /tmp/drop_create_done
|
||||
fi
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
source /var/.cloud66_env
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
FILE=/tmp/import_dev_done
|
||||
|
||||
if [ -f $FILE ]
|
||||
then
|
||||
echo "File $FILE exists..."
|
||||
else
|
||||
psql $POSTGRESQL_DATABASE < /tmp/images/development-image.sql
|
||||
touch /tmp/import_dev_done
|
||||
fi
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
FILE=/tmp/import_prod_done
|
||||
|
||||
if [ -f $FILE ]
|
||||
then
|
||||
echo "File $FILE exists..."
|
||||
else
|
||||
psql $POSTGRESQL_DATABASE < /tmp/images/production-image.sql
|
||||
touch /tmp/import_prod_done
|
||||
fi
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
FILE=/tmp/kill_db_done
|
||||
|
||||
if [ -f $FILE ]
|
||||
then
|
||||
echo "File $FILE exists..."
|
||||
else
|
||||
ps xa | grep postgres: | grep $POSTGRESQL_DATABASE | grep -v grep | awk '{print $1}' | sudo xargs kill
|
||||
touch /tmp/kill_db_done
|
||||
fi
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
FILE=/tmp/migrate_done
|
||||
|
||||
if [ -f $FILE ]
|
||||
then
|
||||
echo "File $FILE exists..."
|
||||
else
|
||||
cd $RAILS_STACK_PATH
|
||||
bundle exec rake db:migrate db:seed_fu
|
||||
touch /tmp/migrate_done
|
||||
fi
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
sudo chmod 0644 -R /var/.cloud66_env
|
|
@ -0,0 +1,17 @@
|
|||
# Deploying on Cloud 66
|
||||
<a href="http://blog.cloud66.com/post/62900887610/introducing-cloud-66-easydeploy">
|
||||
![Logo](http://cdn.cloud66.com/images/easy-deploy.png)
|
||||
</a>
|
||||
|
||||
Simply follow 7 steps on [building your stack](https://www.cloud66.com/help/first_stack), sign up for a Sendgrid account (for sending emails) and set
|
||||
the environment variables below to have your own fully functioning Discourse installation up and running.
|
||||
|
||||
Note: Setting environment variables is done during step five, before you click 'deploy':
|
||||
![Environment variables](http://cdn.cloud66.com/images/environment_variables.png)
|
||||
|
||||
1. SMTP_ADDRESS = your SMTP host
|
||||
2. SMTP_PORT = the port on your SMTP host
|
||||
3. SMTP_DOMAIN = the domain you will be sending emails from
|
||||
4. SMTP_USERNAME = your SMTP username
|
||||
5. SMTP_PASSWORD = your SMTP password
|
||||
6. HOST_NAME = the domain hosting your site
|
|
@ -396,3 +396,11 @@ This change should also be made to your production file.
|
|||
|
||||
We take security very seriously at Discourse, and all our code is 100% open source and peer reviewed.
|
||||
Please read [our security guide](https://github.com/discourse/discourse/blob/master/docs/SECURITY.md) for an overview of security measures in Discourse.
|
||||
|
||||
## Deploying with Cloud 66
|
||||
<a href="http://blog.cloud66.com/post/62900887610/introducing-cloud-66-easydeploy">
|
||||
![Logo](http://cdn.cloud66.com/images/easy-deploy.png)
|
||||
</a>
|
||||
|
||||
Deploying and maintaining a Discourse setup through Cloud 66 is extremely easy.
|
||||
Click the badge and follow these [instructions](https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud66.md) to deploy!
|
||||
|
|
Loading…
Reference in New Issue