Configuração inicial

Logue como root:

ssh root@10.0.0.1

Configure o hostname:

# echo "plato" > /etc/hostname
# hostname -F /etc/hostname

Altere o arquivo /etc/hosts:

127.0.0.1                       localhost.localdomain    localhost
12.34.56.78                     plato.example.com        plato
2600:3c01::a123:b456:c789:d012  plato.example.com        plato

Configure a timezone para America/Sao_Paulo:

# dpkg-reconfigure tzdata

Atualize o software:

# apt-get update
# apt-get upgrade --show-upgraded

Instale alguns pacotes:

# apt-get -y install linux-headers-$(uname -r) build-essential
# apt-get -y install zlib1g-dev libssl-dev libreadline-gplv2-dev
# apt-get -y install imagemagick
# apt-get -y install libmagickwand-dev
# apt-get -y install libcurl4-openssl-dev
# apt-get -y install vim

Usuáiro padrão

Crie um usuário padrão:

# adduser shaman

Adicione o usuário no grupo de sudo:

# usermod -aG sudo shaman

Configure o SSH no arquivo /etc/ssh/sshd_config:

PermitRootLogin no

Reinicie o serviço SSH:

# service ssh restart

Localmente gere seu par de chaves se ainda não tiver:

ssh-keygen

Copie as chaves para o host:

ssh-copy-id -i ~/.ssh/id_rsa.pub shaman@10.0.0.1

Entre na máquina sem root:

ssh shaman@10.0.0.1

RVM, MySQL e NodeJS

Instale RVM system wide:

$ \curl -#L https://get.rvm.io | sudo bash -s stable --autolibs=3

Adicione o usuário no grupo rvm (depois saia e conecte novamente):

$ sudo usermod -aG rvm shaman

Crie o arquivo /etc/gemrc:

install: --no-rdoc --no-ri
update:  --no-rdoc --no-ri

Instale o Ruby 1.9.3-p392:

$ rvm install ruby-1.9.3-p392

Instale o MySQL:

$ sudo apt-get -y install mysql-server mysql-client mysql-common libmysqlclient-dev

Instale o NodeJS:

$ sudo apt-get -y install software-properties-common
$ sudo apt-get -y install python-software-properties python g++ make
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get -y install nodejs

Passenger e Nginx

Instale o passenger:

$ gem install passenger

Baixe e extraia os módulos pra upload:

(http://wiki.nginx.org/NginxHttpUploadProgressModule)

$ wget -O upload-progress https://github.com/masterzen/nginx-upload-progress-module/tarball/v0.9.0
$ tar -zxf v0.9.0
$ mv masterzen-nginx-upload-progress-module-a788dea/ progress-module

Baixe e extraia o Nginx:

$ wget http://nginx.org/download/nginx-1.3.15.tar.gz
$ tar -zxf nginx-1.3.15.tar.gz

Crie um usuário para o Nginx:

$ sudo adduser --system --no-create-home --disabled-login --disabled-password \
--group nginx

Instale o Nginx com o Passenger:

$ rvmsudo passenger-install-nginx-module

Escolha a opção 2, e passe os seguintes argumentos na instalação:

--user=nginx --group=nginx --add-module=/home/shaman/tools/progress-module

Crie um script de inicialização para o Nginx:

$ wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh
$ sudo mv init-deb.sh /etc/init.d/nginx
$ sudo chmod +x /etc/init.d/nginx
$ sudo /usr/sbin/update-rc.d -f nginx defaults
$ sudo /etc/init.d/nginx start

Edite o arquivo /opt/nginx/nginx.conf e coloque dentro do bloco http {}:

include sites-enabled/*;

Crie as pastas necessárias:

$ sudo mkdir /opt/nginx/conf/sites-available
$ sudo mkdir /opt/nginx/conf/sites-enabled

Para adicionar um site:

$ cd /opt/nginx/conf/sites-available
$ sudo touch app.com
$ sudo ln -s /opt/nginx/conf/sites-available/app.com /opt/nginx/conf/sites-enabled/
$ sudo /etc/init.d/nginx restart