Actu, conseils, tutos, technique pour l'iPod et l'iPhone
Vous n'êtes pas identifié.
BlogiTouch rejoint Blog iPhone, pour toujours plus de contenus sur les terminaux mobiles Apple. Rien ne se perd, et surtout pas le forum, qui sera lui aussi migré dans les jours à venir
Derniers tutos officiels !
- Tuto Jailbreakme.com : Comment jailbreaker simplement son iPod Touch !
- Jailbreaker tous les iPhones de 3.0 à 4.0
- Jailbreak & Desimlock iOS4
Un serveur local sur votre iTouch/iPhone ? Apache avec PHP et MySQL ? Ca marche vraiment ? Que faut-il faire ? Ne vous inquiétez pas, tout est expliqué dans ce tuto. Par contre si vous ne savez pas ce qu'est un serveur local ou Apache, PHP et MySQL, je vous prie d'appuyer sur le bouton précédent de votre navigateur.
Ce tuto est composé de cette manière :
I. Présentation
II. Installation de Apache
III. Installation de PHP
IV. Configuration de Apache
V. Installation de MySQL
VI. Conclusion
VII. Annexes
Dernière modification par NoaX (15-02-2008 07:50:26)
Hors ligne
I. Présentation
A) Un serveur local
B) Apache, PHP et MySQL
C) Pré-requis
A) Un serveur local
Un serveur local est une émulation de serveur web mais sans connexion internet obligatoire. Cela ouvre de nombreuses possibilités telles que la gestion d'un site en local, ou la visualisation de fichiers sur le serveur, etc... Et tout cela en sur son propre ordinateur ou plateforme.
B) Apache, PHP et MySQL
Apache émule un serveur de protocole http et permet une gestion de langages annexes (comme le PHP, le Ruby, le Python, voire même du C). Cet émulateur visualise tout les fichiers du serveur via un langage natif simple qui est le HTML. Nous allons donc installer cet émulateur car c'est un serveur qui est très développé dans le monde du web et qui est assez facile a configurer.
PHP est un langage, utilisable sur une plateforme comme Apache, qui génère un langage HTML via une utilisation dynamique. En effet, celui-ci utilise des variables ainsi que des gestions de bases de données (comme MySQL) et tout cela se fait avec une gestion client <-> serveur. MySQL, lui, est une base de donnée assez facile d'utilisation et ayant pour syntaxe le SQL (langage universel a toutes les SGBD). C'est un langage structuré ayant des syntaxes claires. Nous allons donc utiliser ces deux langages afin de créer un serveur local pratique et utilisant toutes les possibilités.
C) Pré-requis
● Une plateforme iTouch/iPhone jailbreaké selon la version de votre choix
● BSD Subsytem installé (version 2.0 de préférence)
● Une connexion internet par wifi afin d'installer les composants via Installer
● WinSCP avec PuTTy
Dernière modification par NoaX (14-02-2008 22:36:54)
Hors ligne
II. Installation de Apache
A) Téléchargement
B) Installation
C) Utilisation
A) Téléchargement
Tout d'abord, vous devez disposer de l'application Installer d'un iTouch/iPhone jailbreaké. Aller dans Installer, puis dans le menu, l'onglet Install, choisissez la section Network, puis trouvez Apache :
Installer -> Install -> Network -> Apache
Légende :
Application Springboard
Onglet
Section
Application
B) Installation
L'installation se fait automatique, mais il se peut que le serveur de téléchargement soit surchargé ou inaccessible. Si c'est le cas, patientez quelques minutes puis recommencez.
C) Utilisation
Voila, votre serveur Apache est installé, mais qu'en est-il de l'utilisation ? Le principe est simple. Vous devez utiliser le navigateur Safari, puis entrer l'adresse suivante : http://127.0.0.1/. Vous verrez une page déjà faite (en HTML) disant que votre serveur local est prêt.
Pour mettre des fichiers sur le serveur, vous devez utiliser un système de transfère de fichier de votre choix (WinSCP¨ou Filezilla par exemple) et utiliser le système de SFTP (Si vous ne savez pas comment l'utiliser aller, dans l'Annexe dans la section WinSCP). Vous devez mettre vos fichiers dans /Library/WebServer/Documents/ (bien sur, je pars de la racine de l'iTouch/iPhone).
Dernière modification par NoaX (14-02-2008 23:13:00)
Hors ligne
III. Installation de PHP
A) Téléchargement
B) Installation
C) Utilisation
A) Téléchargement
L'installation se fait comme pour Apache via l'Installer du springboard et il faut bien entendu avoir un iTouch/iPhone jailbreaké. Aller dans Installer, puis dans le menu, l'onglet Install, choisissez la section Developement, puis trouvez PHP :
Installer -> Install -> Developement -> PHP
Légende :
Application Springboard
Onglet
Section
Application
B) Installation
L'installation se fait automatique, mais il se peut que le serveur de téléchargement soit surchargé ou inaccessible. Si c'est le cas, patientez quelques minutes puis recommencez.
C) Utilisation
Afin d'utiliser PHP, il faut configurer Apache. Cela se fait dans le prochain chapitre. Sachez néanmoins que cette version de PHP ne gère ni les fonctions MySQL, ni la GD, ni d'autres fonctions qui sont la plus part du temps inutilisées. Cela sera disponible lors de l'installation de MySQL.
Dernière modification par NoaX (14-02-2008 23:13:13)
Hors ligne
IV. Configuration de Apache
A) Accès aux fichiers
B) Modifications
C) Tests
A) Accès aux fichiers
Notre objectif est d'incorporer notre langage annexe qu'est PHP dans notre serveur Apache. Pour cela, il faut configurer ce serveur pour qu'il reconnaisse l'existence de PHP et qu'il puisse utiliser sa puissance lors de la lecture d'un fichier. On va modifier 2 fichiers au total :
/private/etc/profile
/private/etc/httpd/httpd.conf
Le premier fichier permet le lien entre PHP et Apache, et le second fichier permet la lecture de PHP et de l'interprétation de celui-ci.
B) Modifications
Ouvrez le fichier profile du chemin /private/etc/profile (en partant de la racine de l'iTouch/iPhone). et suivez le protocol suivant :
I) Cherchez la ligne : PATH=" II) Modifiez par : PATH="/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/opt/iphone/bin"
Ensuite, ouvrez le fichier /private/etc/httpd/httpd.conf (en partant de la racine de l'iTouch/iPhone). et suivez le protocol suivant :
I) Cherchez la ligne :
DirectoryIndex index.html
II) Modifier par :
DirectoryIndex index.html index.php index.htm
III) Cherchez la ligne :
<IfModule mod_alias.c>
[...]
Alias /icons/ "/usr/share/httpd/icons/"
<Directory "/usr/share/httpd/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
[...]
Alias /manual/ "/Library/WebServer/Documents/manual/"
<Directory "/Library/WebServer/Documents/manual">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
[...]
ScriptAlias /cgi-bin/ "/Library/WebServer/CGI-Executables/"
[...]
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
</IfModule>
IV) Ajouter avant le </IfModule> :
ScriptAlias /php /opt/iphone/bin
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi"Voila, votre serveur Apache peut gérer le PHP.
C) Tests
Il est recommandé avant tout de redémarrer son iTouch/iPhone afin d'être sur que les paramètres on bien été mis en place. Ensuite allez dans /Library/WebServer/Documents/ et ajoutez un fichier nommé index.php contenant les lignes suivantes :
<? phpinfo(); ?>
Utilisez Safari et aller à l'adresse du serveur local (http://127.0.0.1) puis regardez si vous avez un long tableau résumant toutes les directives de PHP. Si vous n'avez que les lignes du fichier a l'écran c'est que vous avez raté l'installation.
Dernière modification par NoaX (14-02-2008 23:13:24)
Hors ligne
V. Installation de MySQL
A) Téléchargement
B) Installation
C) Modification de PHP
A) Téléchargement
Télécharger cette archive et placez la dans le répertoire /private/var/root/ de votre iTouch/iPhone de façon à avoir :
/private/var/root mysql.tgz
B) Installation
Ensuite lancez PuTTy (si vous ne savez pas ce qu'est PuTTy, allez sur l'Annexe) et faites les commandes suivantes (les commandes a exécuter son précéder d'un #, le reste est le résultat visible à l'écran) :
# tar zxf mysql.tgz # cd mysql/bin # ./mysql_install_db [snip] Installing MySQL system tables... OK Filling help tables... OK Now start the daemon (you should really make a local mysql user but --user will work for now): # ./mysqld_safe --user=root & [1] 284 # Starting mysqld daemon with databases from /var/root/mysql//var # ./mysql mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.45 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select host from user where host like '%iPhone%'; +--------+ | host | +--------+ | iPhone | +--------+ 1 row in set (0.02 sec)
C) Modification de PHP
Voila, vous avez en plus, un serveur MySQL opérationnel. Maintenant, il faut pouvoir modifier PHP pour qu'il puisse gérer MySQL. Pour cela, télécharger cette archive et celle-ci et décompressez la. Remplacez les fichier qui sont dans le dossier /opt/iphone/bin/ de l'iTouch/iPhone par ceux que vous avez téléchargé. Ces fichiers PHP gèrent les fonctions MySQL (heureusement ^^) et la GD (pour tester, faites un phpinfo). Une fois fait, redémarrer votre iTouch/iPhone et ensuite, il faut redémarrer votre serveur MySQL (Oui, à chaque redémarrage de votre appareil). Pour démarrer votre appareil sans PC, installer Term-vt100 (qui est une émulation de terminal) et faites les commandes suivantes (Pour la version 1.1.3, Term a des problèmes, pour les résoudre, regardez l'Annexe) :
# cd mysql/bin # ./mysqld_safe --user=root & [1] 284 # Starting mysqld daemon with databases from /var/root/mysql//var # ./mysql mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.45 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select host from user where host like '%iPhone%'; +--------+ | host | +--------+ | iPhone | +--------+ 1 row in set (0.02 sec)
Enfin, il faut pouvoir avoir accès a la Base de donnée, facilement. Pour cela, on peut utiliser un gestionnaire (comme phpMyAdmin). Pour utiliser phpMyAdmin, télécharger l'archive, décompressez la, puis mettez la dans le dossier de votre serveur local (à savoir : /Library/WebServer/Documents/).
Dernière modification par NoaX (22-03-2008 10:34:18)
Hors ligne
VI. Conclusion
Votre iTouch/iPhone à enfin son serveur local avec Apache, PHP et MySQL. Le seul problème est que vous devez lancer manuellement MySQL à chaque démarrage de l'appareil. Pour les annexes, je les ferais surement lundi (ce week-end, je ne serais pas la)
Dernière modification par NoaX (14-02-2008 23:29:23)
Hors ligne
VII. Annexes
A) Utilisation de WinSCP
B) Installation de PuTTy
C) Régler le problème de Term-v100 en 1.1.3
A) Utilisation de WinSCP
Tout d'abord, il faut télécharger WinSCP. Bon, c'est fait ? Voila, WinSCP est un logiciel utilisant le protocole SFTP pour windows. Cela nous permettra de visualiser les fichiers de notre iTouch/iPhone sur un PC. Une fois le logiciel installé, il faut régler la connexion a l'appareil. Pour cela, il faut au moins avoir une connexion internet en wifi. Connectez votre iTouch/iPhone à internet via la wifi et cherchez l'ip de celui-ci : il faut aller dans Réglages -> Wi-Fi -> Onglet bleu à coté du nom de votre Connexion Wi-Fi -> Adresse IP
Réglages -> Wi-Fi -> Votre connexion Wi-Fi -> Adresse IP
Légende :
Application Springboard
Option
Onglet bleu en forme de flèche
Information
Ensuite, il faut entrer tout cela sur le logiciel. D'ailleurs, démarrez-le. Faites Nouvelle (Pour nouvelle connexion) et vous aurez un bazar bien étrange ^^ :
Nom d'hôte : Adresse IP de votre iTouch/iPhone
Numéro de port : 22
Nom d'utilisateur : root
Mot de passe : (Le mot de passe définit lors du jailbreakage, habituellement alpine)
Fichier de clé privé : Rien
Protocole de fichier : SFTP
Voila, faites connexion et normalement ca devrait marcher.
Si cela ne marche pas du premier coup, c'est possible que l'iTouch/iPhone ce soit déconnecté du Wi-Fi.
B) Installation de PuTTy
PuTTy permet de créer une connexion avec Terminal sur votre iTouch/iPhone. On peut donc utiliser de nombreuses possibilités avec celui-ci. Déja, il faut le télécharger et le mettre dans un dossier bien spécifique et obligatoire : Lecteur d'installation de windows que je nomme X: (Générallement C
, Program Files, PuTTy, putty.exe :
X:/Program Files/PuTTY/putty.exe
Voila, vous avez installer puTTy. Pour le démarrer, rien de plus simple, démarrez WinSCP et cliquez sur l'icone de PuTTY
Dernière modification par NoaX (15-02-2008 08:10:32)
Hors ligne
Savez-vous comment utiliser GD ? Merci
Hors ligne
Cela est signalé dans la partie mise à jour de PHP, et il y la GD qui est activée avec les nouveaux fichiers PHP. Veuillez lire le tuto ><
Hors ligne
Sacré boulot NoaX, chapeau, et merci ! Je vais tester ca ce week-end.
Hors ligne
Bonjour,
Lors de la décompression de MySQL, j'obtiens ceci :
tar: mysql/lib/mysql/libmysqlclient.15.dylib: Cannot change ownership to uid 0, gid 0: Function not implemented
tar: mysql/lib/mysql/libmysqlclient.dylib: Cannot change ownership to uid 0, gid 0: Function not implemented
tar: Error exit delayed from previous errors
Comment faire ? Est-ce grave ou je peux continuer sans m'en occuper ? Merci
Hors ligne
Ce n'est pas grave, c'est juste l'archive qui déconne un peu (pas d'autre version donc faut faire avec). Faites comme si de rien était et continuez le tuto, cela marche normalement par la suite
Hors ligne
Je l'ai fait seulement GD est activée mais ne marche pas.
En lançant ce script, j'obtiens un point d'interrogation dans un carré bleu :
<?php
//On définit le header (image en PNG)
header('Content-type: image/png');
//On charge les images
$surlignage = imagecreatefrompng("images/ecran/surlignage_musiques.png");
if(isset($_GET['selection']))
{
$fond_ecran = imagecreatefrompng("images/ecran/fond_ecran.png");
$png = imagecreatetruecolor(171, 106);
$noir = imagecolorallocate($png, 0, 0, 0);
$selection = intval($_GET['selection']);
if($selection <= 1 OR $selection > 6)
{
$ordonnee_placement = 1;
}
else
{
$ordonnee_placement = 17 * ($selection - 1);
}
// Un caractère fait 12 pixels
//On récupère les valeurs la hauteur et la largeur de l'image surlignage et de fond ecran
$largeur_fond_ecran = 171;
$hauteur_fond_ecran = 106;
//On fusionne les images
imagecopymerge($png, $surlignage, 0, 0, 0, 0, 171, 106, 40);
imagecolortransparent($png,$noir);
imagecopymerge($fond_ecran, $png, 1, $ordonnee_placement, 0, 0, $largeur_fond_ecran, $hauteur_fond_ecran, 12);
}
//On affiche l'image
imagepng($fond_ecran);
?>Cela vient-il de mon script (qui marche sous Wamp) ou d'une mauvaise configuration ? Je pencherais pour la deuxième solution ...
Merci
Hors ligne
Quel est le message d'erreur ? Normalement GD est actif, cela pourrait-il avoir un rapport avec le script en lui même ? La configuration ne diffère que peu de celle d'origine de wamp.
Je le testerais une fois chez moi.
Hors ligne
J'obtiens un carré bleu avec un point d'interrogation à l'emplacement de l'élément. Ce script ne pose aucun problème sous WAMP.
L'erreur ressemble un peu à celle du contenu flash. De plus, après vérification, en faisant phpinfo(), je vois bien GD activée et tout est activé (gestion du PNG etc).
Hors ligne
Etes-vous sur de bien avoir mis les fichiers images dans le repertoire indiqué par le script ?
Hors ligne
Oui. La structure du site en local est la même sur le Touch et sous WAMP.
Hors ligne
Bonjours J'arrive bien a faire tourner des page php etant connecter en wifi met lorsque je deconnecte le wifi safari me dit safari ne parvient pas à ouvrir la page car le serveur est introuvable .
Est ce normal?
Edit apres quelque test mon erreur etait de mettre http://localhostmapage.php
a la place de http://127.0.0.1/mapage.php
Sinon super le tutorial bravo.
Dernière modification par rafffel (26-02-2008 18:22:10)
Hors ligne
Hello,
J'ai installé Apache puis PHP, j'ai modifié la config du démon HTTP, mais apparemment qqchose a dû déconner à l'installation d'Apache car il ne reconnaît pas l'extension PHP, et j'ai remarqué que quand il renvoie le listing d'un répertoire, les icônes ne sont pas affichées.
J'ai donc regardé où pointe l'alias /icons : vers /usr/share/httpd/icons, et c'est là que je me suis rendu compte que je n'ai pas de répertoire /usr/share/httpd ! 
J'ai désinstallé et réinstallé Apache, mais toujours pas de répertoire share/httpd créé 
Si qqun a une idée... ou pourrait mettre à dispo la liste complète des fichiers ajoutés par l'installation d'Apache, pour que je récupère ceux qui me manquent 
(je précise qu'avant d'installer Apache + PHP, j'ai fait la fameuse manip de déplacement / alias du dossier Applications... au cas où ça aurait un impact)
Dernière modification par iDanny (05-03-2008 23:02:34)
Hors ligne
je suis désolé de casser toutes cette conversation technique mais j'ai une question :
A quoi sa sert??
A quoi sert Apache??
PS: tuto tres impressionant tu as fait un sacré boulot Noax
Hors ligne
Suite de mon problème : j'ai remarqué que j'avais les 2 erreurs suivantes dans le fichier /private/var/log/httpd/error_log, toutes les 10 secondes ! :
[Thu Mar 6 00:30:04 2008] [alert] httpd: Could not determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName [Thu Mar 6 00:30:04 2008] [crit] (48)Address already in use: make_sock: could not bind to port 80
Donc j'ai ajouté ServerName 127.0.0.1 dans httpd.conf et aussi dans resolv.conf, et depuis Apache gère bien l'extension PHP ! 
Par contre j'ai toujours la 2ème erreur du log (port 80 déjà occupé)...
Donc j'ai maté les process qui tournaient, et j'avais vu que j'ai 3 instances de httpd en même temps : une lancée par root, et 2 par "nobody"...
Et si je les kille manuellement ou avec apachectl stop, elles se relancent juste après !
Bref, tant qu'Apache tourne et que j'ai pas trouvé comment éviter cette erreur de port 80 déjà occupé, mon log d'erreur va continuer à grossir 
Je pourrais désactiver l'écriture du log dans httpd.conf, mais bon... je préfèrerais trouver pourquoi ça fait ça.
Et sinon, j'ai toujours pas pigé où était passé mon répertoire /images 
Hors ligne
Bonjour a tous et félicitation a NoaX pour ce tuto!
J ai un petit soucis et je voudrais bien votre avis sur la quetion.
J ai bien installé Apache et j aurais voulu installer PHP, mais juste après le dl du package j ai un Notice qui s ouvre "Please add /opt/iphone/bin/ to your $PATH".
Ne sachant pas si PHP s est tout de meme installé ou pas, je vais voire dans la racine et j ai effectivement un fichier "php" (de 962560 octets).
j en déduits que PHP est tout de même installé, mais la problème : mon fichier "Profile" n existe pas. Je l ai cherché un peu partout, mais il est introuvable...
Qqun aurait il une idée svp?
Merci d avance de votre réponse 
P.S. : iPod Touch 16Gb jailbreaké en 1.1.4
Hors ligne
ben1606X > Ce fichier n'est dispo que lors du premier lancement de apache, et après, il faut un reboot
iDanny > Alors la, je n'ai vraiment pas fait gaffe a ces erreurs possibles, je vais étudier le cas
i$!MoN > Mon tuto sert a créer un serveur local afin de développer des applications web ou simplement faire tourner un serveur web en local
Hors ligne