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 | ||
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-prendre-en-main-apache2-sur-jessie [25/12/2020 05:21] Hypathie [Pour un projet symfony5] |
utilisateurs:hypathie:tutos:creer-son-site-web-en-php-_-prendre-en-main-apache2-sur-jessie [17/09/2023 10:36] (Version actuelle) Hypathie [Pour un projet symfony5] |
||
---|---|---|---|
Ligne 253: | Ligne 253: | ||
</code> | </code> | ||
- | ====On teste=== = | + | ====On teste==== |
* Dans le navigateur depuis une autre machine du réseau local, par exemple une d'ip 192.168.0.14 : **''essai.local''** | * Dans le navigateur depuis une autre machine du réseau local, par exemple une d'ip 192.168.0.14 : **''essai.local''** | ||
* Puis idem pour : **''test.local''** | * Puis idem pour : **''test.local''** | ||
Ligne 274: | Ligne 274: | ||
- | <code root>chmod -R 2750 /home/user/www/</code> | + | <code root>chmod -R 755 /home/user/www/</code> |
+ | <note> | ||
+ | Si on veut que www-data puisse écrire (log ou autre) il faut ajouter les droits d'écriture pour le groupe : \\ | ||
+ | ''chmod -R 775 /home/user/www/'' \\ | ||
+ | |||
+ | * 700 : 4 (lecture) + 2 (écriture) + 1 (exécution) pour l'utilisateur | ||
+ | * 070 : idem pour le groupe | ||
+ | * 005 : 2 (écriture) + 1 (exécution) pour les autres | ||
+ | Avec -R pour récursif dans les répertoires, il faut le droit d'éxécution pour traverser un répertoire. | ||
+ | |||
+ | </note> | ||
==== On crée un dossier pour le site1 et un index.html pour tester ==== | ==== On crée un dossier pour le site1 et un index.html pour tester ==== | ||
Ligne 286: | Ligne 296: | ||
==== 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 root>ln -s /home/user/www/site1/ /var/www/essai</code> | + | <code root>ln -s /home/user/www/site1/ /var/www/site1</code> |
- | + | ||
- | Il n'y a rien de plus à faire, ni à modifier le virtualhost ni à recharger apache. | + | |
==== On lui crée un 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 root>vim /etc/apache2/sites-available/site1.conf</code> | ||
<code><VirtualHost *:80> | <code><VirtualHost *:80> | ||
Ligne 313: | Ligne 323: | ||
<code root> | <code root> | ||
- | a2ensite site1.local | + | a2ensite site1.conf |
</code> | </code> | ||
Ligne 340: | Ligne 350: | ||
==== Fichiers intéressants ==== | ==== Fichiers intéressants ==== | ||
- | Tout est configuré comme il faut, mais à savoir ! | + | ===php.ini === |
+ | |||
+ | <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> | ||
===La directive active directory=== | ===La directive active directory=== | ||
Ligne 401: | Ligne 422: | ||
Pour les //paranoïdes// de la sécurité.\\ | Pour les //paranoïdes// de la sécurité.\\ | ||
- | <code root>cd /home/nathalie/www/ && find . -type d -exec chmod 2755 {} \;</code> | + | <code root>cd /home/nathalie/www/ && find . -type d -exec chmod 2775 {} \;</code> |
<code root>cd /home/nathalie/www/ && find . -type f -exec chmod 0664 {} \;</code> | <code root>cd /home/nathalie/www/ && find . -type f -exec chmod 0664 {} \;</code> | ||
</note> | </note> | ||
Ligne 457: | Ligne 478: | ||
===== Pour un projet symfony5 ===== | ===== Pour un projet symfony5 ===== | ||
- | ==== On installe Apache2 si c'est pas fait ==== | + | Apache2 et php7 sont installés. |
- | <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==== | ==== On crée un virtualhost de même nom que le projet symfony==== | ||
Ligne 576: | Ligne 578: | ||
- | On n'oublie de remettre les droits à /var/www | + | On n'oublie de remettre les droits d'origines à /var/www |
<code root> | <code root> | ||
Ligne 582: | Ligne 584: | ||
</code> | </code> | ||
+ | Avec un virualhost qui pointe dans un répertoire personnel pour symfony : | ||
+ | |||
+ | <code root> | ||
+ | chmod -R 2775 /var/www/ | ||
+ | </code> | ||
+ | ===== Pour un projet symfony5 ===== | ||
+ | |||
+ | 1. À la racine du projet symfony on ajoute un fichier dans public/.htaccess | ||
+ | |||
+ | <code file> | ||
+ | # Use the front controller as index file. It serves as a fallback solution when | ||
+ | # every other rewrite/redirect fails (e.g. in an aliased environment without | ||
+ | # mod_rewrite). Additionally, this reduces the matching process for the | ||
+ | # start page (path "/") because otherwise Apache will apply the rewriting rules | ||
+ | # to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). | ||
+ | DirectoryIndex index.php | ||
+ | |||
+ | # By default, Apache does not evaluate symbolic links if you did not enable this | ||
+ | # feature in your server configuration. Uncomment the following line if you | ||
+ | # install assets as symlinks or if you experience problems related to symlinks | ||
+ | # when compiling LESS/Sass/CoffeScript assets. | ||
+ | # Options +FollowSymlinks | ||
+ | |||
+ | # Disabling MultiViews prevents unwanted negotiation, e.g. "/index" should not resolve | ||
+ | # to the front controller "/index.php" but be rewritten to "/index.php/index". | ||
+ | <IfModule mod_negotiation.c> | ||
+ | Options -MultiViews | ||
+ | </IfModule> | ||
+ | |||
+ | <IfModule mod_rewrite.c> | ||
+ | # This Option needs to be enabled for RewriteRule, otherwise it will show an error like | ||
+ | # 'Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden' | ||
+ | Options +FollowSymlinks | ||
+ | |||
+ | RewriteEngine On | ||
+ | |||
+ | # Determine the RewriteBase automatically and set it as environment variable. | ||
+ | # If you are using Apache aliases to do mass virtual hosting or installed the | ||
+ | # project in a subdirectory, the base path will be prepended to allow proper | ||
+ | # resolution of the index.php file and to redirect to the correct URI. It will | ||
+ | # work in environments without path prefix as well, providing a safe, one-size | ||
+ | # fits all solution. But as you do not need it in this case, you can comment | ||
+ | # the following 2 lines to eliminate the overhead. | ||
+ | RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$ | ||
+ | RewriteRule .* - [E=BASE:%1] | ||
+ | |||
+ | # Sets the HTTP_AUTHORIZATION header removed by Apache | ||
+ | RewriteCond %{HTTP:Authorization} .+ | ||
+ | RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0] | ||
+ | |||
+ | # Redirect to URI without front controller to prevent duplicate content | ||
+ | # (with and without `/index.php`). Only do this redirect on the initial | ||
+ | # rewrite by Apache and not on subsequent cycles. Otherwise we would get an | ||
+ | # endless redirect loop (request -> rewrite to front controller -> | ||
+ | # redirect -> request -> ...). | ||
+ | # So in case you get a "too many redirects" error or you always get redirected | ||
+ | # to the start page because your Apache does not expose the REDIRECT_STATUS | ||
+ | # environment variable, you have 2 choices: | ||
+ | # - disable this feature by commenting the following 2 lines or | ||
+ | # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the | ||
+ | # following RewriteCond (best solution) | ||
+ | RewriteCond %{ENV:REDIRECT_STATUS} ="" | ||
+ | RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L] | ||
+ | |||
+ | # If the requested filename exists, simply serve it. | ||
+ | # We only want to let Apache serve files and not directories. | ||
+ | # Rewrite all other queries to the front controller. | ||
+ | RewriteCond %{REQUEST_FILENAME} !-f | ||
+ | RewriteRule ^ %{ENV:BASE}/index.php [L] | ||
+ | </IfModule> | ||
+ | |||
+ | <IfModule !mod_rewrite.c> | ||
+ | <IfModule mod_alias.c> | ||
+ | # When mod_rewrite is not available, we instruct a temporary redirect of | ||
+ | # the start page to the front controller explicitly so that the website | ||
+ | # and the generated links can still be used. | ||
+ | RedirectMatch 307 ^/$ /index.php/ | ||
+ | # RedirectTemp cannot be used instead | ||
+ | </IfModule> | ||
+ | </IfModule> | ||
+ | </code> | ||
+ | |||
+ | 2. On active le mode rewrite d'apache | ||
+ | |||
+ | <code root> | ||
+ | a2enmod rewrite && systemctl restart apache2 | ||
+ | </code> |