====== 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
===== 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...