====== Administration serveur ======
===== Quelques procedures d'install =====
* [[tomcat|tomcat_install]]
* [[qmail|postfix]]
===== Quelques opérations classiques =====
==== Ajouter un utilisateur pour du ftp ====
* Pure-ftpd
#remplacer par le login souhaité
pure-pw useradd -d /path/2/ftp/ -y 2 -N 1000 -u 1001 -g 1001
# cela va demander le pass
# -y 2 => 2 connexions simu max
# -N 1000 => 1000 Mo de quota
# -u & -g correspondent à uid et guid (pas obligés de figurer dans /etc/passwd)
# pour modifier un param, ici mettre le quota à 500Mo
pure-pw usermod -N 500
# ATTTENTION, une fois les modifs de users effectuées, il faut lancer
pure-pw mkdb
# pour que cela devienne effectif !
#lister tous les users et leur home
pure-pw list
# pour voir toutes les infos d'un user
pure-pw show
# les autres commandes possibles
pure-pw --help
===== Configuration pure-ftpd =====
Ex de conf sous debian sur http://www.littleboboy.net/archives/2004/09/28/exemple-de-configuration-de-pureftpd-sous-debian
et une autre bonne doc sur http://www.labo-linux.org/cours/module-2/chapitre-02-pureftpd/
Les fichier de conf sont tous dans ''/etc/pure-ftpd/conf/''. Pour les méthodes d'authentification, il s'agit de liens de ''/etc/pure-ftpd/auth/'' vers certains /etc/pure-ftpd/conf/fichiers. Chaque fichier du rep de conf contient une valeur et a le nom du paramètre. pure-ftpd-wrapper (fournit par debian) lit ces fichiers de conf pour lancer pure-ftpd avec les bons params.
===== Apache =====
==== Auth by group ====
Pour gérer les accès par groupe, dans la conf du vhost
AuthType Basic
AuthName "Le libellé de la demande d'authentification"
AuthUserFile /path/2/fichier.users.passwd
AuthGroupFile /path/2/fichier.groups.users
Require group group1 group2
Le fichier /path/2/fichier.users.passwd se remplit avec le classique ''htpasswd /path/2/fichier.users.passwd utilisateur_a_ajouter'', et le fichier /path/2/fichier.groups.users a la syntaxe
group1: user1 user2
group2: user1 user3
# etc.
===== ssh =====
Une doc complète sur http://www.fredshack.com/docs/openssh.html
==== Créer un accès par clé ====
* générer une paire de clés privée/publique (ssh-keygen ou puttygen.exe sous windows) au format ssh2
* sur le serveur, copier la clé publique dans le fichier /home_du_user_concerne/.ssh/authorized_keys sur une ligne sous la forme\\
from="IP.de.laquelle.on_veut_se_connecter" ssh-rsa cle_publique_complete adresse_mail@domaine.tld
* dans le client ssh, préciser le nom du user et la clé privée à utiliser.\\
* sous linux, ssh-keygen met automatiquement (lors de la génération) la clé privée dans $HOME/.ssh/id_dsa et la clé publique dans $HOME/.ssh/id_dsa.pub (id_rsa si on utilise rsa au lieu de dsa pour crypter).
* sous windows, dans putty, créer une session où on précise session/host_name, (cocher ssh), Connection/auto-login username, Connection/SSH/Preferred SSH protocol version => 2, Connection/SSH/Auth/Private key file for authentification ; et enregiostrer cette session.
===== LVM =====
LVM (pour Logical Volume Manager) permet le resize de partition sans les effacer, (permet aussi d'avoir une même partition sur plusieurs disques physiques, de faire des snapshots de partition à chaud, etc...)
* lvm howto http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/fr/html-1page/LVM-HOWTO.html
* http://www.lea-linux.org/documentations/index.php/Leapro-pro_sys-lvm
* http://sluce.developpez.com/lvm/#L4.1.1
Pour manipuler les partitions, utiliser parted en GiB et le laisser aligner (en octets on doit tomber sur des multiples de 2MiB, donc commencer la partition 1 à 2097152B, soit 512x4096 B = 2 MiB), pour préciser que la partition n°2 sera en lvm, c'est ''(parted) set 2 lvm on''
==== creation ====
# creation de la partition (type Linux LVM, 8e) avec fdisk
# on scanne
vgscan -v
# on créé le physical volume
pvcreate /dev/sdbX
# on créé le volume group
vgcreate nomVolumeGroup /dev/sdbX
# et enfin notre logical volume
lvcreate -L xxxG -n nomVolumeLogique nomVolumeGroup; #ici, xxx Go mais on peut donner la taille en K ou M
# et on a dispo notre /dev/nomVolumeGroup/nomVolumeLogique
# reste à créer le filesystem
mkfs -v -c -j -L monLabel /dev/nomVolumeGroup/nomVolumeLogique
==== infos ====
* pvdisplay : infos sur les physical volumes déclarés
* lvdisplay : infos sur les logical volumes déclarés
==== resize ====
=== agrandissement ===
- démontage (ici ''umount /dev/grosdisk/lv1'', utiliser -l si ça veut pas pour cause de "resource busy").
- ''lvextend -L+42G /dev/grosdisk/lv1'' (ajoute 42Go)
- ''lvextend -l +300 /dev/grosdisk/lv1'' (ajoute 300 PE, ''vgdisplay'' pour savoir combien il en reste de dispo)
- ''e2fsck -f /dev/grosdisk/lv1'' pour vérifier le filesystem
- ''resize2fs /dev/grosdisk/lv1'' pour resizer le filesystem (à la taille de la partition si pas de taille précisée)
- et on remonte ''mount /dev/grosdisk/lv1''.
=== réduction ===
- démontage (ici ''umount /dev/grosdisk/lv1'', utiliser -l si ça veut pas pour cause de "resource busy").
- ''e2fsck -f /dev/grosdisk/lv1'' pour vérifier le filesystem
- ''resize2fs /dev/grosdisk/lv1 50G'' pour resizer le filesystem à 50Go
- ''lvreduce -L 50G /dev/grosdisk/lv1'' (fixe à 50Go)
- et on remonte ''mount /dev/grosdisk/lv1''.
==== Modifications ====
Pour modifier un LV (activer ou pas le mirror par ex), c'est lvconvert.
**Attention**, pour avoir un mirror (raid1 sur au moins 2 PV donc), il faut au moins 3 PV (le 3e pour le log), sinon il répond qu'il y a pas assez de place (pour mettre son log, mais vu le message on comprend pas pourquoi il dit ça).
exemples
# Passer backup en raid1, on a crée 2 partition avec fdisk, un sdb3 de 10Go et un sdb4 du reste
pvcreate /dev/sdb3
pvcreate /dev/sdb4
# on les ajoute au vg (vg2 ici)
vgextend vg2 /dev/sdb3
vgextend vg2 /dev/sdb4
# et on peut passer notre lv "backup" en mirroir (attention, ça prend qq heures)
lvconvert -m1 /dev/vg2/backup
# si vraiment on peut pas avoir un 3e PV, on peut s'en sortir avec un log en RAM, mais ça demandera à lvm de le reconstruire à chaque boot), ça donnerait
lvconvert -m1 --mirrorlog core /dev/vg2/backup
# Pour supprimer le mirroir
lvconvert -m0 /dev/vg2/backup
# pour passer le log du disque en RAM (pour récupérer un PV par ex)
lvconvert --mirrorlog core /dev/vg2/backup
# et pour le remettre sur le disque
lvconvert --mirrorlog disk /dev/vg2/backup
# pour passer de linear en stripped, pour faire du raid0 et doubler les perfs disques (au prix de la sécurité des datas)
lvconvert --stripes 2 --stripesize 256 /dev/vg2/video
Cf qq méthodes pour déplacer un lv sur https://unix.stackexchange.com/questions/34820/move-a-logical-volume-from-one-volume-group-to-another
==== Réparations ====
En cas de disque défaillant dans un vg avec des volumes en mirroir, on débranche physiquement le disque malade (ça évite à lvm de chercher à retrouver ses petits et de figer la machine et achever le disque), et on ajoute un nouveau disque avec une partition lvm assez grande pour récupérer les volumes en mirroir
# pvcreate pour la nouvelle partition (/dev/sdxN ici), puis on l'ajoute au vg
vgextend vg /dev/sdxN
# On active les lv qui peuvent l’être dans notre vg cassé (il manque un disque), ça va activer les lv en mirroir et ceux qui n'étaient que sur le bon disque
vgchange -a y --partial vg
# et on repare le lv miroir1
lvconvert --repair /dev/vg/miroir1
Pour déplacer tous les lv d'un pv (/dev/sdxA) vers un autre (/dev/sdxB), pour retirer le A du vg, c'est
pvmove /dev/sdxA /dev/sdxB
et pour le retirer c'est
vgreduce vg /dev/sdxA
===== Paquets utiles =====
Pour un serveur en debian etch, une liste de paquets utiles
# serveur apache / php5 / mysql5
mysql-server openssl
apache2 libapache2-mod-auth-plain
php5 php5-cli php5-curl php5-gd php5-imagick php5-mcrypt php5-ming php5-mysql php5-sqlite3 php5-tidy php5-xsl
# autres services
pure-ftpd nfs-user-server libapache2-svn nfs-user-server
# utilitaires de base
apt-file iftop joe findutils gcc hdparm htop lftp logrotate lynx make ntpdate perl python rsync screen sudo tethereal unzip whois zip
# autres applis utiles
munin phpmyadmin rsnapshot subversion
# pour rsnapshot
perl -MCPAN -e 'install qw(Lchown)'
# pour un smtp minimal
mailx ssmtp
# pour activer le dépot multimedia (pas forcément utile sur un serveur de prod)
debian-multimedia-keyring
# utilitaires annexes
imagemagick libfreetype6 lame
# et pour les swftools, il faut aussi (enfin, pas vraiment car il refuse de compiler avec la lbc6 de etch)
libfreetype6-dev libungif-bin t1lib-bin libjpeg62-dev libt1-dev libungif4-dev
# pour des paquets perso vite faits (attention, pas dans etch, à prendre dans sarge car ceux de sid n'ont pas la bonne libc6)
installwatch checkinstall
===== Install basique =====
Sur un nouveau sd, install de base
# à la 1re connexion root, on change le passwd et on installe sa clé ssh
# màj paquet
aptitude update && aptitude upgrade && aptitude dist-upgrade
# je commence par mon éditeur favori (remplacer joe par vim ou emacs pour les fans d'autres éditeurs)
aptitude install joe
# que l'on configure (-option en début de ligne pour l'activer, --option pour désactiver)
joe /etc/joe/joerc
# cf http://ll.lairdutemps.org/linux/aliases#joe
# on passe au .bashrc avec .bash_aliases et .bash_prompt
# on configure ses locales (en-GB.utf8 par défaut, en activant quand même fr.utf8 et iso-8859-1 pour en et fr)
dpkg-reconfigure locales
# on s'occupe de son hostname
echo #myhost.domaine.tld# > /etc/hostname
# scripts persos :
mkdir /home/bin
# un script pour envoyer un mail au reboot
joe /home/bin/mailAfterBoot.sh
chmod +x /home/bin/mailAfterBoot.sh
# que l'on ajoute au rc.local
joe /etc/rc.local
# on peut passer à l'install des paquets "basiques"
aptitude install apt-build apt-file iftop joe findutils gcc hdparm htop lftp logrotate lynx make ntpdate perl python rsync screen sudo tshark unzip whois zip
Ensuite, reste à installer les services voulus...
===== Réseau =====
Cf http://www.cyberciti.biz/tips/linux-investigate-sockets-network-connections.html pour les commandes ss (remplaçant de netstat), avec aussi les équivalences de https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/