Nous sommes le Jeu 28 Mars, 2024 12:32
Supprimer les cookies

Complément du tutoriel Créer sa webapp

Support et Développement des applications web portables

Mar 19 Mai, 2009 22:59

Si ça peut aider je vais résumer décrire un peu ce que j'en ai compris. (au début c'était pour répondre à cyrille mais vu la longueur du message... :) )

D'abord, dans le dossier data c'est là que sont stockées les bases de donnée MySQL.

Ensuite, le fichier startup.ini contient tous les scripts qui se lancent au démarrage pour synchroniser les ports d'accès aux pages web (8080, 8081, etc (variable {$zmws_port})) et à la base de donnée (3307, 3308, etc (variable {$mysql_port})) en fonction du nombre de webapps qui sont déjà démarrées sur la machine. Il ne sert que dans le cas où il y a plusieurs webapps lancée en même temps, pour un usage seul c'est forcément portable (ou presque, cf Joomla).

Une section "UpdateEskuelPort" est obligatoire pour synchroniser le port MySQL ouvert pour la webapp de manière à pouvoir administrer sa base de donnée avec Eskuel (dans le menu du Framakey Webapps Manager)
[UpdateEskuelPort]
Name=Syncronize Eskuel Port
Description=Update Eskuel config with the Open MySQL Port
Type=REPLACE
File={$root_path_absolute}\ZMWS\_web.zmwsc\_vhosts.zmwsc\127.0.0.2\eskuel\config.inc.php
SearchPattern=127.0.0.1(:\d*)?
ReplaceValue=127.0.0.1:{$mysql_port}


Ensuite, selon les applications on a vérifier que le site web est accessible si on en change la racine. Hors contexte de portabilisation ça serait par exemple, déplacer l'application dans un sous-dossier par exemple. Là il s'agit de lui ajouter un port pour le cas ou le port 80 par défaut serait déjà occupé par une autre webapp précédemment lancée.
Donc, si on a dans un fichier type include/config.php un paramètre avec http://127.0.0.1 pour indiquer la racine du site web, il faut éditer le fichier de config en question pour remplacer à chaque démarrage la ligne du style:
[UpdateWebPort]
Name=Syncronize Web Port
Description=Update config with the Open Web Port
Type=REPLACE
File={$root_path_absolute}\App\{$ApplicationPath}\include\config.php
SearchPattern=\$host\=http://127.0.0.1(:\d*)?
ReplaceValue=\$host\=http://127.0.0.1:{$zmws_port}

Après on peu avoir le même genre d'info stocké dans la base de donnée (le cas avec Posh), au quel cas il faut exécuter une requête SQL pour faire le changement (vérifier dans la base de donnée avec Eskuel s'il n'y a pas un table type "config") :
[UpdateAdminLocalFolderPort]
Name=Update LocalFolder
Description=Update posh "adm_config" table with some real config values
Type=SQL
Query=UPDATE `adm_config` SET `value`='http://127.0.0.1:{$zmws_port}/posh/' WHERE `parameter`='LOCALFOLDER';


Deuxièmement, s'il y a une base de donnée il y a forcément un fichier de config en php qui contient les paramètres d'accès à la base (serveur = localhost, utilisateur = root, mot de passe ="", base de donnée = "nom_du_logiciel") tout ce qu'on a à modifier c'est le "localhost" pour lui ajouter le port de la base de donnée.
typiquement un truc du type :
[UpdateMySQLPort]
Name=Update Eskuel Port
Description=Update Eskuel config with the Open MySQL Port
Type=REPLACE
File={$root_path_absolute}\App\{$ApplicationPath}\includes\config.php
SearchPattern=\$sql_server \= localhost(:\d*)?;
ReplaceValue=\$sql_server \= localhost:{$mysql_port};

