Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Ce guide explique comment travailler sans le module PECL SSH2 client
indisponible sur les hébergements Web et Serveurs Cloud Infomaniak, en utilisant plutÎt la bibliothÚque phpseclib
, qui fonctionne en PHP natif sans nĂ©cessiter dâextension spĂ©cifique.
Préambule
- Lâutilisation de
PECL SSH2 client
entraine des erreurs de typeNo compatible key exchange algorithms found
ouUnable to exchange encryption keys
dans sa derniere version disponible. Phpseclib
permet :- L'authentification SSH par mot de passe ou clé privée.
- L'exécution de commandes à distance.
- Le transfert de fichiers sécurisés (SFTP).
- La gestion des clés SSH.
Utiliser phpseclib
Pour intégrer une connexion SSH dans un script PHP, utilisez phpseclib
comme suit :
use phpseclib3\Net\SSH2;
use phpseclib3\Crypt\PublicKeyLoader;
$ssh = new SSH2('domain.xyz');
$key = PublicKeyLoader::load(file_get_contents('/path/to/private_key'));
if (!$ssh->login('utilisateur', $key)) {
exit('Authentication Failed');
}
echo $ssh->exec('ls -la');
Infomaniak n'effectue aucune sauvegarde des VPS Cloud / VPS Lite.
Vous pouvez nĂ©anmoinsâŠ
- ⊠créer un instantané (snapshot) du serveur (sauvegarde non automatisée)
- ⊠sauvegarder le serveur sur Swiss Backup (sauvegarde automatisée)
Ce guide explique comment spĂ©cifier un fichier qui sera chargĂ© avant mĂȘme la page voulue ou au dĂ©but de chaque script PHP exĂ©cutĂ© sur votre serveur, inclus comme s'il avait Ă©tĂ© appelĂ© avec la fonction require()
, mais plus globalement en utilisant la directive auto_prepend_file
de PHP.
Préambule
- Pour par exemple déclarer les headers d'un site Web, il est possible de faire un fichier
headers.php
qui contient des fonctions PHPheader()
et qui soit prepend au dĂ©but de chaque fichier PHPâŠ- ⊠via un fichier
.user.ini
(propre à un dossier), - ⊠ou via la configuration du site du Manager (global) comme expliqué ci-dessous.
- ⊠via un fichier
Inclure un fichier globalement depuis le Manager
Pour accéder à la gestion du site Web :
- Cliquez ici afin d'accéder à la gestion de votre produit sur le Manager Infomaniak (besoin d'aide ?).
- Cliquez directement sur le nom attribué au produit concerné:
- Cliquez sur Gérer sous ParamÚtres avancés:
- Cliquez sur l'onglet PHP / Apache.
- Complétez la ligne concernée en entrant le chemin du fichier à inclure.
- Cliquez sur le bouton pour sauvegarder:
AprÚs avoir défini cette directive, toutes les pages PHP sur votre serveur incluront automatiquement le fichier spécifié avant d'exécuter leur propre code.
Les headers définis dans un fichier .htaccess
ne sont valables que pour le contenu non PHP (donc statique).
Infomaniak utilise php-fpm
qui reçoit les différents headers via apache fast_cgi
. Dans la RFC de cgi_www le header Strict-Transport-Security
ne fait pas partie des headers passés via CGI et la documentation Apache le confirme. Prenez connaissance de cette autre RFC.
â ïž Pour de l'aide supplĂ©mentaire contactez un partenaire ou lancez gratuitement un appel d'offres â dĂ©couvrez aussi le rĂŽle de l'hĂ©bergeur.
Ce guide vous aidera si par exemple vous souhaitez déployer un package comme pymysql
et que celui-ci requiert une version de python supérieure à celle proposée sur votre hébergement.
Préambule
- Anaconda est une distribution libre et open source des langages de programmation Python. Cette distribution vise à simplifier la gestion des paquets et de déploiement.
- Il est recommandé alors d'utiliser conda livré avec une version récente de python et qui s'installe dans l'espace utilisateur, de sorte qu'il n'y a pas de conflit avec le systÚme python (comme dans un environnement virtuel, qui nécessite toujours une installation systÚme de la version souhaitée).
- Prenez connaissance de la documentation officielle.
â ïž Pour de l'aide supplĂ©mentaire contactez un partenaire ou lancez gratuitement un appel d'offres â dĂ©couvrez aussi le rĂŽle de l'hĂ©bergeur.
Télécharger l'installateur
uid165116@od-12345:~$ wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
--2021-07-28 18:21:10-- https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
Resolving repo.anaconda.com (repo.anaconda.com)... 2606:4700::6810:8303, 2606:4700::6810:8203, 104.16.131.3, ...
Connecting to repo.anaconda.com (repo.anaconda.com)|2606:4700::6810:8303|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89026327 (85M) [application/x-sh]
Saving to: âMiniconda3-py37_4.10.3-Linux-x86_64.shâ
Miniconda3-py37_4.10.3-Linux-x86_64.sh 100% [==============================================>] 84.90M 203MB/s in 0.4s
18:21:11 (100 MB/s) - âMiniconda3-py37_4.10.3-Linux-x86_64.shâ saved [89026327/89026327]
ContrĂŽler le hash
uid165116@od-12345:~$ test $(md5sum Miniconda3-py37_4.10.3-Linux-x86_64.sh | awk '{print $1}') == "9f186c1d86c266acc47dbc1603f0e2ed" && echo "OK"
OK
Lancer l'installation
uid165116@od-12345:~$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b
PREFIX=/home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
Unpacking payload ...
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/clients/fc84cbbf6dcbd6dd76b15d3e56c1789f/miniconda3
added / updated specs:
- _libgcc_mutex==0.1=main
- _openmp_mutex==4.5=1_gnu
- brotlipy==0.7.0=py37h27cfd23_1003
- ca-certificates==2021.7.5=h06a4308_1
- certifi==2021.5.30=py37h06a4308_0
- cffi==1.14.6=py37h400218f_0
- chardet==4.0.0=py37h06a4308_1003
- conda-package-handling==1.7.3=py37h27cfd23_1
- conda==4.10.3=py37h06a4308_0
- cryptography==3.4.7=py37hd23ed53_0
- idna==2.10=pyhd3eb1b0_0
- ld_impl_linux-64==2.35.1=h7274673_9
- libffi==3.3=he6710b0_2
- libgcc-ng==9.3.0=h5101ec6_17
- libgomp==9.3.0=h5101ec6_17
- libstdcxx-ng==9.3.0=hd4cf53a_17
- ncurses==6.2=he6710b0_1
- openssl==1.1.1k=h27cfd23_0
- pip==21.1.3=py37h06a4308_0
- pycosat==0.6.3=py37h27cfd23_0
- pycparser==2.20=py_2
- pyopenssl==20.0.1=pyhd3eb1b0_1
- pysocks==1.7.1=py37_1
- python==3.7.10=h12debd9_4
- readline==8.1=h27cfd23_0
- requests==2.25.1=pyhd3eb1b0_0
- ruamel_yaml==0.15.100=py37h27cfd23_0
- setuptools==52.0.0=py37h06a4308_0
- six==1.16.0=pyhd3eb1b0_0
- sqlite==3.36.0=hc218d9a_0
- tk==8.6.10=hbc83047_0
- tqdm==4.61.2=pyhd3eb1b0_1
- urllib3==1.26.6=pyhd3eb1b0_1
- wheel==0.36.2=pyhd3eb1b0_0
- xz==5.2.5=h7b6447c_0
- yaml==0.2.5=h7b6447c_0
- zlib==1.2.11=h7b6447c_3
The following NEW packages will be INSTALLED:
_libgcc_mutex pkgs/main/linux-64::_libgcc_mutex-0.1-main
_openmp_mutex pkgs/main/linux-64::_openmp_mutex-4.5-1_gnu
brotlipy pkgs/main/linux-64::brotlipy-0.7.0-py37h27cfd23_1003
ca-certificates pkgs/main/linux-64::ca-certificates-2021.7.5-h06a4308_1
certifi pkgs/main/linux-64::certifi-2021.5.30-py37h06a4308_0
cffi pkgs/main/linux-64::cffi-1.14.6-py37h400218f_0
chardet pkgs/main/linux-64::chardet-4.0.0-py37h06a4308_1003
conda pkgs/main/linux-64::conda-4.10.3-py37h06a4308_0
conda-package-han~ pkgs/main/linux-64::conda-package-handling-1.7.3-py37h27cfd23_1
cryptography pkgs/main/linux-64::cryptography-3.4.7-py37hd23ed53_0
idna pkgs/main/noarch::idna-2.10-pyhd3eb1b0_0
ld_impl_linux-64 pkgs/main/linux-64::ld_impl_linux-64-2.35.1-h7274673_9
libffi pkgs/main/linux-64::libffi-3.3-he6710b0_2
libgcc-ng pkgs/main/linux-64::libgcc-ng-9.3.0-h5101ec6_17
libgomp pkgs/main/linux-64::libgomp-9.3.0-h5101ec6_17
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-9.3.0-hd4cf53a_17
ncurses pkgs/main/linux-64::ncurses-6.2-he6710b0_1
openssl pkgs/main/linux-64::openssl-1.1.1k-h27cfd23_0
pip pkgs/main/linux-64::pip-21.1.3-py37h06a4308_0
pycosat pkgs/main/linux-64::pycosat-0.6.3-py37h27cfd23_0
pycparser pkgs/main/noarch::pycparser-2.20-py_2
pyopenssl pkgs/main/noarch::pyopenssl-20.0.1-pyhd3eb1b0_1
pysocks pkgs/main/linux-64::pysocks-1.7.1-py37_1
python pkgs/main/linux-64::python-3.7.10-h12debd9_4
readline pkgs/main/linux-64::readline-8.1-h27cfd23_0
requests pkgs/main/noarch::requests-2.25.1-pyhd3eb1b0_0
ruamel_yaml pkgs/main/linux-64::ruamel_yaml-0.15.100-py37h27cfd23_0
setuptools pkgs/main/linux-64::setuptools-52.0.0-py37h06a4308_0
six pkgs/main/noarch::six-1.16.0-pyhd3eb1b0_0
sqlite pkgs/main/linux-64::sqlite-3.36.0-hc218d9a_0
tk pkgs/main/linux-64::tk-8.6.10-hbc83047_0
tqdm pkgs/main/noarch::tqdm-4.61.2-pyhd3eb1b0_1
urllib3 pkgs/main/noarch::urllib3-1.26.6-pyhd3eb1b0_1
wheel pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
xz pkgs/main/linux-64::xz-5.2.5-h7b6447c_0
yaml pkgs/main/linux-64::yaml-0.2.5-h7b6447c_0
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Preparing transaction: done
Executing transaction: done
installation finished.
Lancer conda
uid165116@od-12345:~$ source <(~/miniconda3/bin/conda shell.bash hook)
Installer pymysql (par exemple)
(base) uid165116@od-12345:~$ python3 -V
Python 3.7.10
(base) uid165116@od-12345:~$ pip3 install pymysql --user
Collecting pymysql
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|ââââââââââââââââââââââââââââââââ| 43 kB 892 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
L'infrastructure Infomaniak ne transmet pas d'instructions de virtualisation aux VPS Cloud / VPS Lite ; il n'est donc pas possible de faire de la virtualisation imbriquée (virtualisation qui s'exécuterait à l'intérieur d'un environnement déjà virtualisé) car cela pose des problÚmes notamment lors des migrations en direct.
Afin d'utiliser des modules Perl
sur un Serveur Cloud Infomaniak, il est nécessaire de les installer dans l'arborescence utilisateur et d'en définir le chemin complet au sein des scripts.
Vous pourrez ainsi installer et mettre Ă jour librement vos modules.
Ce guide concerne la création de réseaux privés entre différentes offres d'hébergement Infomaniak comme VPS Cloud / VPS Lite, Public Cloud, NAS Synology, etc.
Créer un VLAN entre VPS
Il n'est pas possible de créer un réseau privé (VLAN) entre VPS Cloud / VPS Lite et d'autres produits, comme NAS Synology p.ex, car ils sont installés sur des réseaux distincts.
Cependant il est possible de créer un VLAN entre minimum 10 VPS Cloud / VPS Lite vous appartenant (contactez le support Infomaniak) cependant un réseau privé dédié ne pourra pas communiquer avec un autre.
Il est recommandé de migrer vers l'offre Public Cloud pour créer de tels réseaux privés entre VM.
Ce guide concerne l'installation d'extension PHP sur Hébergements Web Infomaniak.
Utilisation d'extensions PHP Zend
- Zend Guard Loader est une extension PHP qui permet d'exécuter des scripts PHP chiffrés via Zend Guard.
- Zend Guard Loader est installé de base pour PHP <= 5.6 sur tous les hébergements Web et n'est pas disponible pour les versions de PHP >= 5.6.
- Depuis PHP 5.3.x, le module Zend Optimizer a été remplacé par ZendGuardLoader
- L'extension ZendOPCache nécessite un Serveur Cloud configuré avec PHP 5.5 minimum
Jelastic Cloud est une plateforme en tant que service (PaaS) qui permet de crĂ©er facilement des environnements de dĂ©veloppement Ă la volĂ©e. Cette solution est trĂšs avantageuse dans le cas oĂč votre consommation de ressources (CPU, RAM) varie beaucoup selon les pĂ©riodes de l'annĂ©e.
Un Serveur Cloud permet de gérer des applications et sites Web aussi facilement qu'un hébergement mutualisé en vous offrant l'avantage de pouvoir installer des logiciels supplémentaires selon vos besoins. Cette solution est trÚs avantageuse si votre consommation de ressources (CPU, RAM) est stable et prévisible.
Un VPS Cloud ou VPS Lite permet de gérer la totalité de votre serveur avec la distribution Linux de votre choix. De solides compétences techniques sont requises. Cette solution est trÚs avantageuse si votre consommation de ressources (CPU, RAM) est stable et prévisible.
Dans les trois cas de figure, vous bénéficiez de ressources entiÚrement dédiées que vous pouvez librement ajuster selon vos besoins.
Prenez également connaissance de l'offre Public Cloud.
Ce guide explique comment augmenter la valeur max_children
sur Serveur Cloud afin d'augmenter le nombre de processus PHP simultanĂ©s qui peuvent ĂȘtre utilisĂ©s par votre site. Cela sera trĂšs utile pour rĂ©soudre des problĂšmes de chargement infini des pages de votre site.
Préambule
- Par défaut sur tout hébergement, la limite de
max_children
est fixée à 20.- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
max_children
est automatiquement ajustée en fonction de la configuration de votre Serveur Cloud. - Pour augmenter cette limite sur hébergement mutualisé, migrez sur Serveur Cloud.
- Bien qu'il soit possible d'augmenter cette valeur depuis le Manager Infomaniak, la limite de
- Pour comprendre comment calculer au plus juste les
max_children
nécessaires, prenez connaissance de cet article à ce sujet.
Augmenter la valeur max_children
Prérequis
- S'assurer que vous disposez des ressources nécessaires sur le serveur Cloud.
- S'assurer que l'ensemble des ressources du serveur Cloud ne soient pas utilisées ; s'il s'avÚre que celles-ci sont totalement utilisées, l'augmentation de la valeur
max_children
n'aura aucun effet (Modifier les ressources du Serveur Cloud). - ContrĂŽler le monitoring des ressources de votre serveur, dans le cas oĂč les ressources de votre serveur sont atteintes, il sera nĂ©cessaire de vĂ©rifier l'optimisation des processus et de votre site avant d'envisager d'augmenter la valeur
max_children
. - Consulter les rapports d'erreur PHP depuis le dossier
/ik-logs
(master process php logs - nom du fichier : php-fpm.log) pour vérifier si la limite "max_children
" a été dépassée... exemple d'erreur:[05-Jul-2024 09:08:58] WARNING: [pool www.infomaniak.ch] server reached max_children setting (20), consider raising it
Pour accéder à la gestion des paramÚtres PHP / Apache du site dont il faut augmenter la valeur max_children
sur Serveur Cloud, prenez connaissance de cet autre guide.
Vous pourrez notammentâŠ
- ⊠choisir une nouvelle valeur de
max_children
:
Ne pas oublier d'enregistrer les changements en bas de page.
Limites en fonction du serveur
Limite des max_children
en fonction des ressources du Serveur Cloud:
Configuration Serveur Cloud | max_children |
---|---|
2 CPU / 6 Go RAM | 20 |
4 CPU / 12 Go RAM | 40 |
6 CPU / 18 Go RAM | 60 |
8 CPU / 24 Go RAM | 80 |
12 CPU / 36 Go RAM | 120 |
16 CPU / 48 Go RAM | 160 |
24 CPU / 72 Go RAM | 240 |
32 CPU / 96 ou 128 Go RAM | 320 |