Closed CapsHil closed 7 years ago
Thinking about it, I think once a couple of directory are created, the database set up and running and the web server set up, there isn't anything to do to "start" the database. I can list what to do/write a small script but not sure if setting loading MySQL and configuring the web server fall in the scope of the backend deployment.
I think this script could be used as a basis for the setup https://github.com/lj2007331/lnmp Config will probably need some tweaking but I don't have any handy way to run the Docker container, and not quite sure how to configure one anyway :/
@CapsHil is going to handle the container config. We just need to know how to get your app up and running on a bare metal configuration before we try to build a container.
The thing is that I'm not sure where the boundary is between the ridiculously light configuration needed to run the actual backend and the layers of configurations to get its stack (web server redirecting requests to PHP with a working MySQL database) running...
The backend itself only need a MySQL database running, with the tables in https://github.com/CapsHil/Projet_Web_2017_ESIEA/blob/dev/backend/db_schema.sql loaded and the login details in https://github.com/CapsHil/Projet_Web_2017_ESIEA/blob/dev/backend/config.inc.php. The PHP code I wrote is pretty much stateless and doesn't need anything specific to "start".
@Taiki-San @Bougainville Please consider us others as two-year-old kids who need a refresher course about php apps.
We just want to know how to run the backend :
Sure.
LAMP (Linux Apache MySQL PHP) is an extremely common and well documented setup but if you want to use a different web server, feel free to do so. Ping me if you want me to find a tutorial on how/what to install and configure to get a basic setup working.
How to set it up: Drop the content of the backend directory wherever you want it, and update config.inc.php
so that $publicMusicDirectory
and $relativeMusicDirectory
point to the proper directory. $relativeMusicDirectory
is used to write the uploaded and renamed file to its public directory. $publicMusicDirectory
is used to return the path to the track to play and thus must be publicly accessible (either that or the frontend will have to proxy the transfer).
How to use it: The backend was designed under the assumption that calls would be passed through web arguments, meaning we expect GET and POST arguments. For instance, posting a message could be achieved by performing a GET request to the following URL localhost:8080/backend/api/sendMessage.php?userID=4242&message=blablabla
. This would require the arguments to be URL encoded and I'm not entirely sure wether PHP will automatically decode them. I'll check it out. If you rather want JSON, I could update the backend. However, that would take some time.
I hope this was helpful, ping me if you want me to lend a hand.
[URGENT] @Taiki-San @Bougainville Désolé pour la remarque, mais ceci n'est absolument pas RESTfull... Un exemple de path REST :
[GET]localhost:8080/api/users
=> Retourne les users[POST]localhost:8080/api/users
=> Créer un user[GET]localhost:8080/api/users/{id}
=> Retourne l'user avec l'id {id}Les arguments doivent être passé via le BODY HTTP sous format JSON (de préférence mais pas obligatoire, est clairement entrain de s'imposer comme la norme polymorphe).
Vous avez un script pour seeder la BDD lors de l'install ?
Comment j'importe le schema de la BDD dans MySQL ?
Arf, j'avais ouvert #4 pour qu'on voit ça plus tôt... Je vais voir comment forcer PHP à prendre une forme plus REST. En particulier, pour ce qui est des arguments, ça risque d'être funky.
Pour la BDD, il suffit d'importer le fichier .sql dans MySQL (https://stackoverflow.com/questions/17666249/how-to-import-an-sql-file-using-the-command-line-in-mysql) pour avoir le schéma. Le fichier config.inc.php aura à être mis à jour avec les identifiants.
Pour ce qui est de seeder la base, n'ayant pas le jeu de test (on ne va pas mettre des fichiers .mp3 sur GitHub), il n'y a pas vraiment grand chose à mettre dedans. On peut créer quelques utilisateurs si nécessaire mais ça sera sûrement plus simple à faire depuis l'UI et enlève des étapes à la mise en prod.
Ça c'est cadeau pour faire du REST ;) https://github.com/mevdschee/php-crud-api
Je vais me débrouiller pour MySQL le but étant de n'avoir absolument aucune action à réaliser manuellement lors du first build.
Eh, on est tombé sur le même chose :P J'étais en train de partir sur https://www.leaseweb.com/labs/2015/10/creating-a-simple-rest-api-in-php/ pour n'avoir à remplacer que l'interprétation des arguments et les path/nomenclature.
Le problème est que je ne veux pas exposer tout ma BDD, seulement mes APIs un peu plus haut niveau, à moins qu'on se soit mal compris.
Fait comme tu préfères, tant qu'on est plus obligé de parametriser l'URL :P
Vendu, on est dessus :P
Bon, l'API est à jour, je met à jour la documentation et on test tout ça
Nice ! Je suis entrain de terminer le deploiement et la config de votre stack sous Docker
Okay. Par contre, il va falloir qu'on discute de comment on s'organise pour l'upload du fichier lors de la création de chanson (si on garde la feature)
L'upload me parait pertinent pour le moment, on verra ca une fois qu'on pourra déjà jouer correctement ;)
Entendu :) La documentation est à jour.
Please can you write a readme/how-to to deploy, start & use your backend part. Thanks !