Idem, les paramètres peuvent être stocké dans la base de donnée (ce qui est assez bizarre mais c'était le cas avec Posh)
[UpdateAdminServerSQLPort]
Name=Update Server SQL
Description=Update posh "adm_config" table with some real config values
Type=SQL
Query=UPDATE `adm_config` SET `value`='localhost:{$mysql_port}' WHERE `parameter`='SERVER';


Enfin, il peut y avoir des emplacements définis depuis la racine de la clé, le cas avec Joomla pour les fichiers temporaires ou de logs.
[UpdateLogsPath]
Name=Update Logs Path
Description=Update Logs Path
Type=REPLACE
File={$root_path_absolute}\App\{$ApplicationPath}\configuration.php
SearchPattern=var \$log_path \= '([a-zA-Z\\.:]*)?logs';
ReplaceValue=var \$log_path \= '{$r_p_a_backslashes}\App\{$ApplicationPath}\logs';

({$r_p_a_backslashes} ça vaut {$root_path_absolute} mais en doublant les \ pour éviter que ça ne soit considéré comme caractère spécial... on n'aurait pas ce problème si on était sous linux ;) )

Voilà pour la partie startup.ini.

Pour les script.ini, en gros on y met ce qu'on veut mais les scripts pour Wordpress ne fonctionneront nulle part ailleurs. En gros, pour le moment, je me contente de créer un lien vers l'interface d'admin s'il y en a une et un lien pour éditer les fichiers de config du type administration du site.
Pour PMB par exemple, il y a la config de la base de donnée (db_param.inc.php) et la config du site (confing.inc.php).
Après concernant la réinitialisation du mot de passe j'ai pas compris la requête effectuée pour wordpress donc j'ai pas trop cherché pour les autres, idem pour les options par défaut, il faudrait fouiller dans la base de donnée, extraire les éléments qui vont bien pour en faire un fichier sql qui ferait le nettoyage sur commande. Bref, c'est un peu fastidieux et pas forcément justifié selon le logiciel utilisé.

Par contre, dans les scripts génériques, il y a une option "exporter de la base de donnée" qu'il faut faire une fois que l'installation est finalisée. Avec le fichier obtenu on remplace le fichier master.sql qui servira pour la réinitialisation de la base de donnée au cas où l'utilisateur ferait une bêtise.

Pour finir, par rapport au Wordpress qui sert de modèle dans le tutoriel de pyg, on peut supprimer export-Wordpress-xxx.sql, reset-main-option.sql, et supprimer avant de démarrer l'installation du logiciel le contenu de startup.ini (à part la section "UpdateEskuelPort") car ça affiche le message d'erreur dont on se passerait bien et crée un fichier wp-config.php inutile. Tout ça en plus des dossiers "wordpress" dans "App" et dans "App/data" et de script.ini comme indiqué dans le tutoriel.

Il faut aussi éditer le message qui s'affiche au démarrage (fichier help.fr.html) et changer l'icône avec AutoIT (je crée un icône 48x48 en plus de celle en 16x16 utilisée dans le systray), pour ça choisir "Compile Script to .exe", aller chercher le fichier "Wordpress.au3" dans le dossier "Other", sélectionner le fichier WordpressPortable.exe (ou xxxPortable.exe s'il est déjà renommé) et sélectionner l'icône en 48x48.
JosephK

Avatar de l’utilisateur
Messages : 2221

Mer 20 Mai, 2009 15:10

Merci et bravo pour ce complément au tutoriel de Pyg.
Peut-être pourrait-on l'ajouter sur le portail Framakey / webapps ?
cyrille

Avatar de l’utilisateur
Messages : 953
Géo : Seine et Marne

Mer 20 Mai, 2009 22:48

Si besoin, je peux m'en charger

Amicalement
L'homme n'est pas fait pour travailler et la preuve, c'est que ça le fatigue. (Marcel Proust)
dedenimes

Messages : 2410
Géo : proche de Nîmes

Ven 22 Mai, 2009 23:27

L'homme n'est pas fait pour travailler et la preuve, c'est que ça le fatigue. (Marcel Proust)
dedenimes

Messages : 2410
Géo : proche de Nîmes

Sam 23 Mai, 2009 01:13

Cool, merci :)
*Nouveau venu ? Lisez les règles d'utilisation de ce forum
*Une question à poser ? Assurez vous qu'on vous répondra
*Soutenir Framasoft ? Participez à l'annuaire !
*"T'es où ?" Inscrivez vous sur la FramaMap
pyg

Avatar de l’utilisateur
Messages : 7858
Géo : Lyonnais

Dim 08 Avr, 2012 14:43

J'ai trouvé un tutoriel sur le web pour créer facilement une webapp pour iPhone si cela vous intéresse, rendez-vous sur le site DocsForWeb.com dans la rubrique aide --> Comment construire un site pour mobile

Bonne chance :)
druido


Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit