Rails
Cloud 66
Previous preparation
- If you require to run a command on every new deployment, add a
.cloud66/deploy_hooks.yml
configuration file. Example structure for installing a linux package can be:staging: # Environment first_thing: # Hook point - command: apt-get install ffmpeg -y # Hook type target: any # Hook fields execute: true production: # Environment first_thing: # Hook point - command: apt-get install ffmpeg -y # Hook type target: any # Hook fields execute: true
- If you require workers, add a
Procfile
at the root directory. Example content:worker: bundle exec sidekiq -e $RAILS_ENV
New Rails server deployment
- On the Cloud 66 Dashboard, click on New Application.
- If you haven’t, link your Github account to your Cloud66 acount
- Select the git repository you wish to deploy
- Select the branch, the environment, and the application name. Conventions to follow are:
staging
branch will go to theStaging
environment,master
branch will go to theProduction
environment- The application name will be in
Title Case
and end withAPI
for backend applications. The environment name is not needed.
- Click on
Analyze Application
and wait for a couple minutes - Configure the deployment servers that will be used. Take into account:
- At Cloud Provider, select the customer’s cloud account. If it doesn’t appear there, add it or contact your team leader
- Server Region is customer dependant, get it from your team leader or the product manager.
- Server Size should be
t2.micro
for staging andt2.medium
for production - Deploy PostgreSQL should be
Shared with the Rails server
for staging and aNew cloud server
for production
- Click on Deploy Application.
- In the newly deployed application, add the
RAILS_MASTER_KEY
environment variable, as per the secure credentials instructions. - Add a new ssl certificate
- With SSL set up, open your applications, go to
Network Settings
in the right hand menu, go to theRedirects
tab, and select theRedirect HTTP to HTTPS
checkmark. Click onApply Redirects
before you leave - If your project requires background jobs, set up the worker server and the redis server
Setting up CName record
- On the AWS Route53 console dashboard click on Hosted Zone.
- In the hosted zones you can find hosted zone details and the list of records.(click on Create record )
- Fill up the necessary fields.
Useful commands
To run these commands, first install the Cloud66 toolbelt in your machine by running curl -sSL https://s3.amazonaws.com/downloads.cloud66.com/cx_installation/cx_install.sh | bash
cx stack list
: List all the stacks. Useful to get the$STACK_NAME
value for the other commands, and see the last deployment status and date/timecx ssh -s $STACK_NAME web
: Open a ssh session at the desired stack’s main web servercx redeploy -s $STACK_NAME
: Redeploy the desired stackcx tail -s $STACK_NAME web $LOGFILE
View real-time logs of the desired logfile. Values for$LOGFILE
can be:staging.log / production.log
: The main Rails application log server. Choose the right name according to the server’s environmentnginx_error.log
: The nginx HTTP server log