Avant de se lancer, rien de tel que revoir le partitionnement, car après, c'est un peu plus dur.
$ passwd
Ouvrir une nouvelle fenêtre SSH et tester le nouveau mot de passe.
$ dpkg-reconfigures locales
Par défaut debconf est en mode élevé pour le niveau de configuration des paquets installés. Sur un serveur important, il est nécessaire de passer en mode intermédiare.
$ dpkg-reconfigure debconf
$ aptitude update && aptitude safe-upgrade
$ aptitude install build-essential
Il faut installer quelques dépendances :
$ aptitude install python gettext zlib1g zlib1g-dev libcurl3-gnutls libdigest-sha1-perl liberror-perl libexpat1
Puis on récupère et installe les sources de Git
$ mkdir -p /usr/local/src/
$ cd !$
$ wget http://kernel.org/pub/software/scm/git/git-1.7.0.2.tar.gz
$ tar xzf git-1.7.0.2.tar.gz
$ cd git-1.7.0.2
$ ./configure
$ make
$ make install
On crée ensuite un repo pour /etc
$ cd /etc
$ git init && git add . && git commit -m "Ajout de tous les fichiers présents"
$ cd /usr/local/bin
$ wget http://www.gcolpart.com/hacks/chroot-bind.sh
$ chmod 744 chroot-bind.sh
$ chroot-bind.sh
Attention : après chaque mise à jour de Bind ou d'une dépendance de Bind, il faut penser à relancer ce script.
$ aptitude install mysql-server mysql-client libmysqlclient15-dev
On met les nouvelles bases en UTF8 par défaut dans le fichier /etc/mysql/my.cnf
[mysqld]
(...)
default-character-set=utf8
(...)
On installe aussi mysqltuner.pl pour aider à optimiser la config
$ cd /usr/local/bin
$ wget http://mysqltuner.pl
$ chmod 755 mysqltuner.pl
$ aptitude install apache2 apache2-mpm-prefork apache2-prefork-dev
$ aptitude install phpmyadmin
On active quelques modules :
$ a2enmod ssl rewrite include
On active le site default-ssl :
$ a2ensite default-ssl
On force le renvoi vers https dans sites-available/default :
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(._)$ https://%{SERVER_NAME}$1 [L,R]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2
On relance Apache :
$ /etc/init.d/apache2 restart
Si on a besoin de plus que ce que l'install de phpMyAdmin installe par dépendance, on peut faire
$ aptitude install php-pear php5 php5-common php5-curl php5-dev php5-gd php5-idn php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Éventuellement on modifie la taille maximale d’upload via PHP (16Mo par exemple), dans le fichier /etc/php5/apache2/php.ini
$ aptitude install ruby-full rake
$ cd /usr/local/src/
$ wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
$ tar xzf rubygems-1.3.6.tgz
$ cd rubygems-1.3.6
$ ruby setup.rb
$ cd /usr/bin
$ ln -s gem1.8 gem
On installe Gemcutter pour faciliter l'installation de gems supplémentaires
$ gem install gemcutter
Pour bz2 :
$ aptitude install libbz2-dev
Pour curb
$ aptitude install curl libcurl3-dev
Pour libxml-ruby, roxml et nokogiri
$ aptitude install libxml2-dev libexpat1-dev libxslt-dev
Pour Rmagick
$ aptitude install imagemagick libmagick9 libmagick9-dev
Maintenant on peut installer les gems
$ gem install --no-ri --no-rdoc rails passenger activewarehouse-etl adapter_extensions amatch authlogic bz2 calendar_date_select compass compass-960-plugin chronic colored compass compass-960-plugin curb daemons fastercsv fastthread g gemcutter geokit ghazel-daemons git_remote_branch haml handsoap hashie hoe hpricot json_pure libxml-ruby mime-types mysql net-scp net-ssh nokogiri paperclip rest-client rmagick roxml rspec rspec-rails ruby-growl rubyzip sprockets syntax factory_girl vestal_versions whenever will_paginate
$ passenger-install-apache2-module
On colle bien la config pour Passenger dans /etc/apache/conf.d/passenger.conf
On peut y ajouter des éléments de config mais il faut les vérifier et ajuster selon les besoins :
PassengerMaxPoolSize 35
PassengerMaxInstancesPerApp 20
PassengerUseGlobalQueue on
PassengerDefaultUser deploy
# RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 60
$ aptitude install iftop htop apachetop dnstop
$ aptitude install tree
$ aptitude install ntp
$ aptitude install apticron
$ aptitude install denyhosts
$ aptitude install webalizer
$ aptitude install munin munin-node
$ cd /etc/munin/plugins
$ ln -s /usr/share/munin/plugins/apache_accesses ./
$ ln -s /usr/share/munin/plugins/apache_processes ./
$ ln -s /usr/share/munin/plugins/apache_volume ./
$ ln -s /usr/share/munin/plugins/apt_all ./
$ ln -s /usr/share/munin/plugins/uptime ./
$ ln -s /usr/share/munin/plugins/ntp_offset ./
$ invoke-rc.d munin-node restart
$ aptitude install monit
Monit n'est pas activé par défaut, il faut mettre "startup=1" dans le fichier /etc/default/monit
$ aptitude install backupninja
Il faiut cependant créer ses stratégies de backup, rien n'est fourni de fonctionnel par défaut, juste des exemples.
$ adduser new_user
Le programe demande d'abord le mot de passe, puis le nom complet, …
$ aptitude install sudo
Ensuite ajouter le user précédent
$ visudo
Ajouter la ligne
new_user ALL=(ALL) ALL
$ adduser deploy --home /var/apps/