Initialisation

This commit is contained in:
2024-01-07 10:02:35 +01:00
commit b7291133a3
4418 changed files with 169147 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
====== Accélérer lexécution des pages avec memcached ======
===== Installer memcached =====
Installer **memcached** pour PHP 7.4 :
<code BASH>
sudo apt install php7.4-memcached memcached
</code>
Installer **memcached** pour PHP 8.0 :
<code BASH>
sudo apt install php8.0-memcached memcached
</code>
===== Vérifier le fonctionne de memcached dans le system =====
ps ax | grep memcached
Résultat
<code>
14085 ? Ssl 0:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
</code>
===== Paramétrer memcached dans php =====
Il faut ajouter des paramètres dans la configuration de PHP. J'ai dédié un fichier de paramétrage ''sudo nano /etc/php/7.4/fpm/conf.d/20-apcu.ini''
<code>
extension=apcu.so
apc.enabled=1
apc.shm_size=256M
apc.ttl=7200
apc.enable_cli=1
apc.gc_ttl=3600
apc.entries_hint=4096
apc.slam_defense=1
apc.serializer=php
</code>
===== Vérifier le fonctionne de memcached par php =====
Pour vérifier la prise en compte, il suffit de demande à phpinfo().
<code PHP>
<?php
phpinfo();
?>
</code>
{{ informatique:serveur:web-linux-apache:pasted:20201230-155201.png }}

View File

