Ce projet est un TP de l'esiee d'Amiens
Pour installer le projet vous pouvez suivre les étapes classique ou lancer ce script d'installation
curl https://git.arkalo.ovh/Omer/project/raw/branch/master/install.sh | bash
apt install nginx git php-fpm php-zip php-xml
Vous pouvez aussi installer apache au lieu de nginx
Ce projet fonctionne sous symfony 5 Il est donc necessaire d'installer la version > 7.3 de PHP.
cd /var/www/html
git clone
chown -R www-data:www-data webapp
cp .env.dist .env
Editez le fichier .env
avec vos infos d'environements (database, constantes...)
N'oubliez pas de remplir le fichier d'environment avant de procéder à cette étape
php bin/console d:d:c
Appliquer les migrations
php bin/console m:migration
php bin/console d:m:m
server {
root /var/www/html/webapp/public;
client_max_body_size 10G;
fastcgi_buffers 64 4K;
location / {
proxy_read_timeout 180000;
proxy_connect_timeout 180000;
proxy_send_timeout 180000;
send_timeout 180000;
# try to serve file directly, fallback to app.php
try_files $uri /index.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy index_dev.php or config.php
location ~ ^/(index_dev|config)\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
# Caveat: When PHP-FPM is hosted on a different machine from nginx
# $realpath_root may not resolve as you expect! In this case try using
# $document_root instead.
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/index\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the webapp controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# return 404 for all other php files not matching the webapp controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
Ces deux lignes servent à augmenter la taille upload sur le serveur. J'ai mis 1G pour uploader les images (c'est laaaaaargement bon)
client_max_body_size 1G;
fastcgi_buffers 64 4K;
Vous pouvez aussi installer ce projet avec apache
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/project/public
DirectoryIndex /index.php
<Directory /var/www/project/public>
AllowOverride None
Order Allow,Deny
Allow from All
FallbackResource /index.php
</Directory>
# uncomment the following lines if you install assets as symlinks
# or run into problems when compiling LESS/Sass/CoffeeScript assets
# <Directory /var/www/project>
# Options FollowSymlinks
# </Directory>
# optionally disable the fallback resource for the asset directories
# which will allow Apache to return a 404 error when files are
# not found instead of passing the request to Symfony
<Directory /var/www/project/public/bundles>
DirectoryIndex disabled
FallbackResource disabled
</Directory>
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
# optionally set the value of the environment variables used in the application
#SetEnv APP_ENV prod
#SetEnv APP_SECRET <app-secret-id>
#SetEnv DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name"
</VirtualHost>
Sur ce projet j'ai rajouté une API qui permet de récupérer via des requetes GET.
curl http://localhost/pokemon.json
[
{
"id": 4512,
"numero": 1,
"nom": "Bulbasaur",
"vie": 45,
"attaque": 49,
"defense": 49,
"legendaire": false,
"type1": "\/api\/types\/1678",
"type2": "\/api\/types\/1690",
"generation": {
"id": 817,
"name": "1"
}
},
{
"id": 4513,
"numero": 2,
"nom": "Ivysaur",
"vie": 60,
"attaque": 62,
"defense": 63,
"legendaire": false,
"type1": "\/api\/types\/1678",
"type2": "\/api\/types\/1677",
"generation": {
"id": 817,
"name": "1"
}
},
]
Pour importer les pokemons, tapez cette commande à la racine du projet
php bin/console import:pokemon