Retour : Page Principale > sommaire serveurs & domaines > Agathis
apt-get update
apt-get upgrade
Redémarrer la machine si nécessaire (en cas d'upgrade d'un paquet linux-image...).
Vous pouvez aussi lancer la commande suivante pour résoudre le problème :
apt-get install vim
update-alternatives --config vi (doit contenir : vim.basic)
update-alternatives --display vi (en cas de problème mais normalement fait pas l'install de vim)
Pour admin créer un fichier ~/.bashrc avec les droits 640 contenant :
Pour les autres utilisateurs créer un fichier ~/.bashrc comme pour admin avec les droits 640 contenant la même chose que pour admin.:
Vous remplacerez la ligne :
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
par
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Pour root, admin et les autres utilisateurs :
vi /etc/apt/source.list :
deb ftp://mir1.ovh.net/debian/ etch main contrib non-free
deb-src ftp://mir1.ovh.net/debian/ etch main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free
apt-get install mc
mkdir /home/admin
chown admin:users /home/admin/
su - admin
mkdir src
mkdir src/targz
mkdir script
mkdir save
mkdir www
Fichier backup_dist :
Utilisation : /usr/local/sbin/backup_dist /home/utilisateur
Fichier backup_mysql :
Utilisation : /usr/local/sbin/backup_mysql utilisateur nom_bdd_01 nom_bdd_02
Fichier ndistbackup :
Fichier mysqlbackup :
Pour l'installation, utiliser le script : percona-toolkit_2.2.5.sh
Pour l'utilisation voir le mémo sur l'optimisation de Mysql.
Activer les extensions dans php.ini :
Les extensions sont stockées dans les dossiers suivant :
Et installer le moniteur pour opcache dans /home/apitest/www :
- wget https://raw.github.com/amnuts/opcache-gui/master/index.php -O op.php
On peut ensuite le consulter Ă la page :
- http://api-test.tela-botanica.org/op.php
Installer le démon php-fpm :
Configuer php-fpm :
Exemple pour apitest , fichier /etc/php/5.5/fpm.d/api-test.tela-botanica.org.pool.conf
Installer la bibliothèque imagemagick et l'extension PHP imagick :
Utiliser le script /home/admin/script/imagemagick-6.7.4-7.sh pour avoir la lib imagemagick dans le système.
Le script s'occupe de compiler l'extension pour PHP 5.5 et 5.4.
Pour mémoire les extensions compilées se trouvent dans : /lib64/extensions/no-debug-non-zts-20121212/ (où 20121212 peut changer suivant la date de compilation de php)
Voir script dans /home/admin/script :
Démarrer le serveur : /etc/init.d/nginx start
Fichier /etc/nginx/nginx.conf :
Config pour agathis.tela-botanica.org dans /etc/nginx/site-available/agathis.tela-botanica.org.conf :
Config pour api.tela-botanica.org dans /etc/nginx/site-available/api.tela-botanica.org.conf :
(s'en inspirer pour api-test.tela-botanica.org , en ajustant le server_name, le root, les logs etc.)
Remplacer le contenu de pool.conf.template par :
Pour créer ou supprimer un domaine virtuel.
Créer le domaine virtuel :
Installer les paquets munin :
Configuration de Munin (le grapheur) :
Fichier /etc/munin/plugin-conf.d/munin-node :
Fichier /etc/munin/munin.conf :
Ajout Ă faire au fichier /etc/nginx/sites-available/agathis.tela-botanica.net.conf :
Fichier de configuration de vsftpd :
Notes :
/usr/local/php/5.{x}/bin/pear list
Procédure de configuration d'Agathis
▼ Table des matières
Configuration du système
Serveur de nom
Pas besoin de serveur de nom (c'est mon choix !). Désinstallation si nécessaire.Mise à jour générale
Lancement de la commande de mise à jour générale :apt-get update
apt-get upgrade
Redémarrer la machine si nécessaire (en cas d'upgrade d'un paquet linux-image...).
Mise Ă jour de l'heure
Installer ntpdate si nécessaire : ntpdate fr.pool.ntp.orgVérification différence vi et vim
Si en éditant un fichier avec la commande vi, l'appui sur la touche "INSER" ne bascule pas en mode insertion, il faut alors utiliser vim.Vous pouvez aussi lancer la commande suivante pour résoudre le problème :
apt-get install vim
update-alternatives --config vi (doit contenir : vim.basic)
update-alternatives --display vi (en cas de problème mais normalement fait pas l'install de vim)
Configuration de bash
Pour root créer un fichier ~/.bashrc avec les droits 640 contenant :
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022
#-----------------------------------------------------------------------------------------------------------#
# GESTION du PROMPT
NORMAL="\\033[0;39m"
VERT="\\033[1;32m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#-----------------------------------------------------------------------------------------------------------#
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
# Some more alias to avoid making mistakes:
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
Pour admin créer un fichier ~/.bashrc avec les droits 640 contenant :
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
HISTCONTROL=$HISTCONTROL${HISTCONTROL+:}ignoredups
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
NORMAL="\\033[0;39m"
VERT="\\033[1;32m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
#alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
# some more ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -Al'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
Pour les autres utilisateurs créer un fichier ~/.bashrc comme pour admin avec les droits 640 contenant la même chose que pour admin.:
Vous remplacerez la ligne :
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
par
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Pour root, admin et les autres utilisateurs :
- supprimer l'éventuel fichier : ~/.bash_profile
- créer un fichier ~/.profile avec les droits 640 contenant :
# ~/.profile: executed by Bourne-compatible login shells.
export LC_ALL="fr_FR.UTF-8"
export LANG="fr_FR.UTF-8"
export LANGUAGE="fr_FR.UTF-8"
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
Configuration de vim
Créer un fichier .vimrc à mettre dans /root et /home/admin contenant :".vimrc " Nombre d'espaces qu'une tabulation prend. set tabstop=4 " Empêche vim de créer une sauvegarde avant d'écrire sur un fichier. set nobk " Active le surlignage syntaxique de vim. syntax on " Oblige vim � ins�rer les tabulations comme des caract�res au lieu d'ins�rer un ensemble d'espaces. set noexpandtab " Affiche les numéros de ligne set nu " Utiliser des couleurs correctes sur un fond noir. set background=dark
Ajout de sources logicielles
Vérifions les sources logicielles et ajoutons contrib non-free.vi /etc/apt/source.list :
deb ftp://mir1.ovh.net/debian/ etch main contrib non-free
deb-src ftp://mir1.ovh.net/debian/ etch main contrib non-free
deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free
Installation de MC
Je ne peux pas me passer de midnight commander :apt-get install mc
Réorganisation du répertoire /var/log
Création d'un lien : /var/log --> /home/log- Prépartion du dossier /home :
- chmod -R -s /home
- chown root:root /home
- Arrêt des demons qui écrivent dans /var/log
- /etc/init.d/rsyslog stop
- /etc/init.d/cron stop
- Création du dossier log : mkdir /home/log
- Déplacement du contenu du dossier log : (cd /var/log; tar -cvf - .) | (cd /home/log;tar -xvf -)
- Création du lien :
- rm -Rf /var/log
- ln -s /home/log /var/log
- Redémarrage des serveurs :
- /etc/init.d/cron start
- /etc/init.d/rsyslog start
Création espace administration / gestion des scripts / mise à jour du système
useradd -g users adminmkdir /home/admin
chown admin:users /home/admin/
su - admin
mkdir src
mkdir src/targz
mkdir script
mkdir save
mkdir www
Installation de sudo et ajout du compte admin
- apt-get install sudo
- vi /etc/sudoers
- Laisser en place : root ALL=(ALL) ALL
- Modifier la ligne : admin ALL=(ALL) ALL
- Le fichier est en lecture seule. Pour sauver avec vi utiliser : w!
Configuration de l'envoie de mail via Mail
- Lancer la commande dpkg-reconfigure exim4-config voici les réponses à fournir:
- Type de configuration : Distribution directe par SMTP (site internet)
- Nom de courriel du système : agathis.tela-botanica.net
- Liste d'adresses IP où Exim sera en attente de connexions SMTP entrantes : 127.0.0.1 ; ::1
- Autres destinations dont le courriel doit être accepté : agathis.tela-botanica.net
- Domaines à relayer : _
- Machines à relayer : _
- Faut-il minimiser les requĂŞtes DNS (connexions Ă la demande)Â ? : Oui
- Méthode de distribution du courrier local : Format « mbox » dans /var/mail
- Faut-il séparer la configuration dans plusieurs fichiers ? : Non
- Tester l'envoie de mail : echo "Test 1 - Agathis"|mail -s "Test mail Agathis" votre_mail@tela-botanica.org
Services au démarrage
- Installer l'utilitaire rcconf qui permet de définir les services à lancer lors du démarrage de la machine : apt-get install rcconf
- Lancer l'utilitaire : rcconf => utiliser les flèches pour vous déplacer et la barre espace pour cocher/décocher les services
- État lors de la fin de la config :
[*] acpid [*] atd [*] bootlogs [*] console-setup [*] cron [*] exim4 [*] kbd [*] keyboard-setup [*] module-init-tools [*] munin-node [*] mysql [*] nfs-common [*] nfs-kernel-server [*] nginx [*] php-54-fpm [*] portmap [*] procps [*] rsync [*] rsyslog [*] shorewall [*] ssh [*] sudo [*] udev [*] vsftpd [*] x11-common [ ] php-55-fpm [*] sphinx
Mise en place des sauvegardes
Se connecter sur le serveur de sauvegarde :- mkdir /home/agathis
- chmod 777 /home/agathis
- Éditer le fichier de snapshot : vi /etc/snapshot/include.txt et ajouter la ligne /home/agathis
- Installer rsync : apt-get install rsync
- Créer un dossier .ssh pour backup :
- mkdir /var/backup/.ssh
- chown backup:backup /var/backup/.ssh
- chmod 700 /var/backup/.ssh
- Se connecter en tant qu'utilisateur backup : su - backup
- Générer la clé ssh : ssh-keygen -t rsa
- Ajouter le contenu du fichier /var/backup/.ssh/id_rsa.pub au fichier /var/backup/.ssh/authorized_keys présent sur le serveur de sauvegarde
- Créer les scripts de backup :
- cd /usr/local/sbin/
- Créer un script backup_dist avec le contenu ci-dessous : vi /usr/local/sbin/backup_dist
- Créer un script backup_mysql avec le contenu ci-dessous : vi /usr/local/sbin/backup_mysql
- chmod 744 backup_*
- Créer les scripts cron de backup :
- cd /etc/cron.daily
- Créer un script ndistbackup avec le contenu ci-dessous : vi /etc/cron.daily/ndistbackup
- Créer un script mysqlbackup avec le contenu ci-dessous : vi /etc/cron.daily/mysqlbackup
- chmod 755 *backup
Fichier backup_dist :
Utilisation : /usr/local/sbin/backup_dist /home/utilisateur
#!/bin/bash source=$1 destination=backup@adansonia:/home/agathis/ rsync -auR --stats --exclude *tmp* -e 'ssh -i /var/backups/.ssh/id_rsa' --delete $source $destination >> $2
Fichier backup_mysql :
Utilisation : /usr/local/sbin/backup_mysql utilisateur nom_bdd_01 nom_bdd_02
#/bin/bash
# Sauvegarde base de donnee dans /home/utilisateur/bases sur 7 jours ...
# Mai 2004 David Delon Inspiration Faq ovh
# Parametres :
# $1 utilisateur
# $2 base (ou liste de bases séparées par des espaces)
# Le mot de passe de l'administrateur de base de donnee est present dans ce
# script en clair, c'est pas bien : faut chmoder en 700 ce truc.
user=$1
/bin/mkdir -p /home/$user/bases/tmp 2>/dev/null
cd /home/$user/bases;
shift
for base in $*
do
# On verifie que la base existe
/usr/bin/touch tmp/$base.sql
if [ -d /home/mysql/$base ] ; then
/usr/local/mysql/bin/mysqldump --add-drop-table -u root $base -f > tmp/$base.sql;
fi
done
/bin/tar zcf bases-$(/bin/date -I).tar.gz tmp/*.sql --remove-files
/usr/bin/find /home/$user/bases/bases*.gz -mtime +7 -exec /bin/rm -f {} \;
chown $user:$user -R /home/$user/bases
Fichier ndistbackup :
#!/bin/bash date=`date +"%F"` log="/tmp/sauve_distant_"$date".log" debut=`date +"%c"` echo "------------------------------------------------------------------------" >> $log echo "Place disponible sur les disques de Agathis :" df -h >> $log echo "------------------------------------------------------------------------" >> $log echo "Debut sauvegarde distante Agathis : $debut" >> $log echo "------------------------------------------------------------------------" >> $log echo "Sauvegarde /etc :" >> $log /usr/local/sbin/backup_dist /etc $log echo "------------------------------------------------------------------------" >> $log echo "Sauvegarde /home/admin/www :" >> $log /usr/local/sbin/backup_dist /home/admin/www $log echo "------------------------------------------------------------------------" >> $log echo "Sauvegarde /home/admin/script :" >> $log /usr/local/sbin/backup_dist /home/admin/script $log echo "------------------------------------------------------------------------" >> $log echo "Sauvegarde /home/apitela :" >> $log /usr/local/sbin/backup_dist /home/apitela $log echo "------------------------------------------------------------------------" >> $log fin=`date +"%c"` echo "Fin sauvegarde distante Agathis $fin" >> $log echo "------------------------------------------------------------------------" >> $log cat $log|mail -s "Sauvegarde Agathis rapport du $fin" david.delon@clapas.net cat $log|mail -s "Sauvegarde Agathis rapport du $fin" jpm@tela-botanica.org rm -f $log
Fichier mysqlbackup :
#!/bin/bash /usr/local/sbin/backup_mysql apitela tb_eflore /usr/local/sbin/backup_mysql apitest tb_eflore_test tb_cel_test tb_del_test tela_prod_v4
Installations
Installation des outils nécessaires à la compilation
apt-get install build-essential autoconf automake libtool cmake make g++Installation de Mysql pour gérer plusieurs instances
Voir le script dans /home/admin/script :- Passer en admin : su - admin
- Se rendre dans le dossier des scripts : cd script/
- Lancer le script : sh mysql_5.5.sh
- Suivre les indications pour installer plusieurs instances de Mysql sur le mĂŞme serveur
- Configurer le fichier /etc/mysql/5.5/my.cnf si nécessaire
- Lors de l'installation, suivre les recommandations de sécurité (création du passwd root) ici : http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html
- Transférer des bases de données si nécessaire avec le script de transfert de base de données
Installation de pt-query-digest (Percona Toolkit)
Script Perl permettant de faire l'analyse des slow-query.Pour l'installation, utiliser le script : percona-toolkit_2.2.5.sh
Installation de Mysql Tunner
apt-get install mysqltunerPour l'utilisation voir le mémo sur l'optimisation de Mysql.
Installation de Php et php-fpm
Préparer le dossier d'installation de Php :- cd /usr/local/
- mkdir php : dossier contenant les différentes version de php (5.2, 5.4, 5.5...)
- mkdir php/backup : dossier contenant le backup des différents binaires php
- Passer en admin : su - admin
- Se rendre dans le dossier des scripts : cd script/
- Lancer le script : sh php_5.4.17.sh
- mkdir /etc/php
- mv /usr/local/php/5.4/etc /etc/php/5.4
- ln -s /etc/php/5.4 /usr/local/php/5.4/etc
- cp /home/admin/src/php-5.4.17/php.ini-production /etc/php/5.4/php.ini
- Modifier les paramètres du fichier php.ini : vi /etc/php/5.4/php.ini
- upload_max_filesize = 50M
- post_max_size = 50M
- short_open_tag = On
- memory_limit = 1024M ; A cause du widget carto... mettre 512 si possible
- max_execution_time = 60
- max_input_time = 60
Activer les extensions dans php.ini :
; Ajout de l'extension imagick (jpm & mathias) [22-11-2013] ; Elles sont cherchées par défaut dans : /lib64/extensions/no-debug-non-zts-xxx/ extension=imagick.so ; Activation de opcache (mathias) [29-08-2014] zend_extension=opcache.so ;opcache.memory_consumption=64 ;opcache.max_accelerated_files=2000
Les extensions sont stockées dans les dossiers suivant :
- php 5.4 : /lib64/extensions/no-debug-non-zts-20100525/
- php 5.5 : /lib64/extensions/no-debug-non-zts-20121212/
- php 5.6 : /lib64/extensions/no-debug-non-zts-20131226/
Et installer le moniteur pour opcache dans /home/apitest/www :
- wget https://raw.github.com/amnuts/opcache-gui/master/index.php -O op.php
On peut ensuite le consulter Ă la page :
- http://api-test.tela-botanica.org/op.php
Installer le démon php-fpm :
- cp /home/admin/src/php-5.4.17/sapi/fpm/init.d.php-fpm /etc/init.d/php-54-fpm
- chmod +x /etc/init.d/php-54-fpm
- Afin de permettre à admin d’accéder aux différentes versions de php-fpm, pour que l'on puisse accéder au status et ping, il est nécessaire de données les droits à admin sur les fichiers .sock. Pour ce faire, ajouter la ligne suivante dans /etc/init.d/php-54-fpm dans la section "start" après echo "done" :
# [2014-08-29] (jpm) : Changement des droits du .sock pour accéder au status et ping depuis admin chown root:admin /var/run/php-54-fpm.sock
Configuer php-fpm :
- cp /etc/php/5.4/php-fpm.conf.default /etc/php/5.4/php-fpm.conf
- Modifier le fichier /etc/php/5.4/php-fpm.conf :
- Ligne 15 -> décommenter : include=etc/fpm.d/*.conf
- Ligne 32 -> indiquer le chemin vers le fichier de log : error_log = /home/log/php-54-fpm.log
- Ligne 159 -> indiquer le socket unix : listen = /var/run/php-54-fpm.sock;
- Créer le dossier contenant les fichiers ini de chaque site : mkdir /etc/php/5.4/fpm.d/
- Démarrer php-fpm : /etc/init.d/php-54-fpm start
- Vérifier le status de php-fpm : netstat -tlnp |grep php-fpm
Exemple pour apitest , fichier /etc/php/5.5/fpm.d/api-test.tela-botanica.org.pool.conf
; Doc sur les paramètres : http://www.php.net/manual/fr/install.fpm.configuration.php [apitest] listen = /var/run/apitest_fpm.sock listen.owner = apitest listen.group = apitest listen.mode = 0660 user = apitest group = apitest pm = dynamic pm.max_children = 16 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6 pm.max_requests = 1000 request_terminate_timeout = 3600s chdir = / php_admin_value[session.save_path] = "/home/apitest/_sessions" php_admin_value[open_basedir] = "/lib/php:/home/apitest:/usr/share/pear:/usr/share/php:/tmp:/usr/local/lib/php:/home/apitest/www/images" catch_workers_output = yes
Installer la bibliothèque imagemagick et l'extension PHP imagick :
Utiliser le script /home/admin/script/imagemagick-6.7.4-7.sh pour avoir la lib imagemagick dans le système.
Le script s'occupe de compiler l'extension pour PHP 5.5 et 5.4.
Pour mémoire les extensions compilées se trouvent dans : /lib64/extensions/no-debug-non-zts-20121212/ (où 20121212 peut changer suivant la date de compilation de php)
Installation de Nginx
Voir l'aide sur Nginx.Voir script dans /home/admin/script :
- Passer en admin : su - admin
- Se rendre dans le dossier des scripts : cd script/
- Lancer le script : sh nginx_1.4.1.sh
- mkdir /var/cache/nginx
- chown www-data:www-data /var/cache/nginx
- cd /etc/nginx
- mkdir sites-available : contient les fichiers de config pour chaque domaine virtuel
- mkdir sites-enabled : permet Ă l'aide de lien d'activer ou pas un site sans supprimer son fichier de config
- mkdir /home/admin/www/agathis
- chown admin:admin /home/admin/www/agathis
- Ajouter le fichier "agathis.tela-botanica.net.conf" décrit ci-dessous au dossier /etc/nginx/sites-available/
- Créer un lien dans le dossiers /etc/nginx/sites-enabled/ : ln -s /etc/nginx/sites-available/agathis.tela-botanica.net.conf /etc/nginx/sites-enabled/agathis.tela-botanica.net.conf
Démarrer le serveur : /etc/init.d/nginx start
Fichier /etc/nginx/nginx.conf :
user www-data www-data; # Default: nobody
worker_processes 8; # Default : 1
# Nombre de fichiers ouverts par processeur
worker_rlimit_nofile 100000;
pid /var/run/nginx.pid
# [ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx-error.log info;
events {
worker_connections 4096; # Default : 1024
# use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] ;
# use kqueue;
use epoll;
}
http {
include mime.types;
# include /etc/nginx/fastcgi.conf;
index index.html index.htm index.php;
default_type application/octet-stream;
log_format main '"$remote_addr" $host [$time_local] '
'"$request" $status $body_bytes_sent '
'$request_length $bytes_sent "$http_referer" '
'"$http_user_agent" $request_time "$gzip_ratio"';
# La ligne ci-dessous semble inutile puisqu'il faut la redéfinir dans chaque vhost : server {}
access_log /var/log/nginx-access.log main;
sendfile on;
tcp_nopush on;
# 1er param : timeout pour les connections keep-alive ; 2ème param : valeur du header "Keep-Alive: timeout=" envoyé en réponse
keepalive_timeout 30 30;
# délai d'attente de la réponse de php-fpm : à accorder avec request_terminate_timeout dans la conf de php-fpm
fastcgi_read_timeout 3600s;
gzip on;
gzip_comp_level 9; # 1 <= level <= 9
gzip_min_length 50; # les fichiers plus petits que 50 octets ne sont pas compressés
# types de fichiers Ă compresser
gzip_types
text/css
text/plain
text/javascript
application/javascript
application/json
application/x-javascript
application/xml
application/xml+rss
application/xhtml+xml
application/x-font-ttf
application/x-font-opentype
application/vnd.ms-fontobject
image/svg+xml
image/x-icon
application/rss+xml
application/atom_xml;
# Load all vhosts !
include /etc/nginx/sites-enabled/*.conf
}
Config pour agathis.tela-botanica.org dans /etc/nginx/site-available/agathis.tela-botanica.org.conf :
server {
server_name agathis.tela-botanica.net www.agathis.tela-botanica.net;
root "/home/admin/www/agathis";
index index.html;
client_max_body_size 10m;
access_log /home/admin/_logs/access.log;
access_log /var/log/nginx-access.log main;
error_log /home/admin/_logs/error.log;
#################################################################################################
# BLOCAGE - Bloquer l'accès à certains robots et extracteurs de contenu
# Bloquer l'accès à certains robots
if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) {
return 401;
}
# Bloquer l'accès aux extracteurs de contenu
if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) {
return 401;
}
#################################################################################################
# PROTECTION - Éviter l'affichage de fichiers sensibles
# Éviter l'affichage du contenu des dossiers des gestionnaires de versions
location ~ "\.(svn|git|hg|bzr|cvs)" {
return 404;
}
# Eviter l'affichage des fichiers de config en .ini
location ~ "\.ini$" {
return 404;
}
# Eviter l'affichage des fichiers senssibles
location ~ "\.(htaccess|htpasswd)$" {
return 404;
}
###########################################################################################################
# TOMCAT
# Redirection de port
location /tomcat {
rewrite ^/tomcat(.*)$ $1 break;
#rewrite /tomcat / break;
proxy_pass http://localhost:8080;
proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
}
###########################################################################################################
# STATUTS
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 193.54.123.216;
allow 162.38.234.0/24;
deny all;
}
# Statuts PHP-FPM 5.6
# ATTENTION : pour voir ces infos, le fichier php-56-fpm.sock doit avoir un droit de lecture pour l'utilisateur "admin"
location ~ ^/php-56-fpm-(status|ping)$ {
access_log off;
include fastcgi_params;
fastcgi_pass unix:/var/run/php-56-fpm.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
allow 193.54.123.216;
allow 162.38.234.0/24;
deny all;
# Statuts PHP-FPM 5.5
# ATTENTION : pour voir ces infos, le fichier php-55-fpm.sock doit avoir un droit de lecture pour l'utilisateur "admin"
location ~ ^/php-55-fpm-(status|ping)$ {
access_log off;
include fastcgi_params;
fastcgi_pass unix:/var/run/php-55-fpm.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
allow 193.54.123.216;
allow 162.38.234.0/24;
deny all;
}
# Statuts PHP-FPM 5.4
# ATTENTION : pour voir ces infos, le fichier php-54-fpm.sock doit avoir un droit de lecture pour l'utilisateur "admin"
location ~ ^/php-54-fpm-(status|ping)$ {
access_log off;
include fastcgi_params;
fastcgi_pass unix:/var/run/php-54-fpm.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
allow 193.54.123.216;
allow 162.38.234.0/24;
deny all;
}
#################################################################################################
# Réecritures générales
location / {
try_files $uri $uri/ /index.php$uri?$args;
}
location ~ "^(.+\.php)($|/)" {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SERVER_NAME $host;
if ($uri !~ "^/uploads/") {
fastcgi_pass unix:/var/run/admin_fpm.sock;
}
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
access_log off;
}
location ~* \.(html|htm)$ {
expires 30m;
}
}
Config pour api.tela-botanica.org dans /etc/nginx/site-available/api.tela-botanica.org.conf :
(s'en inspirer pour api-test.tela-botanica.org , en ajustant le server_name, le root, les logs etc.)
server {
server_name api.tela-botanica.org www.api.tela-botanica.org;
root "/home/apitela/www";
index index.php;
client_max_body_size 50m;
access_log /home/apitela/_logs/access.log;
access_log /var/log/nginx-access.log main;
error_log /home/apitela/_logs/error.log;
if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) {
return 401;
}
if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) {
return 401;
}
# Éviter l'affichage du contenu des dossiers des gestionnes de versions
location ~ "\.(svn|git|hg|bzr|cvs)" {
return 404;
}
# Eviter l'affichage des fichiers de config en .ini
location ~ "\.ini$" {
return 404;
}
location / {
try_files $uri $uri/ /index.php$uri?$args;
}
# Fichiers pas libres (bouh)
location ~ "/donnees/(baseflor|baseveg|lion1906|nasa-srtm|nvjfl|osm|plantscan|sophy|tl2|wikipedia)" {
return 404;
}
# CORS dynamique multi-domaines (trop de la boulette)
set $cors_origine_acceptee "http://www.tela-botanica.org";
if ($http_origin ~* (www\.tela-botanica\.org|localhost)) {
set $cors_origine_acceptee "$http_origin";
}
# EntĂŞtes pour CORS
add_header Access-Control-Allow-Origin "$cors_origine_acceptee"; # mode dynamique
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Credentials "true";
add_header Access-Control-Expose-Headers "X-DebugJrest-Data";
# redéfinition par défaut de la query_string
set $query_string_api $args;
location ~ "^(.+\.php)($|/)" {
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/var/run/apitest_fpm.sock;
# Réecriture des headers pour l'API d'eFlore
fastcgi_param REQUEST_URI $request_uri_api;
fastcgi_param QUERY_STRING $query_string_api;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
access_log off;
}
location ~* \.(html|htm)$ {
expires 30m;
}
}
Installation du script de création des domaines virtuels
- cd /home/admin/script
- wget http://www.sebdangerfield.me.uk/wp-content/uploads/2012/05/create_php_vhost.tar.gz
- tar xzvf create_php_vhost.tar.gz
- mv create_php_vhost.tar.gz create_php_vhost/
- cd create_php_vhost/
- Créer un fichier de test : vi test.php
- Contenu : <pre><?php var_export($_SERVER)?></pre>
- Modifier le script général : vi create_php_site.sh
- Remplacer le nom de dossier "public_html" par "www" dans le script (lignes 51, 53 et 55)
- Remplacer la ligne 50 par : if [ "$CHANGEROOT" = "y" ]; then
- Après la ligne 98 ajouter :
- # Copy the test.php file
- cp $CURRENT_DIR/test.php /home/$HOME_DIR$PUBLIC_HTML_DIR/
- echo "Test installation with : http://$DOMAIN/test.php"
- Créer un script spécifique à une version de php :
- cp create_php_site.sh create_php54_site.sh
- vi create_php54_site.sh
- PHP_INI_DIR='/usr/local/php/5.4/etc/fpm.d/'
- PHP_FPM_INIT='/etc/init.d/php-54-fpm'
- cp nginx.vhost.conf.template nginx.vhost.conf.template.default
- cp pool.conf.template pool.conf.template.default
- Changer les droits de tous les fichiers : chown admin:users ./*
server {
server_name @@HOSTNAME@@ www.@@HOSTNAME@@;
root "@@PATH@@";
index index.php;
client_max_body_size 10m;
access_log @@LOG_PATH@@/access.log;
access_log /var/log/nginx-access.log main;
error_log @@LOG_PATH@@/error.log;
if ($http_user_agent ~* (Baiduspider|webalta|nikto|wkito|pikto|scan|acunetix|morfeus|webcollage|youdao) ) {
return 401;
}
if ($http_user_agent ~* (HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) ) {
return 401;
}
location / {
try_files $uri $uri/ /index.php$uri?$args;
}
location ~ "^(.+\.php)($|/)" {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SERVER_NAME $host;
if ($uri !~ "^/uploads/") {
fastcgi_pass unix:@@SOCKET@@;
}
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
access_log off;
}
location ~* \.(html|htm)$ {
expires 30m;
}
location ~* /\.(ht|git|svn) {
deny all;
}
}
Remplacer le contenu de pool.conf.template par :
; Doc sur les paramètres : http://www.php.net/manual/fr/install.fpm.configuration.php [@@USER@@] listen = /var/run/@@USER@@_fpm.sock listen.owner = @@USER@@ listen.group = @@USER@@ listen.mode = 0660 user = @@USER@@ group = @@USER@@ pm = dynamic pm.max_children = @@MAX_CHILDS@@ pm.start_servers = @@START_SERVERS@@ pm.min_spare_servers = @@MIN_SERVERS@@ pm.max_spare_servers = @@MAX_SERVERS@@ pm.max_requests = 500 request_terminate_timeout = 30s chdir = / php_admin_value[session.save_path] = "@@HOME_DIR@@/_sessions" php_admin_value[open_basedir] = "@@HOME_DIR@@:/usr/share/pear:/usr/share/php:/tmp:/usr/local/lib/php"
Pour créer ou supprimer un domaine virtuel.
Installation de Phpmyadmin
Voir script dans /home/admin/script :- Passer en admin : su - admin
- Se rendre dans le dossier des scripts : cd script/
- Lancer le script : sh phpmyadmin_3.5.8.1.sh
Créer le domaine virtuel :
- cd /home/admin/script/create_php_vhost
- sh create_php54_site.sh sql.agathis.tela-botanica.net :
- Please specify the username for this site? : admin
- Would you like to change to web root directory (y/n)? : y
- Enter the new web root dir (after the www/) : phpmyadmin
- How many FPM servers would you like by default : 2
- Min number of FPM servers would you like : 1
- Max number of FPM servers would you like : 5
- /usr/local/mysql/bin/mysql -u root -p
- source /home/admin/www/phpmyadmin/examples/create_tables.sql
- exit
- utiliser http://sql.agathis.tela-botanica.net/
- ou utiliser la ligne de commande
Installation de Munin
Voir l'aide sur Munin.Installer les paquets munin :
- apt-get install munin munin-node
- Ajouter un module Perl via le CPAN :
- cpan : valider les options par défaut jusqu'au prompt CPAN
- install LWP::UserAgent
- Si CPAN n'arrive pas à réaliser un make, il se peut qu'il manque les paquets pour la compilation. Sortir du CPAN (exit) puis lancer la commande : apt-get install build-essential autoconf automake libtool gdb
- exit
- Éditer le fichier munin-node.conf : vi /etc/munin/munin-node.conf
- Vérifier la présence de la ligne : allow ^127\.0\.0\.1$
- Ajouter des autorisations d'accès au munin local pour d'autres serveurs : allow ^193\.54\.123\.169$
- Penser Ă modifier les firewalls (shorewall) pour autoriser le port 4949 sur la machine
- Vérification du bon fonctionnement de Munin :
- Se loguer en tant que Munin : sudo -u munin bash ou su - munin -s /bin/bash
- Générer les stats : /usr/share/munin/munin-update --nofork --debug
- De nombreuses lignes apparaissent dans la console, c'est normal
- Si tout c'est bien passé, on obtient une ligne ressemblant à : 2013/07/18 14:22:58 [INFO]: Munin-update finished (5.33 sec)
- Créer un fichier de log spécifique pour cron :
- Éditer le fichier : vi /etc/rsyslog.conf
- Décommenter la ligne : cron.* /var/log/cron.log et modifié la ligne du dessus pour : *.*;cron,auth,authpriv.none -/var/log/syslog
- Redémarrez rsyslog : service rsyslog restart
- Vérifier que le dossier /etc/cron.d/ contient bien les fichiers : munin et munin-node. Vérifier aussi dans /home/log/cron.log que le log de munin fonctionne.
- Éditer le crontab pour y ajouter une entrée munin afin qu'il mette les stats à jour toutes les 5mn :
- crontab -e
- La ligne Ă ajouter : */5 * * * * /usr/bin/munin-cron 1>/dev/null 2>/dev/null
- Éditer le crontab pour y ajouter une entrée munin afin qu'il mette les stats à jour toutes les 5mn :
- Ajouter les plugins Mysql Ă Munin :
- Éditer le fichier munin-node : vi /etc/munin/plugin-conf.d/munin-node et y ajouter le contenu indiqué après la liste ci-dessous
- Ajouter les plugins mysql aux plugins munin actifs: ln -s /usr/share/munin/plugins/mysql_* /etc/munin/plugins/
- Ajouter une entrée [client] dans /root/.my.cnf (voir installation mysql)
- Redémarrer munin : /etc/init.d/munin-node restart
- Ajouter les plugins Sphinx Ă Munin :
- Se rendre dans le dossier des plugins : cd /usr/share/munin/plugins
- Télécharger tous les plugins :
- wget -nd https://raw.github.com/munin-monitoring/contrib/master/plugins/sphinx/sphinx_{connections,documents,queries}
- Donner des droits d'execution : chmod +x sphin*
- Modifier les scripts des plugins Sphinx pour indiquer le bon emplacement des binaires ou dossier :
- binaire php dans l'entete du script (connections, queries) : #!/usr/local/php/5.5/bin/php
- binaire mysql (connections, queries) : /usr/local/mysql/5.6/bin
- binaire indextool (documents) : /home/sphinx/bin
- dossier data de sphinx (documents) : idxpath=/home/sphinx/var/data/
- Ajouter les liens vers les plugins Sphinx :
- ln -s /usr/share/munin/plugins/sphinx_connections /etc/munin/plugins/sphinx_connections
- ln -s /usr/share/munin/plugins/sphinx_documents /etc/munin/plugins/sphinx_documents
- ln -s /usr/share/munin/plugins/sphinx_queries /etc/munin/plugins/sphinx_queries
- Redémarrer munin : /etc/init.d/munin-node restart
- Ajouter les plugins Nginx Ă Munin :
- Se rendre dans le dossier des plugins : cd /usr/share/munin/plugins
- Télécharger tous les plugins : wget -nd http://debianuser.org/nginx/nginx_{memory,status,traffic,request}
- Vérifier si toutes les sondes munins sont configurés : munin-node-configure --suggest
- Redémarrer munin : /etc/init.d/munin-node restart
- Ajouter les plugins Php-Fpm Ă munin :
- Se rendre dans le dossier des plugins : cd /usr/share/munin/plugins
- Télécharger le plugin : wget https://raw.github.com/MorbZ/munin-php-fpm/master/php-fpm.php -O php-fpm
- Donner les bon droits aux fichiers : chmod +x php-fpm
- Éditer le plugin et indiquer le bon emplacement du binaire php cli :
- vi /usr/share/munin/plugins/php-fpm
- Remplacer #!/usr/bin/php par #!/usr/local/php/5.5/bin/php
- Se rendre dans le dossier des plugins : cd /usr/share/munin/plugins
- Ajouter les plugins Php-fpm Ă Munin :
- ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-memory
- ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-cpu
- ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-count
- ln -s /usr/share/munin/plugins/php-fpm /etc/munin/plugins/php-fpm-time
- Vérifier si toutes les sondes munins sont configurés : su - munin -s /bin/bash ; munin-node-configure --suggest
- Redémarrer munin : service munin-node restart
Configuration de Munin (le grapheur) :
- Munin-node génére seulement des fichiers html, png, css.. qui sont placés dans le dossier /var/cache/munin/www
- Créer un lien pour placer Munin sur le compte admin : ln -s /var/cache/munin/www /home/admin/www/munin
- Utiliser le script d'ajout de domaine virtuel pour ajouter : munin.agathis.tela-botanica.net
Fichier /etc/munin/plugin-conf.d/munin-node :
# Ajout de l'instance Mysql 5.6 PROD (jpm) [26-11-2013] [mysql_56_*] user root env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3306 env.mysqladmin /usr/local/mysql/5.6/bin/mysqladmin env.mysqlopts --defaults-extra-file=/root/.my.cnf # Ajout de l'instance Mysql 5.6 TEST (jpm) [26-11-2013] [mysql_56-test_*] user root env.mysqlconnection DBI:mysql:mysql;host=127.0.0.1;port=3308 env.mysqladmin /usr/local/mysql/5.6-test/bin/mysqladmin env.mysqlopts --defaults-extra-file=/root/.my.cnf # Ajout de la sonde Nginx (jpm) [18-07-2013] [nginx*] user root # La ligne suivante ne semble pas utile # env.url http://agathis.tela-botanica.org/nginx_status [nginx_traffic] group adm env.vhosts api.tela-botanica.org agathis.tela-botanica.net munin.agathis.tela-botanica.net sql.agathis.tela-botanica.net env.logdir /home/log env.flogfile nginx-access.log env.bparam 11 env.aggregate false
Fichier /etc/munin/munin.conf :
# a simple host tree
[Agathis]
address 127.0.0.1
use_node_name yes
[Sequoia]
address 193.54.123.169
use_node_name yes
Affichage du status de php-fpm
Activer l'affichage du status dans php-fpm :- Réaliser les opérations suivants pour chaque version de php installées (5.4 et 5.5) : vi /etc/php/5.5/php-fpm.conf
- Décommenter les lignes contenant pm.status_path et ping.path.
- Remplacer le contenu de la ligne pm.status_path par : pm.status_path = /php-55-fpm-status
- Remplacer le contenu de la ligne ping.path par : ping.path = /php-55-fpm-ping
- Pour fonctionner, le fichiers .sock doivent avoir les droits pour admin. Modifier le service de lancement de php-fpm : vi /etc/init.d/php-55-fpm et ajouter après la ligne 70 :
# [2014-08-29] (jpm) : Changement des droits du .sock pour accéder au status et ping depuis admin chown root:admin /var/run/php-55-fpm.sock
- Éditer le fichier de configuration du site d'administration par défaut : vi /etc/nginx/sites-available/agathis.tela-botanica.net.conf
- Ajouter le contenu indiqué ci-dessous
Ajout Ă faire au fichier /etc/nginx/sites-available/agathis.tela-botanica.net.conf :
location ~ ^/php-55-fpm-(status|ping)$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-55-fpm.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
allow 193.54.123.216;
allow 162.38.234.0/24;
deny all;
}
location ~ ^/php-54-fpm-(status|ping)$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-54-fpm.sock;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
allow 193.54.123.216;
allow 162.38.234.0/24;
deny all;
}
Installation de Vsftpd
- Installer le serveur FTP : apt-get install vsftpd
- Ajouter un bash de type /bin/false pour la sécurité : vi /etc/shells et ajout d'une ligne /bin/false
- Éditer le fichier de configuration : vi /etc/vsftpd.conf
- Lancer le serveur FTP : /etc/init.d/vsftpd start
- Pour ajouter un utilisateur hors /home voir l'aide de Vsftpd.
Fichier de configuration de vsftpd :
# Example config file /etc/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # # # Run standalone? vsftpd can run either from an inetd or as a standalone # daemon started from an initscript. listen=YES # # Run standalone with IPv6? # Like the listen parameter, except vsftpd will listen on an IPv6 socket # instead of an IPv4 one. This parameter and the listen parameter are mutually # exclusive. #listen_ipv6=YES # # Allow anonymous FTP? (Beware - allowed by default if you comment this out). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. #anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=YES # # If enabled, vsftpd will display directory listings with the time # in your local time zone. The default is to display GMT. The # times returned by the MDTM FTP command are also affected by this # option. use_localtime=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned by # a different user. Note! Using "root" for uploaded files is not # recommended! #chown_uploads=YES #chown_username=whoever # # You may override where the log file goes if you like. The default is shown # below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. #xferlog_std_format=YES # # You may change the default value for timing out an idle session. idle_session_timeout=2000 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. nopriv_user=ftp # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: #ftpd_banner=Welcome to blah FTP service. # # You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may restrict local users to their home directories. See the FAQ for # the possible risks in this before using chroot_local_user or # chroot_list_enable below. #chroot_local_user=YES # # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). chroot_local_user=YES #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. ls_recurse_enable=YES # # Debian customization # # Some of vsftpd's settings don't fit the Debian filesystem layout by # default. These settings are more Debian-friendly. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd/empty # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/private/vsftpd.pem
Installation de Shorewall
Shorewall est un outil qui permet de configurer Iptables (le pare-feu) Ă notre place.- Installation du Shorewall : apt-get install shorewall
- Récupérer seulement les fichiers de configs par défaut nécessaire de /usr/share/doc/shorewall/default-config dans /etc/shorewall :
- cp -r /usr/share/doc/shorewall/default-config/interfaces /etc/shorewall/interfaces : définit la carte réseau sur laquelle Shorewall doit s'appliquer
- cp -r /usr/share/doc/shorewall/default-config/rules /etc/shorewall/rules : indique ce qui est accepté
- cp -r /usr/share/doc/shorewall/default-config/policy /etc/shorewall/policy : indique ce qui est refusé si ce n'est pas accepté
- cp -r /usr/share/doc/shorewall/default-config/zones /etc/shorewall/zones : permet de définir des allias (pour utiliser à la place des numéros de port)
- Adapter le contenu interfaces : vi /etc/shorewall/interfaces
net eth0 detect
- Adapter le contenu rules : vi /etc/shorewall/rules
#SECTION NEW ACCEPT net $FW tcp ssh,www,ftp,4949 ACCEPT net $FW udp ssh,www ACCEPT net $FW icmp 8 # nfs ACCEPT net:193.54.123.169 $FW udp 111 ACCEPT net:193.54.123.169 $FW tcp 111 ACCEPT net:193.54.123.169 $FW tcp 2049 ACCEPT net:193.54.123.169 $FW udp 2049 ACCEPT net:193.54.123.169 $FW tcp 32764:32769 ACCEPT net:193.54.123.169 $FW udp 32764:32769 # sphynx + mysql ACCEPT net:193.54.123.169 $FW tcp 9312,9306,3306 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
- Adapter le contenu policy : vi /etc/shorewall/policy
$FW net ACCEPT 109 net all DROP info 110 all all REJECT info
- Adapter le contenu zones : vi /etc/shorewall/zones
fw firewall net ipv4
- Afin de s'assurer que Shorewall a été configuré correctement par l'administrateur, Shorewall oblige à modifier une variable avant de le démarrer : vi /etc/default/shorewall
startup=1
- Avant de lancer Shorewall, vérifier sa configuration : shorewall check
- Pour voir les correspondance entre nom de service et port : vi /etc/services
- Shorewall sera lancé ensuite systématiquement depuis rcS.d pour l'instant on le lance à la main : /etc/init.d/shorewall start
Notes :
- Si NFS est déjà démarré quand Shorewall est installé et lancé, il ne bloquera pas NFS. Si le serveur NFS est redémarré, Shorewall le bloquera. Il est donc nécessaire d'ajouter les règles NFS à Shorewall et de configurer NFS pour le forcer à utiliser toujours les mêmes ports.
Installation de NFS
- Doc : https://wiki.debian.org/SecuringNFS
- Installer NFS Ă l'aide des paquets Debian :
- sur le serveur (ici Agathis) : apt-get install nfs-common nfs-kernel-server
- sur le client (ici Sequoia, seul nfs-common est nécessaire) : apt-get install nfs-common
- Pour démarrer / ou arrêter :
- le serveur NFS : /etc/init.d/nfs-kernel-server start ou /etc/init.d/nfs-kernel-server stop
- le client NFS : /etc/init.d/nfs-common start ou /etc/init.d/nfs-common stop
- Il est possible de voir des infos envoyées par Shorewall / NFS avec : dmesg ou tailf /var/log/syslog
- utiliser sur Agathis : tailf /var/log/syslog
- Configurer les ports de NFS pour qu'à chaque démarrage les mêmes ports soient utilisés :
- sur Agahtis, fichier /etc/defaut/nfs-kernel-server, modifier la ligne : RPCMOUNTDOPTS="--manage-gids -p 32767"
- sur Sequoia, fichier /etc/defaut/nfs-common, modifier la ligne : STATDOPTS="-p 32765 -o 32766"
- Pour démonter un dossier NFS, utiliser la commande : umount -f -l /home/grosdur/
Installation de Sphinx
- Créer un utilisateur sphinx : voir doc
- Passer en admin : su admin
- Lancer le script : sh /home/admin/script/sphinx_2.0.sh
- Appliquer la configuration post-installation : voir doc
- Autoriser Sphinx dans Shorewall : voir doc
- Réaliser les vérifications
- Ajouter Sphinx au démarrage : rcconf
- Configurer Sphinx pour qu'il puisse être utilisé depuis Sequoia : Utiliser Sphinx à distance
Installation de Tomcat
- Passer en admin : su admin
- Lancer le script : sh /home/admin/script/tomcat_2.0.sh
- Normalement tout devrait être fonctionnel, il ne reste qu'à démarrer le serveur : service tomcat start
- Augmenter la taille mémoire (de l'espace PermGen principalement) pour IPT et Gbif-France-Harvester, en éditant /usr/local/tomcat/bin/catalina.sh : ajouter la ligne suivante
CATALINA_OPTS="$CATALINA_OPTS -server -Xms256m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=512m"
Installation des librairies PEAR
Voir pour chaque version installée de PHP :/usr/local/php/5.{x}/bin/pear list