Skip to content

Instantly share code, notes, and snippets.

@Epigene
Created September 3, 2014 07:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Epigene/fa8a6b8c88b3a38d2fc3 to your computer and use it in GitHub Desktop.
Save Epigene/fa8a6b8c88b3a38d2fc3 to your computer and use it in GitHub Desktop.
Droplet Image Setup
##
## Here is what image already has
##
#add repos
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:chris-lea/node.js
sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
# Setup deployer user
adduser deployer --ingroup sudo
su deployer; cd
sudo chmod 777 /etc/environment; echo "LC_ALL=en_US.UTF-8" >> /etc/environment; echo "LANG=en_US.UTF-8" >> /etc/environment; echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale; echo "LANG=en_US.UTF-8" >> /etc/default/locale; sudo chmod 744 /etc/environment
# postgresql
sudo -u postgres createuser creative
sudo -u postgres psql
postgres=# \password creative
# Install block
apt-get -y update
apt-get -y install python-software-properties software-properties-common curl git-core nginx postgresql-common postgresql-9.2 libpq-dev telnet postfix nodejs libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
# nginx installed
# Postfix installed
# Node.js installed
# Install rvm + ruby + bundler (for rails apps)
curl -L https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm install 2.1.2
rvm use 2.1.2 --default
# ruby -v
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
gem install bundler
git config --global color.ui true
# Configure Nginx
sudo ln -s /opt/nginx/ /etc/nginx # links the nginx executable into etc
cd /etc/init.d; sudo touch nginx_start.sh
echo "#!/bin/bash\nsudo /etc/init.d/nginx start" >> /etc/init.d/nginx_start.sh
sudo chmod +x /etc/init.d/nginx_start.sh
sudo update-rc.d nginx_start.sh defaults
##
## Here is what is app-specific
##
# Postgres database
sudo -u postgres psql
# create database <app> owner creative;
# Configure GIT
git config --global user.name "<YourGitName>"
git config --global user.email "<YourEmail>"
// From local terminal `ssh-copy-id -i ~/.ssh/id_rsa.pub deployer@<DROPLET_IP>`
ssh -T git@github.com
# Secure the server
sudo chmod 400 /home/deployer/.ssh/authorized_keys
sudo chown deployer:sudo /home/deployer -R
sudo nano /etc/ssh/sshd_config // PermitRootLogin yes -> no
# SSL
openssl genrsa -des3 -passout pass:x -out server.pass.key 2048
openssl rsa -passin pass:x -in server.pass.key -out server.key
rm server.pass.key
openssl req -new -key server.key -out server.csr
## Self signed
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# after deploy:setup
chmod +x /etc/init.d/unicorn_<APP_NAME> # set as executable
# after deploy:cold
rm /etc/nginx/sites-enabled/default
service nginx restart
update-rc.d -f unicorn_<APP_NAME> defaults
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment