Guides‎ > ‎

My Ubuntu Setup

Notes for how I like to set up ubuntu & misc other sysadmin / system architecture notes.

Common

sudo apt-get update
sudo apt-get install aptitude denyhosts
sudo aptitude full-upgrade

sudo bash -c 'HOSTNAME=whatevor echo "$HOSTNAME" > /etc/hostname && echo "127.0.0.1 $HOSTNAME" >> /etc/hosts && /etc/init.d/hostname start && hostname $HOSTNAME'
bash # to make the new hostname show up at the prompt

sudo aptitude install ack-grep etckeeper mercurial ssh
sudo nano /etc/etckeeper/etckeeper.conf
Comment bzr and uncomment hg.
sudo etckeeper init
sudo etckeeper commit
sudo ufw allow ssh
sudo ufw enable
sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep

hg clone ssh://hg@bitbucket.org/dbenamy/configs
mv .bashrc .bashrc.orig
ln -s configs/.bashrc .
bash
ln -s configs/.gitconfig .
ln -s configs/.nanorc .
ln -s configs/.screenrc .

Rails with nginx and passenger

This is from early 2013. Hopefully there's a better way by now.

sudo adduser rails # a user for deploying and running the rails site
visudo
# Add a line at the bottom (uncommented):
# rails ALL=(ALL) NOPASSWD: /etc/init.d/nginx
sudo su - rails
curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm requirements
exit # out of rails user shell
# Install requirements listed by rvm requirements + libreadline5 (use sudo).
sudo su - rails # back to rails
rvm install 1.9.3
rvm use 1.9.3 --default
gem install rails passenger 
passenger-install-nginx-module # change prefix to /home/rails/nginx
nano nginx/conf/nginx.conf
Uncomment user line and change to "user rails;"
In "location /" block, replace what's there with
            root /home/rails/PROJECT/public; # be sure to point to public
            passenger_enabled on;
exit # out of rails user shell

wget -O init-deb.sh 'https://library.linode.com/assets/660-init-deb.sh'
#Take a look at the file to make sure it's still good
sudo mv init-deb.sh /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo sed -i 's/\/opt\/nginx/\/home\/rails\/nginx/g' /etc/init.d/nginx
sudo /etc/init.d/nginx start
sudo /usr/sbin/update-rc.d -f nginx defaults

sudo ufw allow http

Robust Infrastructure

  1. DNS failover- http://kvz.io/blog/2013/03/27/poormans-way-to-decent-dns-failover/
    or
    https://news.ycombinator.com/item?id=5450140:
    dnsmasq --interface=lo --all-servers --server=172.16.0.23 --server=8.8.8.8 --server=4.2.2.2
    echo "prepend domain-name-servers 127.0.0.1;" >> /etc/dhcp/dhcplient.conf
  2. HA and/or non-overlapping cron jobs: http://kvz.io/blog/2012/12/31/lock-your-cronjobs/
    1. solo
    2. timeout
    3. cronlock
  3. Puppet
  4. Fabric

Note to self: take a look at my Good Tech Tools doc for more high level tools to set up.
Comments