Installation VM
Tout savoir sur la fameuse erreur du gestionnaire de paquets apt :
Could not get lock /var/lib/dpkg/lock ErrorVoir dpkg lock error
Démarrage VM
Démarrer votre VM depuis https://servers1.sts-sio-caen.info/
Les informations de connexion au serveur sont données sur le drive.
Démarrer votre VM
Connexion SSH
Démarrer Putty pour vous connecter en SSH à votre VM.
Entrer l'adresse publique du serveur : 149.202.77.193
et le numéro de port correspondant à votre machine : 78xx
Identifiant de connexion à la VM :
- login :
user
- password : ilovedev
Apache + PHP 8.2
Connexion en root :
su -l
Le mot de passe est toujours ilovedev
Ajout du ppa Sury :
Ajout de la clé gpg :
apt -y install lsb-release apt-transport-https ca-certificates wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Ajout du ppa :
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
Installation
Vérifier les mises à jour :
apt updateMettre à jour le système et rebooter :
apt upgrade -y && reboot
Après reconnexion à la VM avec putty :
apt install php8.2 php8.2-cli php8.2-{curl,bz2,mbstring,intl,yaml} libapache2-mod-php8.2
Git
apt install git git version
VirtualHost
Clone du repository git
Cloner votre repository dans le root d'apache :
cd /var/www/html git clone https://github.com/repositoryName
Création VHost
Créer le fichier /etc/apache2/sites-available/mysite.conf
<VirtualHost *:80> DocumentRoot /var/www/html/repositoryFolder ServerName srv1-vm-xxxx.sts-sio-caen.info DirectoryIndex /index.php <Directory /var/www/html/repositoryFolder> Require all granted </Directory> ErrorLog /var/log/apache2/mysite_error.log CustomLog /var/log/apache2/mysite_access.log combined </VirtualHost>
Activer le site et recharger Apache :
a2ensite mysite systemctl reload apache2
Résolution des erreurs
Il est probable que votre site vous délivre dans un premier temps une erreur 500
:
c'est votre code source qui en est à l'origine, il vous faut trouver la ou les erreurs, en examinant les logs apache relatifs à votre site :
Ils sont situés dans le fichier que vous avez spécifié dans la configuration du vhost :
/var/log/apache2/mysite_error.log
Erreur courantes
Redéclaration
PHP Fatal error: Cannot redeclare yaml_parse_file()
Diagnostic :
L'extension yaml est installée avec le php de la VM. La fonction déclarée dans le fichier yaml ne doit donc plus l'être (ou de manière conditionnelle).
Résolution :
use Symfony\Component\Yaml\Yaml; use Symfony\Component\Yaml\Exception\ParseException; if (!function_exists('yaml_parse_file')) { function yaml_parse_file($file){ try { return Yaml::parseFile($file); } catch (ParseException $exception) { printf('Unable to parse the YAML string: <b>%s</b>', $exception->getMessage()); } } }
Chemins
Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory
Diagnostic :
Le chemin n'a pas été trouvé pour le fichier à inclure dans le script php…
Résolution :
Vérifier le chemin et l'exprimer relativement au fichier php actuellement exécuté, en faisant attention à la casse (Linux contrairement à Windows fait la différence entre majuscules et minuscules).
Images/CSS
Diagnostic :
Pas d'erreur côté serveur en php dans les logs, mais les images ou feuilles de style css ne sont pas prises en compte.
La raison est vérifiable en regardant la partie network/Réseau de la console du navigateur :
Résolution :
Vérifier les chemins et les exprimer en absolu par rapport à la racine du vhost (DocumentRoot déclaré), en faisant attention à la casse (Linux contrairement à Windows fait la différence entre majuscules et minuscules).
Bonnes pratiques
- index.php doit se trouver à la racine du projet
- Le fichier composer.json permettant d'inclure les librairies doit être en un seul exemplaire à la racine du projet, et il faut installer ces librairies sur la VM :
composer update
- Le dossier vendor de composer ne doit pas être publié sur le repository et être ajouté dans le .gitignore
- Eviter les chemins à rallonge totalement inutiles (ie.
/portfolio/docs/php/site/…
)
MariaDb
Installation
L'installation de Mysql/mariaDB est facultative, et n'est à faire que si vous en avez besoin dans votre portfolio.
Installation de MariaDb (en root) :
apt update apt install mariadb-server
Sécurisation
Sécurisation de l'installation :
mysql_secure_installation
Mettre le mot de passe ilovedev sur le compte root
Tester l'installation en mode client :
mariadb
PDO
Installation de la librairie PDO pour mariaDb/Mysql :
apt install php8.2-{dev,pear,mysql}