« Gentoo sur Frozenkiwi » : différence entre les versions
Aucun résumé des modifications |
|||
(11 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== Installation d'applications == | |||
* Configuration de [[Subversion]] | |||
* Configuration de [[PS3 Media Server]] | |||
* Configuration de [[Air Video Server]] | |||
* Configuration de [[PostgreSQL]] | |||
== Gestion de certificats OpenSSL == | == Gestion de certificats OpenSSL == | ||
Ligne 12 : | Ligne 18 : | ||
Cela aura pour effet d'accélerer de manière considérable les mises à jours de packages volumineux. En effet, une grande partie de ces mises à jours consiste en une recompilation presque inutile de code déjà compilé auparavant. Quand vous passez de PHP-4.1.1-r2 à PHP-4.1.1-r3 il n'y a pas d'énormes différences dans le code source... | Cela aura pour effet d'accélerer de manière considérable les mises à jours de packages volumineux. En effet, une grande partie de ces mises à jours consiste en une recompilation presque inutile de code déjà compilé auparavant. Quand vous passez de PHP-4.1.1-r2 à PHP-4.1.1-r3 il n'y a pas d'énormes différences dans le code source... | ||
== Création automatique du home directory à la première consultation d'emails == | == Création automatique du home directory à la première consultation d'emails == | ||
Je ne vais pas décrire comment configurer PAM et pam_mkhomedir.so pour la création automatique du home directory des nouveaux utilisateurs lors de leur première connection SSH. Tout cela est très bien documenté dans plein de sites. | Je ne vais pas décrire comment configurer PAM et pam_mkhomedir.so pour la création automatique du home directory des nouveaux utilisateurs lors de leur première connection SSH. Tout cela est très bien documenté dans plein de sites. | ||
Ligne 67 : | Ligne 72 : | ||
* http://sageweb.sage.org/links/solaris/webservers/apache-details.mm | * http://sageweb.sage.org/links/solaris/webservers/apache-details.mm | ||
== Authentification de pages web par certificat client == | |||
La reconnaissance de certificats client par apache ne fonctionne pas si le dossier de certificats '''/etc/ssl/<CertificateAuthority>/certs''' contient des certificats corrompus, non valides, ou des liens symboliques qui ne pointent vers aucun fichier. | |||
==== Symptômes ==== | |||
* L'affichage d'une page web qui demande un certificat client (commande '''SSLVerifyClient''' require dans la configuration apache) s'affiche sans demander aucun certificat | |||
* ou alors le processus apache bloque sur la page et aucun contenu n'est retourné (apache tourne dans le vide la page se charge sans jamais aboutir). | |||
==== Résolution ==== | |||
Il faut nettoyer le dossier de certificats de l'autorité de certification locale. Commencer par sauvegarder tous les certificats locaux créés sur ce système (ainsi que leurs liens symboliques du format 001122aa.0) , puis supprimer le contenu du dossier et réinstaller les certificats racines globaux. | |||
Sur gentoo, une commande | |||
emerge ca-certificates | |||
se charge de cette réinstallation. | |||
Enfin, il suffit de replacer les certificats locaux dans le dossier et relancer apache | |||
== Ajouter un nouvel utilisateur mail et ftp == | == Ajouter un nouvel utilisateur mail et ftp == | ||
Ligne 101 : | Ligne 120 : | ||
mysqlcheck -u root -p -s --all-databases | mysqlcheck -u root -p -s --all-databases | ||
Une fois la table "crashée" identifiée, il suffit d'aller dans phpMyAdmin et de réparer la table correspondante via la fonction "Réparer la table" dans la vue principale de la liste des tables. | Une fois la table "crashée" identifiée, il suffit d'aller dans phpMyAdmin et de réparer la table correspondante via la fonction "Réparer la table" dans la vue principale de la liste des tables. | ||
=== Optimisation des tables MYSQL === | |||
La commande suivante permet d'optimiser les tables des bases de données, et permet aussi de migrer entre des tables InnoDB stockées dans un fichier partagé, ou des tables InnoDB stockées dans des fichiers indépendants, selon l'état de la valeur de configuration '''innodb_file_per_table''' [http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html] : | |||
mysqlcheck --optimize --all-databases | |||
=== Segmentation fault dans les logs apache === | |||
Un segfault dans ces logs peut avoir beaucoup de causes. Si [http://gallery.menalto.com/ Gallery G2] est installé, un bug d'apache peut créer ces erreurs. En résumé, apache/mod_php ne supporte pas bien la commande PHP apache_setenv sur no-gzip. La solution est d'ajouter la ligne suivant" au fichier '''config.php''' de toutes les installations de gallery G2 sur le serveur: | |||
$gallery->setConfig('apacheSetenvBroken', 1); | |||
Références: | |||
* http://gallery.menalto.com/node/62436#comment-228570 | |||
* http://sourceforge.net/tracker/index.php?func=detail&aid=1692166&group_id=7130&atid=107130 | |||
== Services == | == Services == | ||
Ligne 121 : | Ligne 154 : | ||
And change it to: | And change it to: | ||
$command .= " ".$cfg["cmd_options"]." > /dev/null &"; | $command .= " ".$cfg["cmd_options"]." > /dev/null &"; | ||
== Gestion des disques et volumes == | |||
Créer un nouveau disque RAID-1 avec 1 seul disque (en prévision d'ajout d'un second): | |||
mdadm --create /dev/md0 -l raid1 -n 2 /dev/disk1 missing | |||
Créer un nouveau disque RAID-1 avec 2 disques: | |||
mdadm --create /dev/md0 -l raid1 -n 2 /dev/disk1 /dev/disk2 | |||
Supprimer un disque d'un groupe RAID-1 | |||
mdadm -f /dev/md0 /dev/disk2 | |||
mdadm -r /dev/md0 /dev/disk2 | |||
Ajouter un nouveau disque à un groupe RAID-1: | |||
mdadm -a /dev/md0 /dev/disk3 | |||
Afficher les infos des disques à ajouter à /etc/mdadm.conf | |||
mdadm --detail -scan | |||
Ajouter une partition de boot aux 2 disques d'un groupe RAID-1. Pour chaque disque effectuer: | |||
grub | |||
> device (hd0) /dev/sda | |||
> root (hd0,0) | |||
> setup (hd0) | |||
=== Déplacer un LV vers un autre VG === | |||
2 possibilités pour déplacer un LV (logical volume) vers un autre VG (volume group). | |||
OPTION1. | |||
# Assembler les VG avec "vgextend" | |||
# Déplacer les LV avec "pvmove -n" | |||
# Séparer les VG avec "vgsplit" | |||
OPTION2. | |||
Utiliser une copie brute de disque à disque d'un snapshot LVM: | |||
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume | |||
lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name | |||
dd if=/dev/volume-group/snapshot-name of=/dev/new-volume-group/new-logical-volume | |||
Référence: http://askubuntu.com/questions/90940/how-to-move-copy-logical-volume-lv-to-another-volume-group-vg | |||
== Partitions de 3To == | |||
Créer une partition avec partes | |||
parted /dev/sde | |||
Ensuite créer la partition GPT | |||
(parted) mklabel gpt | |||
Warning: The existing disk label on /dev/sde will be destroyed and all data on this disk will be lost. Do you want to continue? | |||
Yes/No? yes | |||
Créer la partition de 3Tb | |||
(parted) unit TB | |||
(parted) mkpart primary 0 0 | |||
(parted) print | |||
Model: ATA ST3000DM001-1CH1 (scsi) | |||
Disk /dev/sde: 3.00TB | |||
Sector size (logical/physical): 512B/4096B | |||
Partition Table: gpt | |||
Disk Flags: | |||
Number Start End Size File system Name Flags | |||
1 0.00TB 0.00TB 0.00TB primary | |||
Sauvegarder et quitter | |||
(parted) quit |
Dernière version du 30 mars 2014 à 19:16
Installation d'applications
- Configuration de Subversion
- Configuration de PS3 Media Server
- Configuration de Air Video Server
- Configuration de PostgreSQL
Gestion de certificats OpenSSL
Gestion des Certificats OpenSSL
Système d'authentification via LDAP
Système d'authentification via LDAP
Optimisation des compilations de packages
Je recommande vivement à tous les administrateurs de serveurs Gentoo d'installer le package ccache et de l'ajouter à leur fichier make.conf dans la ligne FEATURES.
Cela aura pour effet d'accélerer de manière considérable les mises à jours de packages volumineux. En effet, une grande partie de ces mises à jours consiste en une recompilation presque inutile de code déjà compilé auparavant. Quand vous passez de PHP-4.1.1-r2 à PHP-4.1.1-r3 il n'y a pas d'énormes différences dans le code source...
Création automatique du home directory à la première consultation d'emails
Je ne vais pas décrire comment configurer PAM et pam_mkhomedir.so pour la création automatique du home directory des nouveaux utilisateurs lors de leur première connection SSH. Tout cela est très bien documenté dans plein de sites.
Il peut cependant être très utile de pouvoir aussi créer ces répertoires lors de la toute première connection des utilisateurs à leur email, surtout si on ne souhaite pas leur donner un accès SSH (ou si on ne souhaite même pas leur expliquer ce qu'est SSH).
Le module pam_mkhomedir ne peut être configuré que dans une ligne "session" dans le fichier PAM et nulle part ailleurs (ce n'est même pas la peine d'essayer de le mettre dans une section "account" ou "password").
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
Il faut donc trouver un moyen d'ouvrir une session PAM lorsque l'utilisateur consulte ses e-mails. La solution consiste à installer un serveur IMAP/POP3 tel que dovecot (en version 1.0 alpha5 ou supérieure) qui autorise l'ouverture d'une session temporaire à la connexion de chaque utilisateur.
Extrait du fichier de configuration dovecot.conf:
# PAM authentication. Preferred nowadays by most systems. # Note that PAM can only be used to verify if user's password is correct, # so it can't be used as userdb. If you don't want to use a separate user # database (passwd usually), you can use static userdb. passdb pam { # [-session] [cache_key=<key>] [<service name>] # # -session makes Dovecot open and immediately close PAM session. Some # PAM plugins need this to work. # # cache_key can be used to enable authentication caching for PAM # (auth_cache_size also needs to be set). It isn't enabled by default # because PAM modules can do all kinds of checks besides checking password, # such as checking IP address. Dovecot can't know about these checks # without some help. cache_key is simply a list of variables (see # doc/variables.txt) which must match for the cached data to be used. # Here are some examples: # %u - Username must match. Probably sufficient for most uses. # %u%r - Username and remote IP address must match. # %u%s - Username and service (ie. IMAP, POP3) must match. # # If service name is "*", it means the authenticating service name # is used, eg. pop3 or imap. args = "-session *" }
Et voilà !
La même chose semble possible avec d'autres serveurs, tels que uw-imap ou peut-être aussi courier-imap
Sécuriser le serveur Apache
Règle de base: Apache tourne sous l'utilisateur précisé dans la directive User. Cet utilisateur doit avoir le droit de :
- Lire les fichiers : +r
- Traverser les dossiers: +x (inclus tous les dossiers jusqu'au chemin des pages)
- Exécuter les scripts CGI: +x
La règle sur frozenkiwi est de faire appartenir tous les fichiers et répertoires à root:apache. L'utilisateur apache n'aura donc que les droits du groupe (r-x), et non pas les droits de l'utilisateur (rwx). Les autres utilisateurs n'ont aucun droit (---). Seuls les quelques répertoires de fichiers temporaires, ou certains fichiers de configuration dynamiques doivent appartenir à apache:apache pour qu'il puisse les modifier.
Liens utiles:
- http://www.onlamp.com/pub/a/apache/2004/05/28/apacheckbk.html
- http://sageweb.sage.org/links/solaris/webservers/apache-details.mm
Authentification de pages web par certificat client
La reconnaissance de certificats client par apache ne fonctionne pas si le dossier de certificats /etc/ssl/<CertificateAuthority>/certs contient des certificats corrompus, non valides, ou des liens symboliques qui ne pointent vers aucun fichier.
Symptômes
- L'affichage d'une page web qui demande un certificat client (commande SSLVerifyClient require dans la configuration apache) s'affiche sans demander aucun certificat
- ou alors le processus apache bloque sur la page et aucun contenu n'est retourné (apache tourne dans le vide la page se charge sans jamais aboutir).
Résolution
Il faut nettoyer le dossier de certificats de l'autorité de certification locale. Commencer par sauvegarder tous les certificats locaux créés sur ce système (ainsi que leurs liens symboliques du format 001122aa.0) , puis supprimer le contenu du dossier et réinstaller les certificats racines globaux. Sur gentoo, une commande
emerge ca-certificates
se charge de cette réinstallation. Enfin, il suffit de replacer les certificats locaux dans le dossier et relancer apache
Ajouter un nouvel utilisateur mail et ftp
- Ouvrir http://ldap.frozenkiwi.net/
- Créer un nouveau User Account
- Choisir un mot de passe encrypté en MD5
- Choisir le GID users
- Choisir le shell /bin/false
- Quand l'utilisateur est créé, ajouter un attribut mail à l'utilisateur
Ajouter l'utilisateur au groupe ou=Group, cn=users
Apres cela, l'utilisateur peut utiliser FTP, et les mails (via IMP par exemple). La premiere connexion aux mails créera le home directory. De même une connexion SSH créera le home directory mais sans autoriser un accès shell (à cause du shell mis par défaut à /bin/false).
Installer Mindterm
Télécharger la dernière version libre: http://www.appgate.com/products/80_MindTerm/110_MindTerm_Download/
Pour signer le package JAR:
- Installer le package java-devel
- Generer la clef
keytool -alias keyname -genkey
- Signer l'archive
jarsigner [cheming_vers_mindterm.jar] keyname
Autres infos sur : http://mindterm.appgate.com/pipermail/mindterm-users/2003q2/000770.html
Résolution de quelques problèmes courants
Table MYSQL corrompue
Si le message suivant apparait lors d'opérations sur la base, c'est que la table précisée est corrompue:
mysqldump: Got error: 1016: Can't open file: 'tx_realurl_errorlog.MYI' (errno: 145) when using LOCK TABLES
Il faut d'abord identifier dans quelle base se trouve cette table corrompue. Si plusieurs bases contiennent le même nom de table, il suffit de lancer la commande suivante pour afficher toutes les erreurs de toutes les bases:
mysqlcheck -u root -p -s --all-databases
Une fois la table "crashée" identifiée, il suffit d'aller dans phpMyAdmin et de réparer la table correspondante via la fonction "Réparer la table" dans la vue principale de la liste des tables.
Optimisation des tables MYSQL
La commande suivante permet d'optimiser les tables des bases de données, et permet aussi de migrer entre des tables InnoDB stockées dans un fichier partagé, ou des tables InnoDB stockées dans des fichiers indépendants, selon l'état de la valeur de configuration innodb_file_per_table [1] :
mysqlcheck --optimize --all-databases
Segmentation fault dans les logs apache
Un segfault dans ces logs peut avoir beaucoup de causes. Si Gallery G2 est installé, un bug d'apache peut créer ces erreurs. En résumé, apache/mod_php ne supporte pas bien la commande PHP apache_setenv sur no-gzip. La solution est d'ajouter la ligne suivant" au fichier config.php de toutes les installations de gallery G2 sur le serveur:
$gallery->setConfig('apacheSetenvBroken', 1);
Références:
- http://gallery.menalto.com/node/62436#comment-228570
- http://sourceforge.net/tracker/index.php?func=detail&aid=1692166&group_id=7130&atid=107130
Services
Subversion
Très bien documenté ici : http://gentoo-wiki.com/HOWTO_Subversion
TorrentFlux
Correction d'un bug dans la version 2.3 (torrent failing immediately):
This is a TF 2.3 bug. You can fix by editing the index.php file on line 254:
Find the following:
$command .= " ".escapeshellarg($cfg["cmd_options"])." > /dev/null &";
And change it to:
$command .= " ".$cfg["cmd_options"]." > /dev/null &";
Gestion des disques et volumes
Créer un nouveau disque RAID-1 avec 1 seul disque (en prévision d'ajout d'un second):
mdadm --create /dev/md0 -l raid1 -n 2 /dev/disk1 missing
Créer un nouveau disque RAID-1 avec 2 disques:
mdadm --create /dev/md0 -l raid1 -n 2 /dev/disk1 /dev/disk2
Supprimer un disque d'un groupe RAID-1
mdadm -f /dev/md0 /dev/disk2 mdadm -r /dev/md0 /dev/disk2
Ajouter un nouveau disque à un groupe RAID-1:
mdadm -a /dev/md0 /dev/disk3
Afficher les infos des disques à ajouter à /etc/mdadm.conf
mdadm --detail -scan
Ajouter une partition de boot aux 2 disques d'un groupe RAID-1. Pour chaque disque effectuer:
grub > device (hd0) /dev/sda > root (hd0,0) > setup (hd0)
Déplacer un LV vers un autre VG
2 possibilités pour déplacer un LV (logical volume) vers un autre VG (volume group).
OPTION1.
- Assembler les VG avec "vgextend"
- Déplacer les LV avec "pvmove -n"
- Séparer les VG avec "vgsplit"
OPTION2.
Utiliser une copie brute de disque à disque d'un snapshot LVM:
lvcreate --snapshot --name <the-name-of-the-snapshot> --size <the size> /dev/volume-group/logical-volume lvcreate --name <logical-volume-name> --size <size> the-new-volume-group-name dd if=/dev/volume-group/snapshot-name of=/dev/new-volume-group/new-logical-volume
Référence: http://askubuntu.com/questions/90940/how-to-move-copy-logical-volume-lv-to-another-volume-group-vg
Partitions de 3To
Créer une partition avec partes
parted /dev/sde
Ensuite créer la partition GPT
(parted) mklabel gpt Warning: The existing disk label on /dev/sde will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No? yes
Créer la partition de 3Tb
(parted) unit TB (parted) mkpart primary 0 0 (parted) print
Model: ATA ST3000DM001-1CH1 (scsi) Disk /dev/sde: 3.00TB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 0.00TB 0.00TB 0.00TB primary
Sauvegarder et quitter
(parted) quit