@@ -0,0 +1,111 @@
====== Comment déménager un hébergement web sans trop de perturbations ? ======
{{ :journal_geek:demenager_1.png?direct&400|}}
Je veux changer dhébergement un site Internet. Le site Internet est sur un vieux Debian et je veux le migrer sur un nouveau Debian. Le souci est que le changement d'adresse IP oblige une propagation DNS qui peut prendre 24 heures. Cela implique pendant cette transition de figer les écritures dans les fichiers du site. Ce qui n'est pas pensable.
Apache propose une fonctionnalité qui s'appelle "reverse proxy". Il permet d'être le destinataire d'un appel à un site et transmettre cette requête à un autre serveur Apache.
===== De la résolution du nom de domaine à la réponse du serveur Web =====
<WRAP center round tip>
Les noms de domaines et adresses IP utilisés dans cette page ne sont que fictions.
</WRAP>
D'abord, comprenons comment l'accès à un site fonctionne. Lorsque que jappelle le site ''perdu.com'', le système DNS se met en œuvre pour fournir une adresse IP à votre ordinateur. C'est le principe d'un nom de domaine : associé une adresse IP à un nom. Donc, au moment de la création du nom de domaine, l'adresse IP a été renseignée.
{{ :journal_geek:resolution_dns_1.png?direct |}}
Cette adresse IP a été définie au moment de la création de lhébergement du site Internet. C'est l'adresse du serveur Web Apache.
{{ :journal_geek:chemin_vers_serveurweb_01.png?direct |}}
Avec un serveur Web, il peut y avoir plusieurs sites hébergés. Le serveur Web Apache peut gérer plusieurs sites Internet. De ce fait, une adresse IP peut correspondre à plusieurs sites Internet, donc plusieurs noms de domaine.
Dans notre exemple, nous avons le site ''perdu.com'' et le site ''trouve.com'' qui correspondent tous les deux à l'adresse 208.97.177.124, donc au même serveur Web.
On peut utiliser le site [[https://ipinfo.io/91.134.242.127|ipinfo.io]] pour vérifier le nombre de sites hébergés par un serveur.
{{ :journal_geek:multisites_1.png?direct |}}
Lorsque le serveur Web Apache va recevoir la demande provenant de la demande d'accès, il recevra le nom de domaine dans le paramètre ''Host''. C'est le protocole HTTP.
{{ :journal_geek:entete_http_demande_1.png?direct |}}
Et grâce à la configuration des sites Web, Apache sera capable de récupérer les fichiers associés au bon nom de domaine.
Voici un exemple de configuration du serveur :
<code>
# Apache doit écouter sur le port 80
Listen 80
# Toutes les adresses IP doivent répondre aux requêtes sur les
# serveurs virtuels
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/trouve.com
ServerName trouve.com
# Autres directives ici
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/perdu.com
ServerName perdu.com
# Autres directives ici
</VirtualHost>
</code>
Pour résumer, votre serveur ne dispose que d'une seule adresse IP, et de nombreux alias (CNAMES) peuvent pointer vers cette adresse dans le DNS.
D'autres exemples sont disponibles sur le site [[https://httpd.apache.org/docs/2.4/fr/vhosts/examples.html|Apache 2.4]]
===== Transfert des fichiers =====
En attendant, je vais transférer les fichiers du site actuel vers le nouveau serveur Web (103.224.182.253).
Le transfert va s'effectuer en deux passes. La première passe permet de transférer le plus gros du site. Il faut prendre en considération tous les gros fichiers qui peuvent prendre du temps à copier, ou tous les petits fichiers qui sont nombreux et peuvent prendre également du temps à transférer.
<code>
rsync -avz /var/www/perdu.com -e "ssh -p 11822" chloe@103.224.182.253:"/var/www/"
</code>
''rsync'' doit être installé sur le serveur distant.
Une fois cette opération terminer, il faudra effectuer une seconde passe pour synchroniser les fichiers fraichement modifiés. Durant cette phase, il faudra veiller à ce que le site soit inaccessible.
===== Reverse Proxy =====
Je vais employer une directive de proxy dans Apache pour transférer le nom de domaine vers le nouveau serveur web (103.224.182.253).
{{ :journal_geek:reverse_proxy_1.png?direct |}}
Sur l'ancien serveur Web, je vais activer le mode Proxy :
<code>
sudo a2enmod proxy_http
</code>
Je vais utiliser les directives ''proxyPass'' et ''proxyPassReverse'' pour indiquer l'adresse IP du nouveau serveur :
<code>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass "/" "http://103.224.182.253/"
ProxyPassReverse "/" "http://103.224.182.253/"
ServerName perdu.com
</VirtualHost>
</code>
A partir de maintenant, le site peut de nouveau être opérationnel :
<code>
sudo service apache2 restart
</code>
On peut désormais s'occuper des DNS pour modifier l'adresse IP associée au nom de domaine.
--- //[[user:cedricabonnel]] 2019/08/02 18:09//

View File

@@ -0,0 +1,42 @@
====== Configurer Apache 2 pour PHP FPM ======
A noter que la **configuration de FPM pour Apache 2** s'effectue directement dans le fichier de configuration ''/etc/php/7.4/fpm/pool.d/www.conf''. Nous n'interviendrons pas dans ce fichier.
**Activer le module proxy** FCGI pour Apache2 en exécutant le code suivant.
<code BASH>
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
</code>
**Modifier l'ordre de traitement des pages index** dans le fichier ''/etc/apache2/mods-available/dir.conf''
<code INI>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</code>
**Ajouter l'appel à PHP** dans le fichier de configuration associé au **ServerName** ''/etc/apache2/sites-available/100-exemple.conf''
Suivant la version d'Apache, l'instruction **SetHandler** ne sera pas la même. Pour connaitre, la version d'Apache, executer ''sudo apachectl -V''.
<code>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
</code>
**Redémarrer** les services Apache2 et PHP FPM:
<code BASH>
$ sudo systemctl restart php7.4-fpm apache2
</code>

View File

@@ -0,0 +1,124 @@
====== Configurer Autodiscover et Autoconfig ======
{{ :dummy.png?75x75|Nom de la section}}
===== DNS =====
_autodiscover._tcp.yourdomain.com. 3600 IN SRV 10 10 443 mail.yourmx.com.
===== Autodiscover pour Outlook =====
<code PHP autodiscover.php>
<?php
$postData = file_get_contents('php://input'); //Autodiscover requests are HTTP posts with XML content
$xml = simplexml_load_string($postData);
$user = $xml->Request->EMailAddress; //copy the email address from the request into a variable
//set Content-Type
header("Content-Type: application/xml");
?>
<?php echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Account>
<AccountType>email</AccountType>
<Action>settings</Action>
<Protocol>
<Type>POP3</Type>
<Server>mail.yourmx.com</Server>
<Port>995</Port>
<LoginName><?php echo $user; ?></LoginName>
<DomainRequired>off</DomainRequired>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<DomainRequired>on</DomainRequired>
</Protocol>
<Protocol>
<Type>IMAP</Type>
<Server>mail.yourmx.com</Server>
<Port>993</Port>
<DomainRequired>on</DomainRequired>
<LoginName><?php echo $user; ?></LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<Encryption>Auto</Encryption>
<AuthRequired>on</AuthRequired>
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server>mail.yourmx.com</Server>
<Port>587</Port>
<DomainRequired>on</DomainRequired>
<LoginName><?php echo $user; ?></LoginName>
<SPA>off</SPA>
<Encryption>Auto</Encryption> <!-- if your server requires encrypotion other than SSL -->
<AuthRequired>on</AuthRequired>
<UsePOPAuth>on</UsePOPAuth>
<SMTPLast>off</SMTPLast>
</Protocol>
</Account>
</Response>
</Autodiscover>
</code>
===== Directives Apache =====
<code>
ServerAlias autoconfig.*
RewriteEngine On
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^discover\.my-service\.com$
RewriteRule ^(.*)$ https://discover.my-service.com$1 [R=301]
</code>
===== Certificat SSL =====
Remember to get a SIGNED SSL Cert.
===== Autoconfig pour Thunderbird =====
<code XML config-v1.1.xml>
<?xml version="1.0" encoding="UTF-8"?>
<clientConfig version="1.1">
<emailProvider id="domain.tld">
<domain>domain.tld</domain>
<displayName>Mail</displayName>
<displayShortName>Mail</displayShortName>
<incomingServer type="pop3">
<hostname>mailserver.domain.tld</hostname>
<port>995</port>
<socketType>SSL</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
<pop3>
<leaveMessagesOnServer>true</leaveMessagesOnServer>
<downloadOnBiff>true</downloadOnBiff>
<daysToLeaveMessagesOnServer>10</daysToLeaveMessagesOnServer>
</pop3>
</incomingServer>
<incomingServer type="imap">
<hostname>mailserver.domain.tld</hostname>
<port>993</port>
<socketType>SSL</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</incomingServer>
<outgoingServer type="smtp">
<hostname>mailserver.domain.tld</hostname>
<port>587</port>
<socketType>STARTTLS</socketType>
<authentication>password-cleartext</authentication>
<username>%EMAILADDRESS%</username>
</outgoingServer>
</emailProvider>
</clientConfig>
</code>

View File

@@ -0,0 +1,67 @@
====== Configurer ipv6 sur son site ======
{{ :dummy.png?75x75|Nom de la section}}
^ Terme ^ Description | Exemple |
| YOUR_IPV6 | Il s'agit de ladresse IPv6 assignée à votre service | 2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:yyyy |
| IPv6_PREFIX | Il s'agit du préfixe (ou netmask) de votre bloc IPv6, généralement de 64 | 2001:xxxx:xxxx:xxxx::/64\\ ou 64 |
| IPv6_GATEWAY | Il s'agit de la passerelle de votre bloc IPv6 | 2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:zzzz |
| INT_NET | Il s'agit de l'interface réseau utilisée pour communiquer avec Internet | eth0\\ enp1s0 |
**YOUR_IPV6** est fourni par le prestataire associée à votre hébergement. Il doit être disponible dans votre espace client.
Quelques exemples :
| {{informatique:serveur:web-linux-apache:pasted:20210220-084138.png}} |
| {{informatique:serveur:web-linux-apache:pasted:20210220-084202.png}} |
De manière générale, l'adresse **IPv6_GATEWAY** se calcule depuis l'adresse **YOUR_IPV6**. Il faut prendre les 28 premiers bits et ajouter **00:0:0:0:1**. Par exemple **2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:yyyy** devient **2001:xxxx:xxxx::xx00:0:0:0:1**
----
Pour **Debian**, il est nécessaire de créer un nouveau fichier **interfaces** pour une prise en compte permanente.
Éditer le fichier ''/etc/network/interfaces.d/51-cloud-init-ipv6.cfg'' ou équivalent avec les valeurs suivantes.
Remplacer les éléments génériques (cest-à-dire YOUR_IPV6, IPV6_PREFIX et IPV6_GATEWAY) ainsi que linterface réseau (INT_NET) par vos valeurs personnalisées.
<code>
auto INT_NET
iface INT_NET inet6 static
mtu 1500
address YOUR_IPV6
netmask IPV6_PREFIX
post-up /sbin/ip -6 route add IPV6_GATEWAY dev INT_NET
post-up /sbin/ip -6 route add default via IPV6_GATEWAY dev INT_NET
pre-down /sbin/ip -6 route del default via IPV6_GATEWAY dev INT_NET
pre-down /sbin/ip -6 route del IPV6_GATEWAY dev INT_NET
</code>
exemple concret
<code>
auto enp1s0
iface enp1s0 inet6 static
mtu 1500
address 2001:41d1:1:8241::1
netmask 64
post-up /sbin/ip -6 route add 2001:41d1:1:8200:0:0:0:1 dev enp1s0
post-up /sbin/ip -6 route add default via 2001:41d1:1:8200:0:0:0:1 dev enp1s0
pre-down /sbin/ip -6 route del default via 2001:41d1:1:8200:0:0:0:1 dev enp1s0
pre-down /sbin/ip -6 route del 2001:41d1:1:8200:0:0:0:1 dev enp1s0
</code>
Il suffit de redémarrer l'interface réseau :
systemctl restart networking
Pour tester, utiliser un **ping** en ipv6 :
ping abonnel.fr -6
----
Déclarer l'adresse IPv6 dans la zone DNS du site concerné, dans un enregistrement **AAAA**.
{{informatique:serveur:web-linux-apache:pasted:20210220-085027.png}}

View File

@@ -0,0 +1,13 @@
====== Configurer PHP FPM ======
{{ :dummy.png?75x75|Nom de la section}}
La configuration de PHP FPM s'effectue dans le fichier ''/etc/php/7.4/fpm/php.ini''
===== timezone =====
date.timezone = "Europe/Paris"
===== Prise en compte des modifications =====
systemctl restart apache2 php7.4-fpm

View File

@@ -0,0 +1,12 @@
====== Configurer plusieurs versions de PHP avec Apache 2.4 ======
{{ :dummy.png?75x75|Configurer plusieurs versions de PHP avec Apache 2.4}}
Ce tutoriel va vous aider à configurer plusieurs versions de PHP avec Apache avec une distribution Linux Debian 10.6.
Ce tutoriel décrit l'installation et la configuration de deux //VirtualHost// dans Apache avec un chacun une version de PHP différente. La première configuration fonctionnera avec PHP5.6 et l'autre avec PHP 7.4. vous pouvez utiliser autant de version PHP avec Apache sans pré requis supplémentaire, il suffit d'appliquer le principe enseigné dans ce tutoriel.
Ce tutoriel a été testé sur **Debian 10.6 pour ARM (Raspbian / Raspberry OS)** le **12/10/2020**.
{{page>informatique:serveur-web-linux-apache:php#installer-une-seconde-version-de-php}}

View File

@@ -0,0 +1,60 @@
====== Créer un groupe d'utilisateurs pour un site Web ======
<note tip>Cet article fait partie de la collection [[informatique:applications:configurer_un_site_web_apache_2:index]]</note>
{{page>informatique:linux:applications:configurer_un_site_web_apache_2:configuration_utilisee}}
{{page>informatique:serveur-web-linux-apache:definitions_et_contexte}}
Avant de créer un site dans la configuration Apache 2, vous devez déterminer un groupe d'utilisateurs (administrateurs, développeurs, opérateurs...) qui devront accéder aux fichiers du site.
Le bonne pratique est de créer un groupe d'utilisateur qui sera en charge du maintient du site web. Même pour un seul utilisateur cette méthode est valable et __évolutive__. Il est vivement conseillé de créer __un groupe par site Internet__.
===== Créer un groupe =====
<code>
sudo groupadd www-perdu.com
</code>
===== Associer l'utilisateur au groupe =====
<code>
sudo usermod -a -G www-perdu.com chloe
</code>
Si vous êtes logué avec le compte ''chloe'', il faut se déconnecter et connecter pour que ''usermod'' soit pris en compte.
===== Créer les dossiers du site =====
Je vais créer le dossier du site dans ''/var/www''. Les droits seront automatiquement donnés à ''root'' afin d'empêcher n'importe qui d'aller modifier le contenu.
<code>
sudo mkdir -p /var/www/perdu.com/www
sudo chown -R root /var/www/perdu.com
</code>
===== Modifier le groupe des dossiers du site =====
L'objectif est de données les droits au groupe ''www-perdu.com'' et de restreindre l'accès en lecture seule aux autres groupes d'utilisateurs.
<code>
sudo chgrp -R www-perdu.com /var/www/perdu.com
sudo chmod -R 775 /var/www/perdu.com
</code>
Lorsque qu'un fichier est créé, afin de garder la priorité au groupe de développeurs, j'attribue l'option ''s''
<code>
sudo chmod -R g+s /var/www/perdu.com
</code>
S'il est nécessaire d'autoriser Apache à modifier le contenu d'un dossier, par exemple ''uploads'', je modifierai les droits en attribuant le groupe à ''www-data'' (groupe d'utilisation d'Apache 2).
<code>
sudo chown -R www-data /var/www/perdu.com/www/uploads
</code>
--- //[[user:cedricabonnel]] 2019/07/26 18:18//

View File

@@ -0,0 +1,62 @@
===== Configuration du site avec sous-domaine autre que www avec Apache 2.4 =====
{{tag>"serveur web"}}
La configuration du site Internet s'effectue dans un fichier de configuration.
* Il accepte une connexion sur le port http (80) pour rediriger les visiteurs vers le https (443).
* Il permet une connexion de certbot / let's encrypt pour obtenir ou renouveler un certificat SSL sur le port 80.
* Il permet d'avoir des logs dans des dossiers séparés
Voici les paramètres qu'il faut veiller à modifier :
^ fichier de configuration du site | /etc/apache2/sites-available/100-com.perdu-podcast.divers.conf |
^ fichier log accès | ${APACHE_LOG_DIR}/divers.perdu-podcast.com-access.log |
^ fichier log erreurs | ${APACHE_LOG_DIR}/divers.perdu-podcast.com-error.log |
^ dossier racine du site | /home/www-master/perdu-podcast.com/divers |
^ dossier certificats SSL | /etc/letsencrypt/live/divers.perdu-podcast.com/ |
^ Fichier de configuration SSL | /etc/letsencrypt/options-ssl-apache.conf\\ /etc/apache2/redirect_80_2_443.conf |
<code>
<VirtualHost *:80>
ServerName divers.perdu-podcast.com
# Redirection des URL vers https
Include /etc/apache2/redirect_80_2_443.conf
</VirtualHost>
<VirtualHost *:443>
ServerName divers.perdu-podcast.com
DocumentRoot /home/www-master/perdu-podcast.com/divers
<Directory /home/www-master/perdu-podcast.com/divers>
Options -Indexes
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Location />
Require all granted
</Location>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/divers.perdu-podcast.com-error.log
CustomLog ${APACHE_LOG_DIR}/divers.perdu-podcast.com-access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/divers.perdu-podcast.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/divers.perdu-podcast.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</code>

View File

@@ -0,0 +1,12 @@
====== Définitions et contexte ======
Vous trouverez des informations personnelles qu'il faudra adapter suivant votre contexte.
^ dossier racine du site Web | ''/var/www/perdu.com'' |
^ dossiers modifiables par Apache2 | ''/var/www/perdu.com/www/uploads'' |
^ les fichiers de configuration du site | ''/etc/apache2/sites-available/100.com.perdu.conf'' |
^ hostname et alias | ''perdu.com'' et ''www.perdu.com'' |
^ personnes gestionnaire du site | ''chloe'' |
^ groupe de développeurs | ''www-perdu.com'' |
^ fichier log accès | ''/var/www/perdu.com/logs/http-info-access.log'' |
^ fichier log erreurs | ''/var/www/perdu-com/logs/http-info-error.log'' |

View File

@@ -0,0 +1,26 @@
====== Directives Apache 2 ======
{{ :dummy.png?75x75|Options possibles pour la configuration d'un site}}
===== MultiViews =====
Les vues multiples ("**multiviews**") à contenu négocié permet une recherche de correspondance de modèle de nom de fichier implicite, et fait son choix parmi les résultats.
> <code>https://a5l.fr/login => https://a5l.fr/login.php</code>
Cette option est ignorée si elle est définie en tout autre endroit qu'une section **<Directory>**.
La directive [[https://httpd.apache.org/docs/current/content-negotiation.html#page-header|Multiviews]] à les effets suivants : Si le serveur reçoit une requête pour **/un/répertoire/foo**, et si **/un/répertoire/foo** n'existe pas, le serveur parcourt le répertoire à la recherche de tous les fichiers de nom **foo.***, et simule véritablement une correspondance de type qui nomme tous ces fichiers en leur assignant les mêmes type de média et codage de contenu qu'ils auraient eus si le client avait requis l'un d'entre eux avec son nom complet. Il choisit ensuite le fichier qui correspond le mieux au profile du client, puis renvoie le document.
Exemple de paramétrage dans la configuration Apache :
<code INI>
<Directory /var/www/html>
Options -Indexes +FollowSymLinks +MultiViews
AddType application/x-httpd-php .php
AllowOverride All
Require all granted
</Directory>
</code>
--

View File

@@ -0,0 +1,93 @@
====== dolibarr ======
{{ :dummy.png?75x75|dolibarr}}
====== Sauvegarde ======
<code>
mysqldump -u user -pyourpass --result-file=mysqldump_databasename_version_date.sql databasename| bzip2 > mysqldump_databasename_version_date.bz2
</code>
avec
* ''databasename'' le nom de la base de données utilisée par Dolibarr
* ''user'' le nom de l'utilisateur de la base de données ''databasename''
* ''yourpass'' le mot de passe associé au ''user''
* ''mysqldump_databasename_version_date'' le nom du fichier de sauvegarde
Certaines informations sont disponibles dans le fichier ''dolibarrdir/htdocs/conf/conf.php''
le nom du fichier de sauvegarde ''mysqldump_databasename_version_date'' peut se décomposer
* ''databasename'' le nom de la base de données utilisée par Dolibarr
* ''version'' la version de Dolibarr
* ''date'' la date de la sauvegarde au format YYYYMMDD
Exemple de script CRON :
<code>
30 1 * * * mysqldump databasename -h host -u user -pyourpass -l --single-transaction -K --add-drop-table=TRUE --tables -c -e --hex-blob --default-character-set=utf8 | bzip2 > mysqldump_databasename_3.6_`date +%Y%m%d`.sql.bz2
</code>
====== Mise à jour ======
Depuis un très ancienne version, une 3.6.2. Il y a des problèmes qui empêchent d'accéder à certaines fonctions de la version 12 (créer un nouveau **Tiers**...). J'avais le message 404 : //File not found//. J'ai dû effectuer une installation neuve, en figeant l'ancienne version.
====== Déploiement ======
Pour une **mise à jour** ou une **installation**, la procédure est identique.
Liste des versions disponibles sur [[https://sourceforge.net/projects/dolibarr/files/Dolibarr%20ERP-CRM/]]
<code>
cd /var/www
unzip dolibarr-11.0.4.zip
cp -r dolibarr-11.0.4/* dolibarr
rm -fr dolibarr-11.0.4
sudo apt install php-curl php-intl php-zip
sudo systemctl restart php-fpm apache2
</code>
Vérifier le paramétrage d'Apache dans un fichier ''/etc/apache2/sites-available/100-dolibarr.conf'' :
<code 100-dolibarr.conf>
Alias /dolibarr /var/www/dolibarr/htdocs
<Directory /var/www/dolibarr/htdocs>
# Options Indexes FollowSymLinks
DirectoryIndex index.php
# <IfModule mod_php5.c>
# AddType application/x-httpd-php .php
# php_flag magic_quotes_gpc Off
# php_flag track_vars On
# php_flag register_globals Off
# php_value include_path .
# </IfModule>
</Directory>
</code>
Pour une mise à jour, il faut effacer le fichier suivant :
<code>
sudo rm dolibarr/documents/install.lock
</code>
Puis se rendre sur la page http://serveur/dolibarr/install
====== Erreurs durant la mise à jour ======
<code>
Erreur DB_ERROR_1118: ALTER TABLE llx_cronjob ADD COLUMN entity integer DEFAULT 0;
Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
</code>
Il faut relancer la précédente étape de mise à jour.

View File

@@ -0,0 +1,7 @@
====== Forcer la réinitialisation d'un mot de passe utilisateur NextCloud ======
{{ :dummy.png?75x75|Forcer la réinitialisation d'un mot de passe utilisateur NextCloud}}
Pour réinitialiser le mot d'un utilisateur, il est possible de le faire en ligne de commande. Par exemple, pour réinitialiser le mot de passe du compte admin :
<code>
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin
</code>

View File

@@ -0,0 +1,68 @@
====== Configurer un site en http pour un sous-domaine spécifique ======
{{ :dummy.png?75x75|Nom de la section}}
Voici mes prises de notes pour configurer un site Internet **http**. Le configuration est destinée pour un site Internet dont le sous-domaine est **srv195**.
<code>
Configurer Apache 2 pour un site Internet
http://srv195.acego.fr
</code>
===== Pré requis =====
La configuration du site Internet s'effectue dans un fichier de configuration.
* Il accepte une connexion sur le port http 80.
* Il accepte les connexions vers le ''srv195.acego.fr''.
* Il permet d'avoir des logs dans des dossiers séparés
{{page>informatique:serveur-web-linux-apache:definitions_et_contexte}}
===== Configuration Apache 2 =====
On configure un site web à partir d'un fichier ''conf'' qui contient des directives. Dans notre exemple de fichier ''conf'', il sera configuré le site Internet ''srv195.acego.fr''.
Le fichier à créer est ''/etc/apache2/sites-available/100-fr.acego.srv195.conf'' :
<code>
<VirtualHost *:80>
ServerName srv195.acego.fr
Protocols h2 http/1.1
DocumentRoot /var/www/acego.fr/srv195
<Directory /var/www/acego.fr/srv195>
Options -Indexes
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Location />
Require all granted
</Location>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/srv195.acego.fr-error.log
CustomLog ${APACHE_LOG_DIR}/srv195.acego.fr-access.log combined
</VirtualHost>
</code>
===== Activer la configuration du site =====
On active la configuration du site en utilisant le binaire ''a2ensite''
<code>
sudo a2ensite 100-fr.acego.srv195
</code>
Et si tout se passe bien, on recharge la configuration d'Apache 2 sans avoir besoin de redémarre le service :
<code>
sudo service apache2 reload
</code>
--- //[[user:cedricabonnel]] 2020/05/03 16:59//

View File

@@ -0,0 +1,66 @@
====== Apache 2 : reverse-proxy : configurer un site http avec sous-domaine en www ======
Voici mes prises de notes pour configurer un reverse-proxy avec Apache 2.
<code>
Configurer Apache 2
http://www.abonnel.fr <==[reverse proxy ]==> 51.23.41.1
</code>
===== Pré requis =====
La configuration du site Internet s'effectue dans un fichier de configuration.
* Il accepte une connexion sur le port http 80.
* Il redirige vers un hébergement par http avec adresse IP
{{page>informatique:linux:solutions_linux:configurer_un_site_web_apache_2:definitions_et_contexte_proxy}}
===== Configuration Apache 2 =====
On configure un site web à partir d'un fichier ''conf'' qui contient des directives. Dans notre exemple de fichier ''conf'' configure le site Internet ''extra.perdu.com''.
Le fichier à créer est ''/etc/apache2/sites-available/100.com.perdu.extra.conf'' :
<code>
<VirtualHost *:80>
ServerName extra.perdu.com
ProxyPass /.well-known/acme-challenge !
Alias /.well-known/acme-challenge /var/www/html/.well-known/acme-challenge
<Directory "/var/www/html/.well-known/acme-challenge">
Options None
AllowOverride None
Require all granted
AddDefaultCharset off
</Directory>
ProxyPreserveHost On
ProxyPass "/" "http://103.224.182.253/"
ProxyPassReverse "/" "http://103.224.182.253/"
</VirtualHost>
</code>
Afin de prévenir notre paramétrage futur en https, la directive ''RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*'' permet de ne pas rediriger les appels pour Let's Encrypt (http/301). En effet, Let's encrypt n'accepte que des status http/200 lorsque nous mettrons en œuvre l'ajout d'un certificat SSL.
Cette directive peut-être laissée active, même si vous ne prévoyez pas d'ajouter une certificat SSL avec Let's Encrypt.
===== Activer la configuration du site =====
On active la configuration du site en utilisant le binaire ''a2ensite''
<code>
sudo a2ensite 100-com.perdu.extra.conf
</code>
Et si tout se passe bien, on recharge la configuration d'Apache 2 sans avoir besoin de redémarre le service :
<code>
sudo service apache2 reload
</code>
--- //[[user:cedricabonnel]] 2019/07/26 18:54//

View File

@@ -0,0 +1,79 @@
====== Configurer un site www en http ======
Voici mes prises de notes pour configurer un site Internet **http**. Le configuration est destinée pour un site Internet commençant par **www**.
<code>
Configurer Apache 2 pour un site Internet
http://www.abonnel.fr
</code>
===== Pré requis et objectifs =====
La configuration du site Internet s'effectue dans un fichier de configuration.
* Il accepte une connexion sur le port http 80.
* Il permet des connexions sans le ''www'' pour être redirigé vers le ''www''.
* Il permet d'avoir des logs dans des fichiers séparés
===== Configuration Apache 2 =====
On configure un site web à partir d'un fichier ''conf'' qui contient des directives. Dans notre exemple de fichier ''conf'', il sera configuré le site Internet ''abonnel.fr'' et son alias ''www.abonnel.fr''.
Le fichier à créer est ''/etc/apache2/sites-available/100-fr.abonnel.conf''.
A noter qu'afin de prévenir notre paramétrage futur en **https**, la directive ''RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*'' permet de ne pas rediriger les appels pour Let's Encrypt (http/301). En effet, Let's encrypt n'accepte que des status http/200 lorsque nous mettrons en œuvre l'ajout d'un certificat SSL.
Cette directive peut-être laissée active, même si vous ne prévoyez pas d'ajouter une certificat SSL avec Let's Encrypt.
<code>
<VirtualHost *:80>
ServerName abonnel.fr
ServerAlias www.abonnel.fr
Protocols h2 http/1.1
DocumentRoot /var/www/abonnel.fr/www
<Directory /var/www/abonnel.fr/www>
Options -Indexes +MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Location />
Require all granted
</Location>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/abonnel.fr-error.log
CustomLog ${APACHE_LOG_DIR}/abonnel.fr-access.log combined
# Redirection des URL sans www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
</code>
===== Activer la configuration du site =====
On active la configuration du site en utilisant le binaire ''a2ensite''
<code>
sudo a2ensite 100-fr.abonnel.conf
</code>
Et si tout se passe bien, on recharge la configuration d'Apache 2 sans avoir besoin de redémarre le service :
<code>
sudo service apache2 reload
</code>

View File

@@ -0,0 +1,146 @@
====== Apache 2 : proxy-reverse : configurer un site en https pour un sous-domaine ======
Voici mes prises de notes pour configurer un site Internet **http**. Le configuration est destinée pour un site Internet commençant par **www**.
<code>
Configurer Apache 2
http://www.abonnel.fr ==> https://www.abonnel.fr <==[reverse-proxy]==> 54.1.23.4
</code>
===== Pré requis =====
Je viens de demander un [[ssl-let-s_encrypt-certbot-auto|certificat SSL]] pour le site Internet. Il faut configurer Apache 2 pour que :
* les demandes en https utilisent le certificat SSL
* toutes les visites en http soit redirigé en https
====== Configurer ======
Je complète le fichier de configuration ''/etc/apache2/sites-available/100-com.perdu.extra.conf''. J'ajoute un bloc de redirection vers ''https'' :
<code>
RewriteEngine On
RewriteCond %{SERVER_NAME} =extra.perdu.com
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</code>
Puis, j'ajoute un bloc pour la configuration SSL / https. Il s'agit d'un copier/coller de la configuration http.
J'effectue quelques modifications :
* [[linux:solutions_linux:configurer_un_site_web_apache_2:ErrorLog]] et [[linux:solutions_linux:configurer_un_site_web_apache_2:CustomLog]] pour lécriture des fichiers logs
* [[linux:solutions_linux:configurer_un_site_web_apache_2:RewriteRule]] pour la redirection des URL sans www
* Ajout des options SSL
* Ajout de la gestion des certificats
<code>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName extra.perdu.com
ProxyPreserveHost On
ProxyPass "/" "http://103.224.182.253/"
ProxyPassReverse "/" "http://103.224.182.253/"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/extra.perdu.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/extra.perdu.com/privkey.pem
</VirtualHost>
</IfModule>
</code>
Les options SSL sont à créer une seule fois sur le serveur. Ces options sont communes à tous les sites Internet que je configure.
Les options dans ''/etc/letsencrypt/options-ssl-apache.conf'' sont les suivantes :
<code>
SSLEngine on
# intermediate configuration, tweak to your needs
SSLProtocol -ALL +TLSv1.2
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:!RC4:HIGH:!MD5:!aNULL:!EDH
SSLHonorCipherOrder on
SSLCompression on
#SSLSessionTickets off
# -- Securité supplémentaire
SSLOptions +StrictRequire
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"
# Always ensure Cookies have "Secure" set (JAH 2012/1)
Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"
</code>
----
Ce qui donne une configuration globale suivante :
<code>
<VirtualHost *:80>
ServerName extra.perdu.com
# ProxyPass devient obsolète avec RewriteRule
ProxyPass /.well-known/acme-challenge !
Alias /.well-known/acme-challenge /var/www/html/.well-known/acme-challenge
<Directory "/var/www/html/.well-known/acme-challenge">
Options None
AllowOverride None
Require all granted
AddDefaultCharset off
</Directory>
# Proxy* deviennent obsolète avec Rewrite*
ProxyPreserveHost On
ProxyPass "/" "http://103.224.182.253/"
ProxyPassReverse "/" "http://103.224.182.253/"
RewriteEngine On
RewriteCond %{SERVER_NAME} =info.mindcast.fr
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName extra.perdu.com
ProxyPreserveHost On
ProxyPass "/" "http://103.224.182.253/"
ProxyPassReverse "/" "http://103.224.182.253/"
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/extra.perdu.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/extra.perdu.com/privkey.pem
</VirtualHost>
</IfModule>
</code>
====== Recharger ======
Après ces modifications, je recharge la configuration de Apache 2 :
<code>
sudo service apache2 reload
</code>
====== Liens ======
https://stackoverflow.com/questions/20406845/proxy-error-502-the-proxy-server-received-an-invalid-response-from-an-upstream

View File

@@ -0,0 +1,194 @@
====== Configurer un site en https ======
{{ informatique:serveur:web-linux-apache:pasted:20210121-012842.png?300}}
Votre certificat a été généré grâce à **Certbot**. Il faut désormais configurer **Apache** pour utiliser de manière systématique ce certificat.
Voici mes prises de notes pour passer un site Internet **http** en **https**. Le configuration est destinée pour un site Internet dont le sous-domaine est **www**. Il est très facilement adaptable pour un site avec un sous-domaine différent.
<code>
Configurer Apache 2
http://www.perdu.com ==> https://www.perdu.com
</code>
Je viens de demander un certificat SSL pour le site Internet ''perdu.com''. Il faut configurer Apache 2 pour que :
* les demandes en https utilisent le certificat SSL
* toutes les visites en http soit redirigées en https
====== Configurer ======
Je complète le fichier de configuration ''/etc/apache2/sites-available/100-com.perdu.conf''. J'ajoute un bloc de redirection vers ''https'' :
<code>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</code>
Puis, j'ajoute un bloc pour la configuration SSL / https. Il s'agit d'un copier/coller de la configuration http.
J'effectue quelques modifications :
* [[linux:solutions_linux:configurer_un_site_web_apache_2:ErrorLog]] et [[linux:solutions_linux:configurer_un_site_web_apache_2:CustomLog]] pour lécriture des fichiers logs
* [[linux:solutions_linux:configurer_un_site_web_apache_2:RewriteRule]] pour la redirection des URL sans www
* Ajout des options SSL
* Ajout de la gestion des certificats
<code>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName perdu.com
ServerAlias www.perdu.com
Protocols h2 http/1.1
DocumentRoot /var/www/perdu.com/www
<Directory /var/www/perdu.com/www>
Options -Indexes +MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Location />
Require all granted
</Location>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/www.perdu.com-https-error.log
CustomLog ${APACHE_LOG_DIR}/www.perdu.com-https-access.log combined
SSLCertificateFile /etc/letsencrypt/live/www.perdu.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.perdu.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.perdu.com/chain.pem
</VirtualHost>
</IfModule>
</code>
Les options SSL sont à créer une seule fois sur le serveur. Ces options sont communes à tous les sites Internet que je configure.
Les options dans ''/etc/apache2/mods-enabled/ssl.conf'' sont les suivantes :
<code>
# Intermediate configuration
SSLProtocol -ALL +TLSv1.2
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:!RC4:HIGH:!MD5:!aNULL:!EDH
SSLHonorCipherOrder on
#SSLSessionTickets off
SSLOptions +StrictRequire
SSLCompression off
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000"
# Always ensure Cookies have "Secure" set (JAH 2012/1)
Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"
</code>
Il convient de désactiver ces options dans le fichier ''/etc/letsencrypt/options-ssl-apache.conf''
----
Ce qui donne une configuration globale suivante :
<code>
<VirtualHost *:80>
ServerName perdu.com
ServerAlias www.perdu.com
Protocols h2 http/1.1
DocumentRoot /var/www/perdu.com/www
<Directory /var/www/perdu.com/www>
Options -Indexes +MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Location />
Require all granted
</Location>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/www.perdu.com-http-error.log
CustomLog ${APACHE_LOG_DIR}/www.perdu.com-http-access.log combined
# Redirection des URL vers https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge/.*
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName perdu.com
ServerAlias www.perdu.com
Protocols h2 http/1.1
DocumentRoot /var/www/perdu.com/www
<Directory /var/www/perdu.com/www>
Options -Indexes
AllowOverride all
Order allow,deny
allow from all
</Directory>
<Location />
Require all granted
</Location>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/www.perdu.com-https-error.log
CustomLog ${APACHE_LOG_DIR}/www.perdu.com-https-access.log combined
SSLCertificateFile /etc/letsencrypt/live/www.perdu.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.perdu.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.perdu.com/chain.pem
</VirtualHost>
</IfModule>
</code>
====== Recharger ======
Après ces modifications, je recharge la configuration de Apache 2 :
<code>
sudo service apache2 reload
</code>
====== Zone DNS ======
Il est possible d'ajouter une option dans la zone DNS pour sécuriser l'authenticité de l'organisme de certification.
Il s'agit du //DNS Certification Authority Authorization (CAA)// à activer grâce à un enregistrement **CAA** de la zone DNS :
www IN CAA 128 issue "letsencrypt.org"
perdu.com. IN CAA 128 issue "letsencrypt.org"
====== Tester ======
Vous pouvez tester votre site grâce à l'outil https://www.ssllabs.com/ssltest/analyze.html

View File

@@ -0,0 +1,73 @@
====== Serveur Web Linux Apache ======
{{ informatique:serveur:web-linux-apache:pasted:20201225-185814.png?75x75|Serveur Web Linux Apache}}
Je vous invite à savoir comment faire pour installer et configurer un serveur **Web Liuux Apache**. Ceci inclus la configuration des fichiers et démarrer, arrêter et activer votre serveur httpd / Apache 2 Linux.
L'association des mots **Linux**, **Apache**, **MariaDB** et **PHP** donne l'acronyme **LAMP**. **Linux** est le __système d'exploitation__, ou OS, qui permet de faire cohabiter plusieurs programmes et produire un résultat. **Apache** est un programme qui fonctionne de manière continue afin de __fournir des pages Internet__ aux visiteurs. Sans **PHP** associé, les pages seraient statiques, c'est-à-dire que les pages fournies ressembleraient à du texte, sans que le texte puisse s'adapter. **PHP** permet de __rendre plus intelligent__ le site. Et enfin, **MariaDB** est __une base de données__. C'est un programme qui rassemble des données par thème et peuvent être triées, extraites et modifiées via des algorithmes précis.
Je vous propose une installation de ces applications, ainsi qu'un paramétrage qui vous permettra d'avoir une solution qui tient la route. C'est un premier pas afin d'avoir une solution clé en main avec les bons paramètres.
Les prérequis qui ne seront pas abordés, sont les suivants :
* **Debian 10** est installé sur un serveur VPS, serveur virtuel ...
* un accès **ssh** au serveur
* quelques notions de **BASH**
===== Table des matières =====
* [[.:|Introduction]]
* [[.:preparer-le-serveur-linux|]]
**Serveur LAMP à installer**
* Apache
* [[.:installer-apache-2-4|]]
* PHP
* [[.:installer-php-fpm|]]
* [[.:configurer-php-fpm|]]
* [[.:modifier-la-page-index-apache|]]
* [[.:configurer-apache2-pour-php-fpm|]]
* Apache, optimisations
* [[.:http_www_apache2]]
* [[.:http_apache2]]
* [[.:directives-apache2-serveur-configuration-repertoire]]
* [[.:www-data-droits]]
* [[.:accelerer-le-traitement-php|]]
* PHP, options
* [[.:php-installer-un-second-moteur|]]
* SGBD : MariaDB
* [[informatique:linux:applications:sgbd:mariadb:installer-mariadb-server]]
* [[informatique:serveur:web-linux-apache:reinitialiser-le-mot-de-passe-root-mysql]]
* [[informatique:serveur:web-linux-apache:installer-phpmyadmin]]
* Apache, https
* [[informatique:serveur:web-linux-apache:ssl-let-s-encrypt-certbot]]
* [[.:https_www_apache2|]]
* Réseau
* [[informatique:serveur:web-linux-apache:configurer-ipv6-sur-son-site]]
**maintenance**
* [[informatique:serveur:web-linux-apache:comment_demenager_un_hebergement_web_sans_trop_de_perturbations]]
**applications web**
* [[informatique:serveur:web-linux-apache:wordpress]]
* [[informatique:serveur:web-linux-apache:nextcloud]]
**articles obsolètes**
* [[.:lamp|]]
* [[informatique:serveur:web-linux-apache:ssl-let-s_encrypt-certbot-auto]]
* [[informatique:serveur:web-linux-apache:configurer-plusieurs-versions-de-php-avec-apache-2-4]]
* [[informatique:serveur:web-linux-apache:https_proxy_apache2]]

View File

@@ -0,0 +1,129 @@
====== Installer Lutim ======
Lutim est codé en Perl, pour le faire fonctionner il est nécessaire dinstaller Carton, un gestionnaire de modules Perl.
<code>
sudo cpan Carton
</code>
Pour créer les aperçus des images après upload, il est nécessaire dinstaller le logiciel ImageMagick et le module Perl qui correspond.
<code>
sudo apt-get install perlmagick
</code>
Créez un compte utilisateur ''lutim'' ainsi que le dossier ''/var/www/lutim'' ou ''/home/lutim/www'' dans lequel seront copiés les fichiers avec les droits daccès correspondants.
<code>
useradd lutim
groupadd lutim
mkdir -p /home/lutim/www
chown -R lutim:lutim /home/lutim
</code>
Téléchargez les fichiers de la dernière version sur le dépôt officiel (« Download zip » en bas à droite ou bien en ligne de commande avec git), copiez son contenu dans le dossier /var/www/lutim et attribuez les droits des fichiers à lutilisateur lutim
<code>
sudo apt-get install git
cd /home/lutim/www
sudo git clone https://git.framasoft.org/luc/lutim.git
chown lutim:lutim -R /home/lutim/www
</code>
Connectez-vous avec lutilisateur lutim : ''su lutim -s /bin/bash'' et lancez la commande dinstallation des dépendances depuis le dossier ''/home/lutim/www''
<code>
cd /home/lutim/www
su lutim -s /bin/bash
carton install
</code>
Maintenant que tout est prêt, modifiez le fichier de configuration de Lutim lutim.conf avec votre éditeur de texte préféré sur le modèle du fichier lutim.conf.template.
Par défaut le logiciel est configuré pour écouter sur le port 8080 de ladresse 127.0.0.1 (localhost) et avec lutilisateur www-data quil faut donc ici remplacer par lutim
cp lutim.conf.template lutim.conf
vim lutim.conf
Lensemble des paramètres sont facultatifs à lexception du paramètre contact (pensez bien à le configurer et à le décommenter) mais il peut être utile de chiffrer systématiquement les images : always_encrypt => 1
Lutim en tant que service
À présent, le serveur tournera lorsque quon lancera en tant que root cette commande :
carton exec hypnotoad script/lutim
Pour éviter de devoir relancer le serveur à la main à chaque redémarrage du serveur, on va donc lancer Lutim sous forme de service. Il faut pour ça copier le script utilities/lutim.init dans le fichier /etc/init.d/lutim, le rendre exécutable puis copier le fichier utilities/lutim.default dans /etc/default/lutim.
cp utilities/lutim.init /etc/init.d/lutim
cp utilities/lutim.default /etc/default/lutim
Il faut maintenant modifier /etc/default/lutim pour y mettre le chemin dinstallation de notre Lutim (/var/www/lutim si vous navez pas changé le chemin préconisé par ce tutoriel)
vim /etc/default/lutim
chmod +x /etc/init.d/lutim
chown root:root /etc/init.d/lutim /etc/default/lutim
4 Pailler
À ce stade, si tout sest bien passé, lorsque vous exécutez la commande service lutim start, Lutim est pleinement fonctionnel. Vous navez quà vous rendre sur lURL http://127.0.0.1:8080 pour pouvoir lutiliser.
Nous allons maintenant configurer Lutim pour le rendre accessible depuis un nom de domaine avec Nginx (vous pouvez également utiliser Apache ou Varnish puisque seule la fonctionnalité de proxy inverse nous intéresse).
Nginx
Installez le paquet :
apt-get install nginx
Créez le fichier de configuration de votre domaine /etc/nginx/sites-available/votre-nom-de-domaine pour y mettre ceci (en remplaçant « votre-nom-de-domaine ») et le port 8080 si vous lavez changé dans la configuration de Lutim :
server {
listen 80 ;
server_name votre-nom-de-domaine ;
root /var/www/lutim/public ;
# Important pour la confidentialité des utilisateurs
access_log off ;
error_log /var/log/nginx/lutim.error.log ;
# Paramètre important ! À adapter en fonction de la configuration de Lutim
client_max_body_size 40M ;
location ~* ^/(img|css|font|js)/ {
try_files $uri @lutim ;
add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT" ;
add_header Cache-Control "public, max-age=315360000" ;
}
location / {
try_files $uri @lutim ;
}
location @lutim {
proxy_pass http://127.0.0.1:8080 ;
proxy_set_header Host $host ;
proxy_set_header X-Real-IP $remote_addr ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
proxy_set_header X-Remote-Port $remote_port ;
proxy_redirect off ;
}
}
Activez votre fichier :
ln -s /etc/nginx/sites-available/votre-nom-de-domaine /etc/nginx/sites-enabled/votre-nom-de-domaine
Enfin, relancez nginx : service restart nginx
5 Tailler et désherber
La personnalisation de votre instance de Lutim passe par lédition à la main des fichiers css, images et javascript qui se trouvent dans le dossier public et des fichiers du dossier templates ou public pour les fichiers statiques..
Les fichiers de langues se trouvent dans le dossier lib/Lutim/I18N.
Pour pouvoir personnaliser et observer vos modifications en direct, il vous faudra stopper temporairement le service service lutim stop et le démarrer avec la commande :
carton exec morbo script/lutim
Le serveur écoutera alors sur http://127.0.0.1:3000 mais vous pouvez le faire écouter sur le même port quavec hypnotoad pour continuer à passer par Nginx pendant votre développement :
carton exec morbo script/lutim --listen=http://127.0.0.1:8080

View File

@@ -0,0 +1,62 @@
====== Installer Apache 2.4 ======
{{ informatique:applications:pasted:20201012-221943.png?75x75|Installer Apache 2.4}}
===== Installer Apache 2.4 =====
Pour avoir votre site Internet ou fournir des pages Web ou autres joyeusetés dans votre Intranet, il faut installer le service Apache 2.. On l'appelle également le **service Web** ou encore **httpd**. Il permet de recevoir des requêtes et répondre en envoyant des ressources (pages HTML, contenu XML, fichiers divers…). Les protocoles de communication en standard sont http (80/tcp) et https (443/tcp).
Les **paquets dinstallation** d'Apache sont disponibles dans les dépôts officiels et standard. Il suffit d'ouvrir un **Terminal** et dexécuter les commandes suivantes pour déployer la dernière version du serveur Web Apache.
<code>
sudo apt update
sudo apt install apache2 libapache2-mod-fcgid
</code>
Des **paquets supplémentaires** vous seront proposés, je vous invite à les accepter car ils vous seront utiles.
C'est l'heure de la vérification. Une fois l'installation terminée vous pouvez ouvrir un navigateur et saisir votre nom de serveur dans la barre d'URL. Par exemple, tapez l'URL ''http://localhost/'', le résultat doit apparaître.
{{informatique:applications:pasted:20201012-221943.png}}
===== Activer des modules complémentaires =====
Il existe des **__modules__** qui permettent d'agrémenter les possibilités offertes par Apache 2. Il n'est pas nécessaire de les activer si vous n'en avez pas besoin. N'activez des modules que si vous êtes sûre de les utiliser.
^ nom ^ description ^ activer ^ désactiver ^
^ UserDir | utilisé dans le configuration multi utilisateurs |''sudo a2enmod userdir'' | ''sudo a2dismod userdir'' |
^ rewrite | permet d'utiliser les directives de redirections | ''sudo a2enmod rewrite'' | ''sudo a2dismod rewrite'' |
^ headers | utilisé dans le configuration SSL | ''sudo a2enmod headers'' | ''sudo a2dismod headers'' |
^ ssl | permet d'utiliser le https | ''sudo a2enmod ssl'' | ''sudo a2dismod ssl'' |
^ remoteip | utiliser l'adresse IP du client derrière un proxy | ''sudo a2enmod remoteip'' | ''sudo a2dismod remoteip'' |
L'activation d'un ou plusieurs modules nécessite le redémarrage d'Apache 2 :
<code>
sudo service apache2 restart
</code>
===== Activer http/2 =====
Avec Debian 10, Apache 2.4 est déjà compilé avec l'option http/2. Il suffit de l'activer avec la commande suivante :
<code>
sudo a2enmod http2
</code>
Il faudra privilégier le **PHP FPM**, tel que nous l'abordons dans un prochain chapitre/
Côté exécution Apache 2.4, **mpm_prefork** est incompatible avec **http/2**, il faut lui préférer **mpm_event**
<code>
sudo a2dismod mpm_prefork
sudo systemctl restart apache2
sudo a2enmod mpm_event
sudo systemctl restart apache2
</code>
Afin, dans les **VirtualHost**, il sera nécessaire d'indiquer le protocole http/2
Protocols h2 http/1.1

View File

@@ -0,0 +1,38 @@
====== Installer une version de PHP FPM ======
Voici comment installer l'interpréteur //PHP//. Il peut être appelé en ligne de commande. Avec //Apache 2//, nous utiliserons la version PHP-FPM.
PHP-FPM (FastCGI Process Manager) est une alternative à PHP. C'est une mise en œuvre avec quelques fonctionnalités supplémentaires utiles pour les sites de toute taille, en particulier les sites les plus fréquentés.
Pour **l'installation de PHP**, j'utilise le dépôt de //Ondřej Surý//, dans lequel il y a les dernières versions pour //Debian//. Les processeurs pris en charge sont : ** ARM64**, **ARMhf**, **amd64** et **i386**.
<code BASH>
sudo apt install gnupg
# add key
wget -q http://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
</code>
<code BASH>
# add into sources.list
sudo echo "deb http://packages.sury.org/php/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/php.list
</code>
La commande suivante installe la dernière version disponible en date pour **php-fpm**.
<code BASH>
sudo apt update
sudo apt install php php-fpm
</code>
Mais nous préférerons installer une version bien précise de **php-fpm**. Ceci afin d'éviter une mise à jour majeure qui bloquerait des scripts.
<code BASH>
sudo apt update
sudo apt install php7.4 php7.4-fpm
</code>
La version actuelle est la version 7.4, ce qui nous permettra de vérifier le fonctionnement de **fpm** :
<code BASH>
sudo systemctl status php7.4-fpm
</code>

View File

@@ -0,0 +1,104 @@
====== Installer phpMyAdmin ======
Prérequis :
* PHP 7.4
* Apache 2.4
* MariaDB / MySQL 5.5 et plus
Les modules PHP **mysql**, **zip**, **gd** et **mbstring** sont nécessaires pour une utilisation optimale de l'application.
<code BASH>
sudo apt install php7.4-mysql php7.4-mbstring php-zip php-gd
</code>
Télécharger l'archive présent sur le site ''phpmyadmin.net'' permet d'avoir la dernière version stable en date. A l'heure où j'écris ces lignes, il s'agit de la version 5.0.2.
cd /var/www
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz
sudo tar -xzvf phpMyAdmin-5.0.2-all-languages.tar.gz
sudo rm phpMyAdmin-5.0.2-all-languages.tar.gz
cd phpMyAdmin-5.0.2-all-languages
sudo chgrp -R www-data .
sudo chmod -R g+s .
---
Configuration simple avec le fichier présent dans ``/var/html/phpMyAdmin-5.0.2-all-languages/config.inc.php``
<code PHP>
<?php
// use here a value of your choice at least 32 chars long
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = true;
</code>
---
configuration site avaible
sudo nano /etc/apache2/sites-available/100-phpmyadmin.conf
<code>
Alias /phpmyadmin /var/www/phpMyAdmin-5.0.2-all-languages
<Directory /var/www/phpMyAdmin-5.0.2-all-languages>
Options Indexes FollowSymLinks
DirectoryIndex index.php
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>
# Authorize for setup
<Directory /var/www/phpMyAdmin-5.0.2-all-languages/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>
# Disallow web access to directories that don't need it
<Directory /var/www/phpMyAdmin-5.0.2-all-languages/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /var/www/phpMyAdmin-5.0.2-all-languages/setup/lib>
Order Deny,Allow
Deny from All
</Directory>
</code>
----
Activer la configuration du site
sudo a2ensite 100-phpmyadmin
sudo systemctl reload apache2
---
Code intégral et interactif en cours de rédaction sur [[https://github.com/cedricAbonnel/server-web/scripts/install-phpmyadmin]]

View File

@@ -0,0 +1,11 @@
====== Installer Piwik ======
Télécharger l'archive dans un dossier temporaire :
<code>
cd /tmp
wget http://builds.piwik.org/piwik.zip
unzip piwik.zip
</code>

View File

@@ -0,0 +1,74 @@
====== [OBSOLÈTE] Linux Apache MySQL PHP sous Fedora Core 24 ======
<note important>Article OBSOLÈTE\\
Je vous conseille d'installer une solution Web sur un serveur **Debian**. [[informatique:serveur:web-linux-apache:]]</note>
Je vous présente (rapidement) comment installer un serveur Linux Apache MySQL PHP sous **Linux Fedora 24 Desktop**.\\
Toutes les commandes sont a exécuter dans une fenêtre **terminal**.
===== - Installer sous Linux =====
==== - Linux Fedora ====
On commence à par installer **Apache httpd**.
<code bash>
dnf install httpd
</code>
Ajouter des règles dans le firewall:
<code bash>
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
</code>
Activer Apache automatiquement :
<code bash>
sudo systemctl enable httpd.service
</code>
Démarrer le service apache :
<code bash>
sudo service httpd start
</code>
On continue avec l'installation du SGBD **MariaDB**.
<code bash>
sudo dnf install mariadb-server
</code>
Démarrage de MariaDB
<code bash>
sudo service mariadb start
</code>
Activer MariaDB automatiquement :
<code bash>
sudo systemctl enable mariadb
</code>
Sécuriser l'installation de MariaDB :
<code bash>
mysql_secure_installation
</code>
Et enfin, on installe l'interpréteur **PHP**
<code bash>
sudo dnf install php-mysql php-gd php-cli php-mbstring php-cli php-fpm
</code>
Activer PHP FPM automatiquement :
<code bash>
sudo systemctl enable php-fpm
</code>
Démarrer le service php-fpm et apache :
<code bash>
sudo service php-fpm start
</code>

View File

@@ -0,0 +1,24 @@
====== Modifier la page d'accueil standard d'Apache ======
Je propose une **page d'accueil standard du serveur Apache 2** en **PHP** qui permet d'afficher un ensemble d'informations avant de rediriger le visiteur.
<code XML>
<!DOCTYPE html>
<html>
<head>
<title>site non configuré pour <?PHP echo $_SERVER['HTTP_HOST'];?></title>
<meta charset="UTF-8" />
<meta http-equiv="refresh" content="10; url=https://www.abonnel.fr/" />
</head>
<body>
<h1>Serveur trouvé</h1>
<p>Les paramètres ne sont pas configurés pour le site <strong><?PHP echo $_SERVER['HTTP_HOST'];?></strong></p>
<p>Je vous redirige dans 10 secondes vers <a href="https://www.abonnel.fr/">ici</a>.</p>
</body>
</html>
</code>
Je remplace la page ''/var/www/html/index.html'' par ''/var/www/html/index.php''.

View File

@@ -0,0 +1,477 @@
====== NextCloud ======
===== - Installer NextCloud =====
==== - Pré requis ====
Environnement utilisé lors de la rédaction de ce document
* OS : Linux Debian 10
* HTTP : Serveur Apache 2.4
* SGBD : MariaDB
* Langage : PHP 7.4 exécuté en FPM avec Apache
==== - Modules PHP installés ====
<code>
sudo apt install php7.4-fpm php7.4-common
sudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl
sudo apt install php7.4-gmp php7.4-bcmath php7.4-imagick php7.4-xml php7.4-zip
sudo apt install imagemagick
</code>
==== - Configuration PHP ====
__Mémoire limite__
Dans la configuration par défaut, la valeur **memory_limit** n'est pas indiquée. Ajouter dans le fichier de configuration PHP FPM ''/etc/php/7.4/fpm/conf.d/25-memory.ini''.
<code>
memory_limit = 1G
</code>
==== - Base de données ====
Il faut créer un utilisateur et une base de données.
Dans cette section on définie :
* password_nextcloud : le mot de passe MariaDb ssociée
**Se connecter à mariaDb** :
<code>
mysql -uroot -p
</code>
<code SQL>
USE mysql;
</code>
**Créer la base de données **:
<code SQL>
CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
</code>
**Créer le compte de connexion ** et associer les droits sur la base de données :
<code SQL>
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON nextcloud.* TO 'user_nextcloud'@'localhost' IDENTIFIED BY '${password_nextcloud}';
quit;
</code>
===== - Configurer Apache 2.4 =====
Nous allons ajouter un dossier à notre configuration Web actuelle. L'accès se fera par http://www.abonnel.fr/cloud
Éditer le fichier de configuration Apache ''/etc/apache2/sites-available/100-fr.abonnel.www-cloud.conf''
<code>
Alias /cloud "/var/www/abonnel.fr/cloud/"
<Directory /var/www/abonnel.fr/cloud/>
Require all granted
AllowOverride All
Options +FollowSymLinks +MultiViews
MultiviewsMatch Any
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</code>
>> Prendre en considération la configuration
<code>
a2ensite 100-fr.abonnel.www-cloud.conf
</code>
>> Activer les modules Apache 2 suivants
<code>
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
</code>
>> Activer la gestion du SSL
<code>
sudo a2enmod ssl
sudo a2ensite default-ssl
</code>
>> Modifier les droits d'accès sur le dossier data
<code>
sudo chown -R www-data:www-data /var/www/abonnel.fr/cloud/
</code>
>> Télécharger le script
Le script est disponible à l'adresse https://nextcloud.com/install/#instructions-server
{{ informatique:applications:nextcloud_download.png |}}
<code>
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.3.tar.bz2
</code>
>> Déployer le script
<code>
sudo tar -xjf nextcloud-18.0.1.tar.bz2 -C /var/www/abonnel.fr/
sudo mv /var/www/abonnel.fr/cloud/nextcloud /var/www/abonnel.fr/cloud
</code>
>> Mettre les bons droits sur le dossiers
<code>
sudo chown -R www-data:www-data /var/www/abonnel.fr/cloud
</code>
>> Redémarrage du service Apache
<code>
service apache2 restart
</code>
>> Se connecter à NextCloud pour terminer le paramétrage
Utiliser l'URL qui permet d'accéder à NextCloud. Par exemple https://abonnel.fr/cloud
Lors du premier appel, le panneau de configuration initiale s'affiche.
==== - Configuration l'antivirus ====
apt-get install clamav clamav-daemon
==== - Configuration Redis et APCu ====
<code>
sudo apt install redis php7.4-redis php7.4-apcu
sudo apt install redis php8.1-redis php8.1-apcu
sudo apt install redis php8.3-redis php8.3-apcu
</code>
Il faut éditer le fichier de configuration NextCloud ''/var/www/abonnel.fr/cloud/config/config.php'' :
<code>
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\APCu',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),
</code>
Il faut associer le groupe ''redis'' au compte ''www-data''
sudo usermod -a -G redis www-data
Puis redémarrer Apache2
sudo systemctl restart apache2
=== Activation de memcache ===
<code>
apt install php7.4-memcache
</code>
Assurez-vous également que le module Memcache est activé dans votre fichier de configuration PHP. Vous devrez peut-être ajouter ou décommenter la ligne suivante dans les fichiers de configuration :
<code>
/etc/php/7.4/mods-available/memcache.ini:extension=memcache.so
/etc/php/8.3/mods-available/memcache.ini:extension=memcache.so
/etc/php/8.1/mods-available/memcache.ini:extension=memcache.so
</code>
<code>
/etc/php/7.4/cli/php.ini:apc.enable_cli=1
/etc/php/7.4/fpm/php.ini:apc.enable_cli=1
/etc/php/8.1/mods-available/apcu.ini:apc.enable_cli=1
/etc/php/8.3/mods-available/apcu.ini:apc.enable_cli=1
</code>
Après avoir apporté des modifications, redémarrez le service PHP-FPM pour prendre en compte les modifications :
<code>
sudo service php7.4-fpm restart
sudo service php8.1-fpm restart
sudo service php8.3-fpm restart
</code>
==== - Les options nextCloud ====
Pour modifier les options il faut éditer le fichier de configuration NextCloud ''/var/www/abonnel.fr/cloud/config/config.php''.
Une fois les modification effectuées, il faut exécuter le script suivant :
<code>
sudo -u www-data php /var/www/abonnel.fr/cloud/occ maintenance:update:htaccess
</code>
> Forcer les connexions en https
<code>
'forcessl' => true,
'forceSSLforSubdomains' => true,
</code>
> Mettre par défaut l'interface en Français et le code pays
<code>
'default_phone_region' => 'FR',
'default_language' => 'fr',
'default_locale' => 'fr_FR',
</code>
> Faire disparaître le index.php de l'URL
<code>
'overwrite.cli.url' => 'https://www.abonnel.fr/cloud',
'htaccess.RewriteBase' => '/cloud',
</code>
> Mise à jour en ligne de commande
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ upgrade
</code>
> Désactiver le mode maintenance
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --off
</code>
> Mettre à jour toutes les applications
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ app:update --all
</code>
==== - ajouter une tâche cron pour NextCloud ====
>> Éditer la configuration cron pour www-data
<code>
sudo crontab -u www-data -e
</code>
Dans la configuration, ajouter :
<code>
*/5 * * * * php -f /var/www/abonnel.fr/cloud/cron.php
</code>
==== - configurer fail2ban ====
Créer le fichier ''/etc/fail2banb/filter.d/nextcloud.conf'' qui définie les règles de détection d'erreur d'authentification.
<code>
[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"
</code>
Le fichier ''/etc/fail2ban/jail.d/nextcloud.local'' permet de renseigner l'environnement Nextcloud.
<code>
[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 86400
findtime = 43200
logpath = /var/www/abonnel.fr/cloud/data/nextcloud.log
</code>
Redémarrer, vérifier :
<code>
sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status nextcloud
</code>
==== - configurer mysql ====
Dans le fichier ''/etc/mysql/conf.d/mysql.cnf''
<code>
innodb_buffer_pool_size=1G
innodb_io_capacity=4000
</code>
==== - configurer php ====
Dans un fichier de configuration PHP-FPM, par exemple ''/etc/php/8.0/fpm/conf.d/25-nextcloud.ini''
<code>
memory_limit = 1G
pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18
opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
</code>
==== - Mettre à jour automatiquement NextCloud ====
>> Éditer la configuration cron pour www-data
<code>
sudo crontab -u www-data -e
</code>
Dans la configuration, ajouter :
<code>
0 3 * * * php /var/www/abonnel.fr/updater/updater.phar --no-interaction
</code>
==== - Mettre à jour automatiquement les applications NextCloud ====
>> Éditer la configuration cron pour www-data
<code>
sudo crontab -u www-data -e
</code>
Dans la configuration, ajouter :
<code>
* 10 */1 * * php -f /var/www/abonnel.fr/cloud/occ app:update --all
</code>
===== - Maintenance suite aux mises à jour =====
==== - Index manquants ====
La base de données a quelques index manquants. L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant ''occ db:add-missing-indices'', ces index manquants pourront être ajoutés manuellement pendant que l'instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides.
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-indices
</code>
==== - Clés primaires manquantes ====
Il manque des clés primaires dans la base de données. En raison du fait que lajout de clés primaires sur les grandes tables peut prendre un certain temps, elles nont pas été ajoutées automatiquement. En exécutant ''occ db:add-missing-primary-keys'', ces clés primaires manquantes peuvent être ajoutées manuellement pendant que linstance continue de fonctionner.
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-primary-keys
</code>
==== - Clés primaires manquantes ====
Certaines colonnes facultatives sont manquantes dans la base de données. Étant donné qu'ajouter des colonnes sur des grandes tables peut prendre du temps, elles n'ont pas été ajoutées automatiquement lorsqu'elles sont facultatives. En exécutant ''occ db:add-missing-columns'' ces colonnes manquantes peuvent être ajoutées manuellement alors que l'instance continue de fonctionner. Une fois que les colonnes sont ajoutées, la performance ou l'utilisabilité de certaines fonctionnalités pourraient être améliorées.
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-columns
</code>
==== - Clés primaires manquantes ====
Certaines colonnes de la base de données n'ont pas été converties en **big int**. Changer le type de colonne dans de grandes tables peu prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant ''occ db:convert-filecache-bigint'' ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne.
<code>
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --on
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:convert-filecache-bigint
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --off
</code>
===== - Quelques trucs et astuces =====
==== - Utilisateur désactivé ====
Activer un utilisateur qui a été désactivé :
sudo -u www-data php occ user:enable [username]
==== - Import d'un VCard en erreur ====
Convertir un fichier **vcard 2.1** en **vcard 3.0** pour l'importer dans NextCloud :
https://github.com/jowave/vcard2to3
<code>
git clone https://github.com/jowave/vcard2to3.git
cd vcard2to3
./vcard2to3.py your_file.vcf
</code>
==== - Contacts / CardDAV ====
**Nextcloud** propose un backend **CardDAV** pour que les utilisateurs puissent stocker et partager leurs carnets d'adresses et leurs contacts.
=== Carnet d'adresses système ===
**Modifié dans la version 27 : Le carnet d'adresses système est désormais accessible à tous les utilisateurs de Nextcloud.**
Nextcloud maintient un carnet d'adresses en lecture seule contenant les informations de contact de tous les utilisateurs de l'instance.
Les utilisateurs désactivés sont supprimés de ce carnet d'adresses.
Vous pouvez désactiver l'accès au carnet d'adresses système en utilisant la valeur de configuration de l'application ''system_addressbook_expose''.
Exécutez la commande ''occ config:app:set dav system_addressbook_exposed --value="no"'' pour désactiver l'accès au carnet d'adresses système pour tous les utilisateurs. Veuillez noter que cela n'influence pas le partage fédéré.
=== Avertissement ===
Si des clients se sont déjà connectés au point de terminaison CalDAV, les clients peuvent rencontrer des problèmes de synchronisation après la désactivation de l'accès au carnet d'adresses système. Cela peut souvent être résolu en choisissant un carnet d'adresses par défaut différent sur le client et en forçant une nouvelle synchronisation.
=== Confidentialité et étendue des propriétés de l'utilisateur ===
Les informations de contact dans le carnet d'adresses système sont extraites des informations de profil des utilisateurs. Les propriétés de profil ne sont écrites dans le carnet de contacts système que si l'étendue est définie sur "Local" ou plus élevé.
Les utilisateurs qui définissent toutes leurs étendues de propriétés sur "Privé" sont supprimés du carnet d'adresses système et ne sont donc pas visibles par les autres utilisateurs.
Les paramètres de partage de fichiers contrôlent l'énumération des autres utilisateurs.
- Si l'autocomplétion du nom d'utilisateur n'est pas autorisée, le carnet d'adresses système ne montrera que le contact système de l'utilisateur mais pas d'autres contacts.
- Si l'autocomplétion du nom d'utilisateur est autorisée, les utilisateurs verront les cartes de contact de tous les autres utilisateurs.
- Si l'autocomplétion est limitée aux utilisateurs au sein des mêmes groupes, les utilisateurs verront les cartes de contact d'autres utilisateurs dans les groupes partagés.
- Si l'autocomplétion est limitée aux numéros de téléphone correspondants, le carnet d'adresses système ne montrera que le contact système de l'utilisateur mais pas d'autres contacts.
- Si l'autocomplétion est limitée aux utilisateurs au sein des mêmes groupes et aux numéros de téléphone correspondants, les utilisateurs verront les cartes de contact d'autres utilisateurs dans les groupes partagés.
=== Synchronisation du carnet d'adresses ===
Le carnet d'adresses est mis à jour automatiquement à chaque ajout, modification, désactivation ou suppression d'utilisateur. Les administrateurs peuvent également déclencher une réécriture complète du carnet d'adresses avec ''occ''.

View File

@@ -0,0 +1,14 @@
====== Installer une seconde version de PHP ======
Cet article décrit comment installer une autre version de PHP sur votre système.
<code BASH>
sudo apt update
sudo apt install php5.6 php5.6-fpm
</code>
Nous vérifions le fonctionnement de **fpm** :
<code BASH>
sudo systemctl status php5.6-fpm
</code>

View File

@@ -0,0 +1,19 @@
====== Préparer son serveur Web ======
{{ informatique:applications:server-311338_1280.png?400|}}
Je vous propose une solution pour préparer votre serveur fonctionnant sour Debian 10. Je vous donne quelques conseils pour le sécuriser.
{{page>informatique:linux:commandes:adduser#creer-un-utilisateur}}
{{page>informatique:linux:commandes:sudo#ajouter-le-groupe-sudo-a-un-utilisateur}}
{{page>informatique:linux:changer-le-nom-de-machine}}
{{page>informatique:linux:commandes:ssh#copier-votre-cle-publique-sur-un-poste-distant}}
{{page>informatique:bash:creer_aliases}}
{{page>informatique:divers:apt-get_upgrade}}
{{page>informatique:logiciels:fail2ban}}

View File

@@ -0,0 +1 @@
{{page>informatique:logiciels:mariadb:maintenance:reinitialiser-le-mot-de-passe-root}}

View File

@@ -0,0 +1,5 @@
{{ informatique:serveur:web-linux-apache:pasted:20201225-185814.png|Serveur Web Linux Apache}}
<WRAP clear/>
{{page>..:web-linux-apache:index#table-des-matieres}}
~~NOCACHE~~

View File

@@ -0,0 +1,155 @@
====== certbot pour Let's Encrypt ======
{{ informatique:applications:pasted:20200507-002818.png?75x75|cerbot pour let's encrypt}}
**Certbot** est un binaire qui permet de mettre en œuvre un certificat SSL pour un domaine d'un site Internet.
Voici les actions a effectuer sur **Linux** **Debian 10**.
Depuis 2020, **certbot** est installé depuis **snapcraft**.
===== - Installer snap =====
Si vous n'avez pas encore installé **snap**, il faut executer les commandes suivantes dans un **terminal**. Les commandes doivent avoir une élevation des droits.
sudo apt update
sudo apt install snapd
sudo snap install core
Si **snap** est déjà installé, assurez-vous d'être à jour :
sudo snap refresh core
===== - Installer certbot =====
Exécutez la commande suivante oour installer **cerbot** sur votre machine. Ceci est a exéctuer dans un terminal.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
===== - Générer un certificat - gestion manuelle =====
Si vous suivez ce guide, je vous conseille une gestion manuelle de vos certificats.
Il y a deux variables :
^ dirWeb | Dossier des données du site. Pour habitude, c'est quelque chose du genre ''/var/www/html/'' |
^ siteName | Nom du site Internet. Par exemple ''abonnel.fr'' |
<code BASH>
read -p "Quel est votre nom de domaine ? " siteName
read -p "Dossier Web du site ? " dirWeb
sudo certbot certonly --webroot -w $dirWeb -d $siteName --register-unsafely-without-email
</code>
L'avantage de ce script :
* pas d'arrêt d'Apache 2
* pas de mail à saisir
* autonomie sur la configuration Apache 2
Quelques **chemins** à retenir :
^ fichier de configuration | /etc/letsencrypt/renewal/$siteName.conf |
^ dossier archive | /etc/letsencrypt/archive/$siteName |
^ fichier cert | /etc/letsencrypt/live/$siteName/cert.pem |
^ fichier privkey | /etc/letsencrypt/live/$siteName/privkey.pem |
^ fichier chain | /etc/letsencrypt/live/$siteName/chain.pem |
^ fichier fullchain | /etc/letsencrypt/live/$siteName/fullchain.pem |
Pour enregistrer un domaine principal avec et sans les **www**, il faut utiliser le script suivant :
<code BASH>
echo "Quel nom de domaine (avec www) ?"
read siteNameWww
echo "Quel nom de domaine (sans les www) ?"
read siteName
sudo certbot certonly --webroot -w /var/www/html/ -d $siteName -d $siteNameWww --register-unsafely-without-email
</code>
===== - Générer un certificat - gestion automatique =====
Si vous avez effectué le paragraphe précédent [[#generer-un-certificat-gestion-manuelle]], il est inutile de suivre les recommandations de ce chapitre.
Exécutez le commande suivant pour générer un certificat et édité votre configuration Apache de manière automatique. Le protocole **https** s'active de manière automatique, en une seule étape.
sudo certbot --apache
===== - Renouveler les certificats automatiquement =====
Éditer la tâche des tâches Linux du compte ''root'', //crontab// :
<code>
sudo crontab -e
</code>
La tâche doit exécutée le programme ''certbot'' avec l'option de renouvellement, ''renew''. L'option ''post-hook'' permet d'indiquer la commande à exécuter après le traitement de ''certbot''. Dans notre cas, on demande à ''systemctl'' de recharger la configuration ''Apache 2''.
<code>
0 23 1-7 */2 4 python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/bin/certbot renew --post-hook "systemctl reload apache2" >> /var/log/letsencrypt/renew.log
</code>
Explications :
<html><pre>
Tous les deux mois ( 0 23 1-7 <strong>*/2</strong> 4 )
à 23 heures ( <strong>0 23</strong> 1-7 */2 4 ),
le premier jeudi ( 0 0 <strong>1-7</strong> */2 <strong>4</strong> ),
lancement d'un script Python, qui retarde 1 heure au maximum (random.random() * 3600),
lexécution de la mise à jour de certbot.
</pre></html>
Vous pouvez trouver d'autres informations sur la page [[https://crontab.guru/#0_23_1-7_*/2_4]]
===== - Afficher les dates du certificats =====
Pour afficher les dates de génération et d'expiration d'un certificat en local sur un serveur :
<code>
sudo ls /etc/letsencrypt/live/
read -p "Quel est votre nom de domaine ?" siteName
sudo openssl x509 -noout -dates -in /etc/letsencrypt/live/$siteName/fullchain.pem
</code>
---
Pour afficher les dates de génération et d'expiration d'un certificat d'un site distant :
<code>
openssl s_client -connect www.w3.org:443| openssl x509 -noout -dates
</code>
Exemple de résultat :
{{informatique:serveur:web-linux-apache:pasted:20210117-213056.png|Exemple de résultat pour les dates du certificat de www.w3.org}}
===== - Réinitialiser la configuration Let's Encrypt =====
Façon documentée :
<code BASH>
echo Affichage des noms possibles :
sudo ls /etc/letsencrypt/live
echo .
echo "Quel nom de domaine ?"
read siteName
certbot delete --cert-name $siteName
</code>
Façon brutale :
<code BASH letsencrypt_erase>
#!/bin/bash
# réinitialiser let's encrypt pour un domaine precis
echo Affichage des noms possibles :
sudo ls /etc/letsencrypt/live
echo .
echo "Quel nom de domaine ?"
read siteName
sudo rm -fr /etc/letsencrypt/live/$siteName/
sudo rm /etc/letsencrypt/renewal/$siteName.conf
sudo rm -fr /etc/letsencrypt/archive/$siteName/
</code>

View File

@@ -0,0 +1,137 @@
====== [OBSOLÈTE] certbot auto pour Let's Encrypt ======
{{ informatique:applications:pasted:20200507-002818.png?75x75|cerbot pour let's encrypt}}
<WRAP center round important 60%>
Depuis 2020, l'installation s'effectue depuis **certbot** avec **snap**
Suivez le guide dans l'article [[informatique:serveur:web-linux-apache:ssl-let-s-encrypt-certbot]]
</WRAP>
**Certbot** est un binaire qui permet de mettre en œuvre un certificat SSL pour un domaine d'un site Internet. **Certbot-auto** est une solution complète qui permet dexécuter //Certbot// de manière optimale.
===== - Télécharger CERTBOT =====
En terminal, jexécute ''wget''
<code>
wget https://dl.eff.org/certbot-auto
</code>
===== - Déployer CERTBOT =====
<code>
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
/usr/local/bin/certbot-auto --install-only
</code>
===== - Application CERTBOT pour un domaine =====
Exécution de l'utilitaire pour configurer un site avec les options suivantes :
<code>
read -p "Quel est votre nom de domaine ? " siteName
read -p "Dossier Web du site ? " dirWeb
sudo certbot-auto certonly --webroot -w $dirWeb -d $siteName --register-unsafely-without-email
</code>
L'avantage de ce script :
* pas d'arrêt d'Apache 2
* pas de mail à saisir
* autonomie sur la configuration Apache 2
Quelques **chemins** à retenir :
^ fichier de configuration | /etc/letsencrypt/renewal/$siteName.conf |
^ dossier archive | /etc/letsencrypt/archive/$siteName |
^ fichier cert | /etc/letsencrypt/live/$siteName/cert.pem |
^ fichier privkey | /etc/letsencrypt/live/$siteName/privkey.pem |
^ fichier chain | /etc/letsencrypt/live/$siteName/chain.pem |
^ fichier fullchain | /etc/letsencrypt/live/$siteName/fullchain.pem |
===== - Application CERTBOT pour un domaine principal =====
Exécution de l'utilitaire pour configurer un domaine principal. Un domaine principal est accessible avec les //www// et sans :
<code>
echo "Quel nom de domaine (avec www) ?"
read siteNameWww
echo "Quel nom de domaine (sans les www) ?"
read siteName
certbot-auto certonly --webroot -w /var/www/html/ -d $siteNameWww -d $siteName --register-unsafely-without-email
</code>
L'avantage de ce script :
* pas d'arrêt d'Apache 2
* pas de mail à saisir
* autonomie sur la configuration Apache 2
Quelques **chemins** à retenir :
^ fichier de configuration | /etc/letsencrypt/renewal/$siteNameWww.conf |
^ dossier archive | /etc/letsencrypt/archive/$siteNameWww |
^ fichier cert | /etc/letsencrypt/live/$siteNameWww/cert.pem |
^ fichier privkey | /etc/letsencrypt/live/$siteNameWww/privkey.pem |
^ fichier chain | /etc/letsencrypt/live/$siteNameWww/chain.pem |
^ fichier fullchain | /etc/letsencrypt/live/$siteNameWww/fullchain.pem |
===== - Renouveler les certificats =====
Il suffit dexécuter la commande :
<code>
$ sudo certbot-auto renew
</code>
Les paramètres ''cerbot'' sont automatiquement traités et une mise à jour des certificats sont opérés.
Il faudra redémarrer le service Web (par exemple ''systemctl reload apache2'').
===== - Renouveler les certificats automatiquement =====
Éditer la tâche des tâches Linux du compte ''root'', //crontab// :
<code>
sudo crontab -e
</code>
La tâche doit exécutée le programme ''certbot-auto'' avec l'option de renouvellement, ''renew''. L'option ''post-hook'' permet d'indiquer la commande à exécuter après le traitement de ''certbot-auto''. Dans notre cas, on demande à ''systemctl'' de recharger la configuration ''Apache 2''.
<code>
0 23 1-7 */2 4 python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew --post-hook "systemctl reload apache2" >> /var/log/letsencrypt/renew.log
</code>
Explications :
<html><pre>
Tous les deux mois ( 0 23 1-7 <strong>*/2</strong> 4 )
à 23 heures ( <strong>0 23</strong> 1-7 */2 4 ),
le premier jeudi ( 0 0 <strong>1-7</strong> */2 <strong>4</strong> ),
lancement d'un script Python, qui retarde 1 heure au maximum (random.random() * 3600),
lexécution de la mise à jour de certbot.
</pre></html>
===== - Afficher les dates du certificats =====
<code>
sudo ls /etc/letsencrypt/live/
read -p "Quel est votre nom de domaine ?" siteName
sudo openssl x509 -noout -dates -in /etc/letsencrypt/live/$siteName/fullchain.pem
</code>
===== - Réinitialiser la configuration Let's Encrypt =====
<code BASH letsencrypt_erase>
#!/bin/bash
# réinitialiser let's encrypt pour un domaine precis
echo Affichage des noms possibles :
sudo ls /etc/letsencrypt/live
echo .
echo "Quel nom de domaine ?"
read siteName
sudo rm -fr /etc/letsencrypt/live/$siteName/
sudo rm /etc/letsencrypt/renewal/$siteName.conf
sudo rm -fr /etc/letsencrypt/archive/$siteName/
</code>

View File

@@ -0,0 +1,27 @@
====== WordPress ======
===== - Installer =====
Dans un premier temps, il faut suivre le guide pas à pas pour [[informatique:applications:configurer_un_site_web_apache_2:index|installer Apache2 avec PHP et MySQL]].
Ensuite, vient le téléchargement de l'application depuis le site **Wordpress**. J'utilise la commande ''wget'' pour télécharger l'archive directement sur le serveur Web.
<code BASH>
$ wget https://fr.wordpress.org/latest-fr_FR.tar.gz
</code>
Le programme est contenu dans une archive compressée **tar.gz**. Donc, il faut décompresser larchive .
<code BASH>
$ tar -xzvf latest-fr_FR.tar.gz
$ rm latest-fr_FR.tar.gz
$ mv wordpress/* .
$ rmdir wordpress
</code>
Voici quelques ressources qui peuvent aider :
* https://serverfault.com/questions/357108/what-permissions-should-my-website-files-folders-have-on-a-linux-webserver
* https://codex.wordpress.org/Installing_WordPress#Detailed_Instructions
* https://doc.ubuntu-fr.org/installer_un_serveur_debian
* http://olange.developpez.com/articles/debian/installation-serveur-dedie/?page=page_2

View File

@@ -0,0 +1,45 @@
====== Configurer les droits des fichiers ======
{{ :dummy.png?75x75|Configurer les droits des fichiers}}
Je vous propose un suite de commandes afin de rendre votre utilisateur actif, symbolisé par **${USER}**, utilisateur avec pouvoir du dossier **/var/www/html**.
Le dossier **/var/www/html** est le dossier par défaut sous **Debian** de votre service **Apache**.
Le groupe **www-data** est le groupe par défaut utilisé par **Apache** pour accéder aux ressources et exécuter ses services.
--
**Ajouter le groupe** **www-data** à l'**utilisateur courant**
sudo usermod -a -G www-data ${USER}
Vous pourrez vérifier l'affectation en saisissant la commande ''id ${USER}''
--
**Définir l'utilisateur** en tant que propriétaire du dossier **/var/www/html**
sudo chown -R ${USER}:www-data /var/www/html
--
**Autoriser les accès** uniquement à l'utilisateur et au groupe **www-data**
sudo chmod 770 -R /var/www/html
find /var/www/html -type f -exec sudo chmod gu-x {} +
--
**Reprendre le groupe** à la création des nouveaux objets
find /var/www/html -type d -exec sudo chmod g+s {} +
--
**Bloquer les autorisations** pour **other** et forcer **rw** pour le groupe **www-data**
La commande suivante peut nécessiter le déploiement du programme **acl** : ''sudo apt install acl''.
setfacl -m d:g:www-data:rw,d:o::- /var/www/html