Created
Apr 8, 2022 8:13 AM
Department
Engineering
Category
Deployment
Technology
Ruby on Rails
Tags
Date
URL
Rails
Cloud 66
Previous preparation
- If you require to run a command on every new deployment, add a
.cloud66/deploy_hooks.yml
configuration file. An example structure for installing a Linux package can be: - If you require workers, add a
Procfile
to the root directory. Example content:
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
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 account.
- 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.
- Fill in the record name. i.e. staging.app.example.com
- Select the record type CNAME.
- In the value, field fills in the domain name to which the Cloud66 server was hosted to and create the record.
Useful commands
To run these commands, first, install the Cloud66 toolbelt on 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 an 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 log file. 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