Rails 5.1 Consulting und Schulung vom Autor:
www.wintermeyer-consulting.de/rails/

15.2. Grundinstallation Webserver

Bitte loggen Sie sich als root auf dem Webserver ein.

Buildsystem

Als Erstes installieren wir ein paar Pakete, die wir brauchen.
root@debian:~# apt-get -y install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion python
[...]
root@debian:~# 

Node.js

Zum optimalen Einsatz der Asset Pipeline installieren wir Node.js. Bitte gehen Sie dafür auf die Homepage von Node.js (http://nodejs.org/), suchen Sie dort nach dem aktuellen stabilen Release und passen Sie die hier angegebenen Kommandos entsprechend an.
root@debian:~# cd /usr/src
root@debian:/usr/src# wget http://nodejs.org/dist/v0.8.1/node-v0.8.1.tar.gz
[...]
root@debian:/usr/src# tar xzf node-v0.8.1.tar.gz 
root@debian:/usr/src# cd node-v0.8.1
root@debian:/usr/src/node-v0.8.1# ./configure 
[...]
root@debian:/usr/src/node-v0.8.1# make
[...]
root@debian:/usr/src/node-v0.8.1# make install
[...]
root@debian:/usr/src/node-v0.8.1# cd
[...]
root@debian:~# 

nginx

Nginx wird unser Webserver zur Außenwelt. Er fungiert als Proxy und Loadbalancer. Da in der Debian-Distribution eine recht alte Nginx-Version vertrieben wird, installieren wir die von Nginx direkt vertriebenen Pakete hinzu.
root@debian:~# curl http://nginx.org/keys/nginx_signing.key | apt-key add -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1561  100  1561    0     0   3887      0 --:--:-- --:--:-- --:--:--  8819
OK
root@debian:~# echo 'deb http://nginx.org/packages/debian/ squeeze nginx' >> /etc/apt/sources.list
root@debian:~# echo 'deb-src http://nginx.org/packages/debian/ squeeze nginx' >> /etc/apt/sources.list
root@debian:~# apt-get update
[...]
root@debian:~# apt-get -y install nginx
[...]
root@debian:~# 

User Deployer anlegen

Unser Rails-Projekt wird innerhalb eines mit RVM im User-Space installierten Ruby und Rails laufen. Dafür erstellen wir einen neuen User namens deployer:
root@debian:~# adduser deployer
Lege Benutzer »deployer« an ...
Lege neue Gruppe »deployer« (1002) an ...
Lege neuen Benutzer »deployer« (1002) mit Gruppe »deployer« an ...
Erstelle Home-Verzeichnis »/home/deployer« ...
Kopiere Dateien aus »/etc/skel« ...
Geben Sie ein neues UNIX-Passwort ein: 
Geben Sie das neue UNIX-Passwort erneut ein: 
passwd: Passwort erfolgreich geändert
Benutzerinformationen für deployer werden geändert.
Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert
 Vollständiger Name []: Deployer
 Raumnummer []: 
 Telefon geschäftlich []: 
 Telefon privat []: 
 Sonstiges []: 
Sind die Informationen korrekt? [J/n] J
root@debian:~#

Verzeichnisstruktur anlegen

Jetzt legen wir ein Verzeichnis /var/www an und setzen die Rechte dafür:
root@debian:~# mkdir -p /var/www
root@debian:~# usermod -a -G www-data nginx
root@debian:~# usermod -a -G www-data deployer
root@debian:~# chgrp -R www-data /var/www
root@debian:~# chmod -R 775 /var/www
root@debian:~#

Rails-Umgebung für den User Deployer aufsetzen

Weiter geht es mit dem User deployer:
root@debian:~# su - deployer
deployer@debian:~$ 
Bitte führen Sie als User deployer die in Abschnitt 1.5, „Debian 6.0 (Squeeze) - Installation von Ruby on Rails 3.2 “ aufgeführten Schritte zur Installation von Ruby 1.9.3 und Rails 3.2 per rvm aus. Hier ist die Ein-Zeilen-Cut-and-Paste-Kurzversion:
deployer@debian:~$ curl -L https://get.rvm.io | bash -s stable && source ~/.rvm/scripts/'rvm' && rvm install 1.9.3 && gem install rails
[...]
deployer@debian:~$
Um Unicorn mit der RVM-Umgebung aus einen Init.d Skript starten zu können, müssen wir jetzt noch einen entsprechenden Wrapper generieren:
deployer@debian:~$ gem install unicorn
[...]
deployer@debian:~$ rvm wrapper 1.9.3 bootup unicorn
deployer@debian:~$ exit
root@debian:~$

Datenbank

Meistens will man in einem Produktivsystem eine "große" Datenbank wie PostgreSQL oder MySQL. Deshalb hier noch die Anleitung, wie man eine MySQL-Datenbank auf diesem System installieren kann und welche Anpassungen man im Rails-Projekt vornehmen muss.

MySQL-Installation

Als Nächstes installieren wir die Datenbank MySQL. Dabei werden Sie nach einem Datenbankpasswort gefragt. Bitte merken Sie sich dieses Passwort. Damit kann sich später root auf der Datenbank einloggen.
root@debian:~# apt-get -y install mysql-server libmysql-ruby libmysqlclient-dev
[...]
root@debian:~# 

Datenbank mit Rechten anlegen

In der MySQL-Datenbank müssen wir die Datenbank blog mit Zugriffsrechten für den User deployer anlegen:
deployer@debian:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.63-0+squeeze1 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE blog;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT USAGE ON *.* TO deployer@localhost IDENTIFIED BY 'IhrLieblingsPasswort';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON blog.* TO deployer@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> exit;
Bye
deployer@debian:~$

Memcache installieren

Wer mit einem Cache-Server arbeitet (was sehr zu empfehlen ist), der muss natürlich noch eine entsprechende Software installieren. Bei memcached (http://memcached.org/) wären das die folgende Eingabe:
root@debian:~# apt-get -y install memcached
[...]
root@debian:~#