Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-prendre-en-main-apache2-sur-jessie [15/06/2020 17:30] Hypathie [Modules Php] |
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-prendre-en-main-apache2-sur-jessie [07/12/2020 22:58] Hypathie [Installer son site dans son répertoire personnel] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Créer son site web en php _ prendre en main Apache2 ====== | + | ====== Prendre en main Apache2 ====== |
Ligne 71: | Ligne 71: | ||
- | <code root>service apache2 reload</code> | + | <code root>systemctl restart apache2</code> |
</note> | </note> | ||
===Création d'un virtualhost en local pour le site dans /etc/apache2/sites-available/=== | ===Création d'un virtualhost en local pour le site dans /etc/apache2/sites-available/=== | ||
Ligne 113: | Ligne 113: | ||
===Activer le site (cela crée un lien symbolique dans /etc/apache2/sites-enabled/)=== | ===Activer le site (cela crée un lien symbolique dans /etc/apache2/sites-enabled/)=== | ||
<code root>a2ensite hypathie.net.conf</code> | <code root>a2ensite hypathie.net.conf</code> | ||
- | <code root>service apache2 reload</code> | + | <code root>systemctl restart apache2</code> |
Ligne 148: | Ligne 148: | ||
On désactive ce site : | On désactive ce site : | ||
- | <code root>cd /etc/apache2/sites-enabled/ && a2dissite 000-default.conf && service apache2 reload</code> | + | <code root>cd /etc/apache2/sites-enabled/ && a2dissite 000-default.conf && systemctl restart apache2</code> |
</note> | </note> | ||
Ligne 226: | Ligne 226: | ||
* On modifie le fichier /etc/hosts des machines du réseau local avec lesquelles on souhaite se connecter au site web. | * On modifie le fichier /etc/hosts des machines du réseau local avec lesquelles on souhaite se connecter au site web. | ||
- | <code root>service apache2 reload</code> | + | <code root>systemctl restart apache2</code> |
===fichier hosts sur debian === | ===fichier hosts sur debian === | ||
Ligne 278: | Ligne 278: | ||
Pour ce faire, il faut configurer son routeur pour rediriger les connexions extérieures qui viennent toc-toquer sur sa box-machin, dans cet exemple vers l'ip 192.168.0.17 de la machine sur laquelle tourne apache2. | Pour ce faire, il faut configurer son routeur pour rediriger les connexions extérieures qui viennent toc-toquer sur sa box-machin, dans cet exemple vers l'ip 192.168.0.17 de la machine sur laquelle tourne apache2. | ||
- | ==== Installer son site dans son répertoire personnel ==== | + | ===== Installer son site dans son répertoire personnel ===== |
+ | <note tip> | ||
+ | Attention de modifier ''user'' par l'utilisateur qui est propriétaire du dit répertoire ! | ||
+ | </note> | ||
+ | ====On crée un dossier Web ==== | ||
- | ===On crée un dossier Web === | + | <code user>mkdir /home/user/www/site1</code> |
- | <code user>mkdir Web/</code> | + | ==== On donne propriétés et droits ==== |
- | === On donne propriétés et droits === | + | <code root>chown -R user:www-data /home/user/www/</code> |
- | <code root>chown -R hypathie:www-data /home/hypathie/Web/</code> | ||
- | <note tip> | + | <code root>chmod -R 2750 /home/user/www/</code> |
- | Attention de modifier ''hypathie'' par l'utilisateur voulu ! | + | |
- | </note> | + | |
- | <code root>chmod -R 750 /home/hypathie/Web/</code> | ||
- | === On déplace le dossier du site === | + | ==== On crée un dossier pour le site1 et un index.html pour tester ==== |
- | <code user>cd /var/www/ && mv essai/ ~/Web/</code> | + | <code user>cd /home/user/www/ && mkdir site1/</code> |
+ | |||
+ | <code user>vim site1/index.html/</code> | ||
- | <note tip> | ||
- | En user si on a modifier les droits sur ''www'', sinon en root ! | ||
- | </note> | ||
- | === On crée un lien symbolique vers le répertoire utilisateur dans www === | + | ==== On crée un lien symbolique vers le répertoire utilisateur dans www ==== |
- | <code user>ln -s ~/Web/essai/ /var/www/essai</code> | + | <code root>ln -s /home/user/www/site1/ /var/www/essai</code> |
Il n'y a rien de plus à faire, ni à modifier le virtualhost ni à recharger apache. | Il n'y a rien de plus à faire, ni à modifier le virtualhost ni à recharger apache. | ||
- | === Avec la configuration du virtualhost === | + | ==== On lui crée un virtualhost ==== |
On donne le chemin du dossier de son répertoire personnel dans le virtualhost. | On donne le chemin du dossier de son répertoire personnel dans le virtualhost. | ||
<code><VirtualHost *:80> | <code><VirtualHost *:80> | ||
- | ServerName test.local | + | ServerName site1.local |
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
- | DocumentRoot /home/user/dossier-racine-du-site/ | + | DocumentRoot /home/user/www/site1/ |
- | <Directory /home/user/dossier-racine-du-site/ | + | <Directory /home/user/www/site1/ |
require all granted | require all granted | ||
AllowOverride All | AllowOverride All | ||
Ligne 330: | Ligne 329: | ||
</code> | </code> | ||
- | ==== Le module php5 ==== | + | <code root> |
+ | a2ensite site1.local | ||
+ | </code> | ||
- | Sur Jessie inutile d'activer le module avec a2enmod. | + | <code root> |
+ | systemctl reload apache2 | ||
+ | </code> | ||
- | * Pour les autres paquets concernant php5 : | + | ===On teste : === |
- | <code user>apt-cache search php5</code> | + | |
- | + | ||
- | * On installe les paquets nécessaires. | + | |
- | <code root>apt-get install php5 libapache2-mod-php5</code> | + | * Par exemple, dans le navigateur : **''site1.local''** |
+ | ===== Le module php7 ===== | ||
- | ==== Le module php7 ==== | + | ===On installe les paquets nécessaires=== |
+ | <code root>apt install php7.3-cli php7.3-fpm php7.3-json php7.3-pdo php7.3-mysql php7.3-zip php7.3-gd php7.3-mbstring php7.3-curl php7.3-xml php7.3-bcmath php7.3-json</code> | ||
+ | <code root>apt -y install libapache2-mod-php</code> | ||
- | * Pour les autres paquets concernant php7 : | + | === On active le mode php === |
- | <code user>apt-cache search php7</code> | + | |
- | * On installe les paquets nécessaires. | + | <code root>a2enmod php7.3</code> |
- | <code root>apt install php-pear php7.4 libapache2-mod-php7.4</code> | + | <code root>systemctl restart apache2</code> |
- | ==== Configurer Apache pour utiliser du code php dans un fichier avec une extension html ==== | + | ==== Fichiers intéressants ==== |
- | Par défaut, le code php est interprété s'il se trouve dans un fichier nommé avec l'extension .php, par exemple index.php.\\ | + | Tout est configuré comme il faut, mais à savoir ! |
- | Pour utiliser du code php comme ci-dessous dans un fichier nommé avec l'extension html, par exemple index.html : \\ | + | |
- | <code html> | + | ===La directive active directory=== |
- | <!DOCTYPE html> | + | |
- | <html> | + | |
- | <head> | + | |
- | <meta charset="UTF-8"> | + | |
- | <title>test1.net _ index.html</title> | + | |
- | </head> | + | |
- | + | ||
- | <body> | + | |
- | <h1>Bienvenue sur le site de test de /var/www/test1.net/index.php ! </h1> | + | |
- | <?php | + | |
- | phpinfo(); | + | <code user>more /etc/apache2/mods-available/dir.conf</code> |
- | ?> | + | <code bash>DirectoryIndex DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm</code> |
- | </body> | + | |
- | </html> | + | |
- | </code> | + | |
- | il faut modifier le fichier **/etc/apache2/mods-enabled/php7.4.conf** en ajoutant :\\ | ||
- | <code> | + | ===Le fichier php7.3.conf=== |
- | <FilesMatch ".+\.html$"> | + | |
+ | <code user> vim php7.3.conf</code> | ||
+ | <code user>more /etc/apache2/mods-enabled/php7.3.conf</code> | ||
+ | |||
+ | <code bash> | ||
+ | <FilesMatch ".+\.ph(ar|p|tml)$"> | ||
SetHandler application/x-httpd-php | SetHandler application/x-httpd-php | ||
</FilesMatch> | </FilesMatch> | ||
</code> | </code> | ||
+ | |||
+ | Les premières lignes que l'application x-httpd-php interprète les fichier qui se termine soit par ''.phar'', soit par ''.php'' soit par ''.phtml''. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===== Pour résumer ===== | ===== Pour résumer ===== | ||
+ | |||
+ | |||
+ | ===Fichiers de log d'apache === | ||
+ | |||
+ | * Erreurs | ||
+ | <code user>more /var/log/apache2/error.log</code> | ||
+ | |||
+ | Par exemple erreur suivante indique un problème de droit sur le fichier index.php | ||
+ | |||
+ | <code>[Mon Dec 07 19:18:33.354048 2020] [php7:error] [pid 5220] [client ::1:38114] PHP Fatal error: Unknown: Failed opening required '/home/user/www/mon_site.com/index.php' (include_path='.:/usr/share/php') in Unknown on line 0 | ||
+ | </code> | ||
+ | |||
+ | * Accès | ||
+ | |||
+ | <code user>more /var/log/apache2/access.log</code> | ||
=== Propriétés et droits === | === Propriétés et droits === | ||
Ligne 393: | Ligne 408: | ||
* **On donne les propriétés** : utilisateur du site et au groupe www-data :\\ ''chown -R utilisateur:www-data /chemin/du/site/'' | * **On donne les propriétés** : utilisateur du site et au groupe www-data :\\ ''chown -R utilisateur:www-data /chemin/du/site/'' | ||
- | * **On donne récursivement les droits 750 sur le dossier du site** :\\ ''chmod -R 750 /home/utilisateur/site/'' | + | * **On donne récursivement les droits 2750 sur le dossier du site** :\\ ''chmod -R 750 /home/utilisateur/site/'' |
+ | * SGID sur un fichier ou un dossier, Valeur octale : 2000, valeur symbolique : s | ||
* les droits de lecture + écriture + exécution pour l'utilisateur (7) | * les droits de lecture + écriture + exécution pour l'utilisateur (7) | ||
* les droits de lecture + exécution pour le groupe www-data (5) | * les droits de lecture + exécution pour le groupe www-data (5) | ||
Ligne 400: | Ligne 416: | ||
<note tip> | <note tip> | ||
- | **Ne pas laisser les droits d’exécution sur les fichiers !** | + | Pour les //paranoïdes// de la sécurité.\\ |
- | + | ||
- | Si le droit d'exécution est nécessaire pour traverser les sous-dossiers du site, quand ceux-ci contiendront les fichiers de code source, mieux vaut retirer récursivement depuis le dossier racine du site le droit d'exécution sur tous les fichiers.\\ | + | |
- | + | ||
- | Pour ce faire : | + | |
+ | <code root>cd /chemin/dossier/site_web && find . -type d -exec chmod 2750 {} \;</code> | ||
<code root>cd /chemin/dossier/site_web && find . -type f -exec chmod 640 {} \;</code> | <code root>cd /chemin/dossier/site_web && find . -type f -exec chmod 640 {} \;</code> | ||
</note> | </note> | ||
Ligne 466: | Ligne 479: | ||
<code root>a2dismod nomModule</code> | <code root>a2dismod nomModule</code> | ||
- | ===== Modules Php ===== | ||
- | Pour installer un module php en fonction de sa version de php | + | ===== Pour un projet symfony5 ===== |
+ | |||
+ | ==== On installe Apache2 si c'est pas fait ==== | ||
+ | |||
+ | <code root>apt install apache2</code> | ||
+ | |||
+ | ==== On installe php7 ==== | ||
+ | |||
+ | <code root> | ||
+ | apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-sqlite3 php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-ldap php7.2-gd php7.2-bcmath php7.2-xml php7.2-cli php7.2-zip | ||
+ | </code> | ||
+ | |||
+ | ==== On configure php pour Apache ainsi==== | ||
+ | |||
+ | <code root>/etc/php/7.[version]/apache2/php.ini </code> | ||
+ | |||
+ | <code> | ||
+ | file_uploads = On | ||
+ | allow_url_fopen = On | ||
+ | short_open_tag = On | ||
+ | memory_limit = 256M | ||
+ | upload_max_filesize = 100M | ||
+ | max_execution_time = 360 | ||
+ | </code> | ||
+ | |||
+ | ==== On crée un virtualhost de même nom que le projet symfony==== | ||
+ | <code root> | ||
+ | cd /etc/apache2/sites-available && vim TestSymfony | ||
+ | </code> | ||
+ | apt install php7.2 libapache2-mod-php7.2 php7.2-common php7.2-sqlite3 php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-ldap php7.2-gd php7.2-bcmath php7.2-xml php7.2-cli php7.2-zip | ||
+ | <code> | ||
+ | <VirtualHost *:80> | ||
+ | ServerName TestSymfony | ||
+ | |||
+ | DocumentRoot /var/www/TestSymfony/public/ | ||
+ | |||
+ | <Directory /var/www/TestSymfony/public/> | ||
+ | Options FollowSymLinks MultiViews | ||
+ | AllowOverride All | ||
+ | Order allow,deny | ||
+ | Allow from All | ||
+ | </Directory> | ||
+ | |||
+ | ErrorLog /var/log/apache2/project_error.log | ||
+ | CustomLog /var/log/apache2/projec_access.log combined | ||
+ | </VirtualHost> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== On donne les bons droits au dossier du projet ==== | ||
+ | Symfony a besoin du droit d’exécution de certains fichiers. | ||
+ | |||
+ | <code root> | ||
+ | chown -R www-data:www-data /var/www/TestSymfony/ | ||
+ | chmod -R 755 /var/www/TestSymfony/ | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== On crée un lien symbolique vers "site enable" ==== | ||
+ | |||
+ | <code root> | ||
+ | a2ensite TestSymfony && systemctl restart apache2.service | ||
+ | </code> | ||
+ | |||
+ | === Discuter avec Apache === | ||
+ | <code root> | ||
+ | systemctl [stop|start|enable] apache2.service | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== On installe symfony ==== | ||
<code user> | <code user> | ||
- | php -v | + | mkdir InstallSymfonyComposer |
+ | cd InstallSymfonyComposer/ | ||
+ | wget https://getcomposer.org/installer | ||
+ | |||
+ | php installer | ||
+ | |||
+ | cp composer.phar composer.phar_copy | ||
+ | |||
+ | sudo mv composer.phar /usr/local/bin/composer | ||
+ | |||
+ | sudo chmod +x /usr/local/bin/composer | ||
+ | |||
+ | cd /var/www/ | ||
</code> | </code> | ||
- | Puis | + | <code user> |
+ | composer create-project symfony/skeleton TestSymfony | ||
+ | </code> | ||
+ | |||
+ | Le dossier web /var/www appartient à root : | ||
<code root> | <code root> | ||
- | apt-get install php[version-here]-sqlite3 | + | chmod -R 777 /var/www/ |
</code> | </code> | ||
+ | |||
+ | Pour créer une application plus légère comme un microservice, une app console ou une API dans une certaine version du framework : | ||
+ | <code user> | ||
+ | composer create-project symfony/skeleton TestSymfony [^version_voulue] | ||
+ | </code> | ||
+ | |||
+ | ou | ||
+ | <code user> | ||
+ | symfony new my_project [--version=lts|stable|4.4] | ||
+ | </code> | ||
+ | |||
+ | Pour créer une application web traditionnelle : | ||
+ | <code user> | ||
+ | composer create-project symfony/website-skeleton TestSymfony | ||
+ | </code> | ||
+ | |||
+ | ou | ||
+ | |||
+ | <code user> | ||
+ | symfony new --full my_project [--version=lts|stable|4.4] | ||
+ | </code> | ||
+ | |||
+ | |||
+ | On n'oublie de remettre les droits à /var/www | ||
+ | |||
+ | <code root> | ||
+ | chmod -R 755 /var/www/ | ||
+ | </code> | ||
+ |