Ceci est une ancienne révision du document !
Lighttpd
Pour protéger un répertoire par une authentification “user/password”, on utilise la méthode “basic” avec “htdigest”.
Editer /etc/lighttpd/lighttpd.conf et rajouter le bloc du rép ( son nom, la méthode, le realm, et le user ) dans le block “auth.require”.
Rajouter si besoin une ligne pour un nouvel “user” dans /etc/lighttpd/lighttpd.user qui contient le hash sous la forme htdigest ( user:realm:hashdupass ). Pour ce faire on peut utiliser mdp.sh en éxécutant:
mdp.sh 'user' 'realm' 'motdepasse' ( espaces entre les arguments )
La ligne générée devra être ajoutée dans lighttpd.user.
Pour importer ou exporter un fichier sur ou depuis le serveur:
Il faut un serveur ssh sur la machine émettrice et un sur la réceptrice. Pour vérifier :
“pgrep sshd” sur chacune d'elles.
scp /chemin/fichier NomUtilisateur@NomServeur:/Chemin/Destination scp -P N°dePort /chemin/fichier NomUtilisateur@NomServeur:/Chemin/Destination (si le serveur ssh écoute sur autre port que 22)
Fonctionne donc dans les deux sens (scp NomUtilisateur@NomServeur:/chemin/fichier /Chemin/Destination).
Pour un répertoire, utiliser l'option -r
scp -r -P N°dePort ...
OBSD:
Serveur oueb :
On active Portmap,mountd et nfsd:
# rcctl enable portmap mountd nfsd # rcctl start portmap mountd nfsd
/var/www/htdocs/www.chepi.fr/ + liens symboliques vers documents, musique, video
Pour les répertoires “médias” on les “partage” sur le serveur web via:
nfs : /etc/exports (man exports)
/home -maproot=nobody -alldirs -ro -network=192.168.0 -mask=255.255.255.0 rcctl reload mountd
+ entrées dans /etc/fstab
www.chepi.fr:/home/musique /var/www/htdocs/www.chepi.fr/musique nfs ro,nodev,nosuid 0 0 www.chepi.fr:/home/video /var/www/htdocs/www.chepi.fr/video nfs ro,nodev,nosuid 0 0 www.chepi.fr:/home/documents /var/www/htdocs/www.chepi.fr/documents nfs ro,nodev,nosuid 0 0
PHP
Minimum requis
Il est fort possible que vous souhaitiez ajouter le support de PHP à votre site, surtout si vous voulez héberger un moteur de blog ou un CMS. Il s’agit d’un langage de programmation offrant davantage de possibilités que de simples pages HTML.
La commande suivante permet d’installer PHP (à remplacer par la version souhaitée):
# pkg_add php-7.4.7
Pour lister toutes les versions de PHP disponibles (Utile pour supprimer les vieilles versions de php), entrez :
# pkg_info -Q php
Après installation du paquet, on active PHP et on le démarre :
# rcctl enable php74_fpm # rcctl start php74_fpm
Ici, “74” correspond à la version 7.4.
Nous pouvons maintenant modifier la configuration de httpd pour lui dire de servir les pages au travers de PHP. Quelques lignes sont à ajouter au fichier /etc/httpd.conf :
server "chezmoi.tld" {
listen on * port 80
root "/htdocs/monsupersite"
directory index index.php
location "*.php*" {
fastcgi socket "/run/php-fpm.sock"
}
}
Remarquez l’instruction directory index index.php. Elle permet de rendre l’adresse http://chezmoi.tld/ équivalente à l’adresse http://chezmoi.tld/index.php.
Et voilà, les fichiers “.php” seront correctement interprétés. Cette configuration est suffisante dans la plupart des cas. PHP avec des modules et du chroot
Je vous propose dans cette partie d’aller un peu plus loin pour préparer l’installation d’applications plus complètes (blog, CMS…) en activant des extensions et des options qui ne le sont pas par défaut, toujours dans un souci de sécurité.
Ajouter des modules PHP
Vous avez peut-être remarqué lors de l’installation de PHP une note concernant le dossier /usr/local/share/doc/pkg-readmes. Ce dernier contient des informations très intéressantes que nous allons appliquer ici.
Les extensions installées sont dans le dossier /etc/php-7.4.sample. Afin de les activer, il faut les relier dans le dossier /etc/php-7.4. On peut le faire en deux commandes :
# cd /etc/php-7.4.sample # for i in *; do ln -sf ../php-7.4.sample/$i ../php-7.4/; done # rcctl restart php74_fpm
Ainsi, toutes les extensions disponibles pour PHP sont activées. Pensez-y si vous en installez de nouvelles plus tard.
La plupart des extensions sont déjà présentes, mais vous voudrez peut-être y ajouter les paquets suivants (en adaptant le numéro de version):
php-curl-7.4.7, php-gd-7.4.7, php-intl-7.4.7, php-zip-7.4.7. libmcrypt qui donne accès à des fonctionnalités de cryptographie (remplace mcrypt). pear, (ainsi que des paquets “pecl-…” qui sont des extensions pratiques)
Modifier la configuration de PHP
On peut souhaiter modifier la configuration de PHP. Il faut pour cela éditer le fichier /etc/php-7.4.ini. Je vous conseille notamment de modifier ces quelques lignes :
; Augmente la taille des fichiers que vous pouvez envoyer sur le site post_max_size = 10M upload_max_filesize = 10M ; une application php peut chercher du contenu distant (images..) allow_url_fopen = On ; Le fuseau horaire date.timezone = Europe/Paris ; configuration du cache opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.enable_file_override=1
Configuration relative au chroot
Il est possible que votre site doive récupérer des informations ou données venant d’autres sites. Il a donc besoin de résoudre des noms de domaines, vérifier des certificats, connaître l’heure du système. Ces éléments sont situés dans le dossier /etc. Malheureusement, si vous vous souvenez bien, le serveur http est dans un chroot. Où se trouve ce chroot déjà?
Dans /var/www !!!
On va donc être obligé de mettre quelques fichiers qui normalement se trouvent dans /etc à l’intérieur du chroot.
Voici la procédure :
# cd /var/www # On va dans le chroot # mkdir etc/ # On fabrique un dossier etc # cp /etc/resolv.conf etc/resolv.conf # cp /etc/hosts etc/hosts # cp /etc/localtime etc/localtime # mkdir etc/ssl # On cree un autre dossier # install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf /var/www/etc/ssl
Ces fichiers ne doivent qu’être lisibles et accessibles :
chmod -R 444 /var/www/etc/* chmod -R a+X /var/www/etc/
Les fichiers copiés servent notamment à :
/etc/resolv.conf et /etc/hosts : Permettent à PHP de traduire un nom de domaine en adresse IP. /etc/localtime : Permet d’être à la bonne heure. /etc/ssl/* : Fichiers permettant de vérifier les certificats SSL. Ce dernier doit être régulièrement mis à jour. Ajoutez donc cette ligne dans le fichier /etc/monthly.local :
install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf /var/www/etc/ssl
Certaines applications ont besoin d’être capable d’envoyer des mails (forums, wikis…). Puisque PHP est dans un chroot, il ne pourra pas communiquer avec le programme responsable de l’envoi des mails : sendmail. Heureusement, lorsque vous avez installé PHP, l’outil femail-chroot a été lui aussi installé grâce au jeu des dépendances. Pour que PHP puisse l’utiliser, il faut copier “sh” dans le chroot (voir le fichier /usr/local/share/doc/pkg-readmes/femail-chroot*).
# cp /bin/sh /var/www/bin/
Une fois toutes vos modifications réalisées, n’oubliez pas de relancer PHP avec rcctl restart php74_fpm.
httpd : /etc/httpd.conf puis
rrctl restart httpd (man httpd.conf)
Les liens symboliques pour avoir video, musique et documents (tous situés dans /home) à la racine:
ln -s /home/musique /musique
(Pour supprimer un lien symbolique)
rm -i /musique puis valider par "y".
On ajoute également un simple lien symbolique pour “sauvegarde”
ln -s /home/sauvegarde /sauvegarde
Pour redémarrer le service php:
rcctl restart php70_fpm
Bozon
Ajouter les bibliothèques “pear php-pspell php-ldap php-curl php-gd php-mcrypt php-intl php-zip”. Afin de les activer il faut les relier dans le dossier /etc/php-7.0.sample:
cd /etc/php-7.0.sample for i in *; do ln -sf ../php-7.0.sample/$i ../php-7.0/; done rcctl restart php70_fpm
Augmenter la taille de mémoire en dernière ligne de /etc/php-fpm.conf
php_admin_value[memory_limit] = 100M (par exemple)
La limite de post_max_size et upload_max_size de /etc/php-x.x.ini peut s'enlever en prenant la valeur 0 (dans ce même fichier), mais Bozon l'interprète comme la valeur limite de taille de téléchargement. Mettre donc:
post_max_size = 2G upload_max_filesize = 2G
Dans le cas où on place des fichiers directement (cp, mv en local sur le serveur ou via Filezilla en distant) dans le dossier /var/www/bozon/uploads/user, on doit régénérer la base afin de rendre ces fichiers visibles dans l'interface de Bozon.
Dokuwiki
La langue de l'interface ainsi que le titre se configurent dans:
/var/www/dokuwiki/conf/local.php
Le nom de la page d'accueil “sommaire” se configure dans:
/var/www/dokuwiki/conf/dokuwiki.php
Pour changer le logo.png, cliquer sur Gestionnaire Multimédia, catégorie “wiki”.