liaison entre 2 serveurs locaux

CAPLETON
Invité n'ayant pas de compte PHPfrance

04 mars 2009, 18:09

Bonjour à tous,

tout d'abord merci de me lire :p

alors voilà mon problème:

j'ai donc 2 serveurs : un linux pour le site, un autre windows serv 2003 ou ya un stockage de photos.

à la base, nous avions donc une liaison (disque virtuel) via samba qui permettait de partager ces photos pour le site mais il est vite apparu que ça bouffait énormément de ressources (netbios et boucle php oblige)

je dois donc trouver une autre solution:
le serveur windows a donc été paramétré pour partager ce dossier photos MAIS SEULEMENT avec le serveur linux local (donc aucun accès via ip externe)

je voulais donc savoir s'il y avait une fonction php ou une méthode pour pouvoir forcer php à interprété http://192.168.0.8:8000 comme étant une ip du réseau local du serveur et non du client (on ne mettra pas d'accès externes pour cause de sécurités)

merci pour votre aide d'avance :) en espérant que la réponse ne sautait pas aux yeux sinon j'aurai l'air bête ^^

ViPHP
ViPHP | 1380 Messages

04 mars 2009, 19:02

j'ai donc 2 serveurs : un linux pour le site, un autre windows serv 2003 ou ya un stockage de photos.

à la base, nous avions donc une liaison (disque virtuel) via samba qui permettait de partager ces photos pour le site mais il est vite apparu que ça bouffait énormément de ressources (netbios et boucle php oblige)
Tu veux dire que tu as fait un mount samba pointant vers le partage Windows, c'est ça? si c'est le cas, je ne vois pas comment tu pourrais moins saturer ton lan en envoyant une requête http vers le serveur Windows.

Précise ton problème. 192.168.0.8, c'est ta machine Windows?
ripat

ViPHP
ViPHP | 1136 Messages

04 mars 2009, 19:05

Slt,

Mais 192.168.0.x est déjà une adresse local de Class C !

Ensuite , si j'ai bien compris , tu veux que le client qui demande à afficher une photo ( qui se trouve sur le serveur Win ) pense/affiche comme si elle se trouve effectivement sur le serveur Linux !

Pour celà , je pense tout de suite aux directives RewriteRule d'apache ..

Qui peut te permettre de réécrire à la volé l'url de certains types de fichiers .. pas mal d'exemple ici


Ch.

Eléphant du PHP | 74 Messages

04 mars 2009, 19:21

et pourquoi ne pas avoir un serveur web sur le windows (sans php, ni mysql) qui ne fait que de la distribution d'images, et les balises <img > pointent vers le windows ?
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz

CAPLETON
Invité n'ayant pas de compte PHPfrance

04 mars 2009, 19:42

alors je vais répondre dans l'ordre ^^

Précise ton problème. 192.168.0.8, c'est ta machine Windows?
oui en effet c'est la machine qui stock les photos

-----------

Ensuite , si j'ai bien compris , tu veux que le client qui demande à afficher une photo ( qui se trouve sur le serveur Win ) pense/affiche comme si elle se trouve effectivement sur le serveur Linux !

Pour celà , je pense tout de suite aux directives RewriteRule d'apache ..

en effet, tu as compris, je crois :D :p

en gros: je surf sur le linux, j'arrive sur la page web. Cette page a pour n° 50, la page va donc allez chercher sur le serveur windows le dossier 50 et lister/afficher les photos qu'il y a dedans.

j'ai regardé vite fais le mod_write en effet ça a l'air de coller dans l'idée par contre: les photos s'affichent donc sur une page html/php, est-ce que si je le mets en route, le rewrite redirigera le <img src> dans le code de la page aussi?

-----------

et pourquoi ne pas avoir un serveur web sur le windows (sans php, ni mysql) qui ne fait que de la distribution d'images, et les balises <img > pointent vers le windows ?
ben c'est le soucis, qu'il soit en serveur web ou en partage, je ne peux accéder qu'en ip locale et c'est cette gestion d'ip qui me bloque vu que quand la personne navigue, si je mets 192.168..., cette ip va être prise en compte comme une ip appartenant au client et non au serveur


merci en tout cas pour vos réponses

ViPHP
ViPHP | 1136 Messages

04 mars 2009, 20:11

le rewrite redirigera le <img src> dans le code de la page aussi
Non , je ne pense pas ... ( je n'ai jamais testé ce genre de situation ) tes retours sont donc intéressant :-)

Apres , là ou je suis certains , c'est que via RewriteRule tu peux faire des redirections "transparente"
en utilisant le flag [P] .. qui utilise le mod proxy d'apache ...

Mais dans les exemples que je t'ai donné , il montre des exemples pour reecrire les urls des image uniquement ..

Je pense que c'est la bonne voie .. donne nous tes retours .. :)

Ch.

ViPHP
ViPHP | 1380 Messages

04 mars 2009, 21:26

[Tu veux dire que tu as fait un mount samba pointant vers le partage Windows, c'est ça? si c'est le cas, je ne vois pas comment tu pourrais moins saturer ton lan en envoyant une requête http vers le serveur Windows.
Comment fais-tu ton mount parce-qu'entre un accès fichier SMB et une requête http, intuitivement je prendrais sans hésiter la soultion mount. Que reproche ton Admin réseau à tes accès SMB?
ripat

ViPHP
ViPHP | 5924 Messages

04 mars 2009, 21:39

Comme quelqu'un l'a soulevé, j'opterais personnellement pour le mod_proxy.
Une seule directive : ProxyPass (bon, éventuellement peut être aussi ProxyPassReverse).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 mars 2009, 01:11

[Tu veux dire que tu as fait un mount samba pointant vers le partage Windows, c'est ça? si c'est le cas, je ne vois pas comment tu pourrais moins saturer ton lan en envoyant une requête http vers le serveur Windows.
Comment fais-tu ton mount parce-qu'entre un accès fichier SMB et une requête http, intuitivement je prendrais sans hésiter la soultion mount. Que reproche ton Admin réseau à tes accès SMB?
Entièrement d'accord avec Ripat.

Et dans le pire des cas si tu veux véritablement limiter les accès sur le serveur Windows, tu peux développer un simple système de cache, soit juste pour la liste des fichiers si ce sont tes "boucles récurssives" qui gènent, soit en mettant un cache pour la liste des fichiers et pour les photos...
Quand tout le reste a échoué, lisez le mode d'emploi...

CAPLETON
Invité n'ayant pas de compte PHPfrance

05 mars 2009, 03:50

Comment fais-tu ton mount parce-qu'entre un accès fichier SMB et une requête http, intuitivement je prendrais sans hésiter la soultion mount. Que reproche ton Admin réseau à tes accès SMB?


le mount n'est plus d'actualité en fait, il a été supprimé justement parce le fait d'aller chercher les photos surchargeait le serveur (j'ai oublié de précisé que ce serveur est utilisé par d'autres applications et qu'il tourne beaucoup plus que le serveur ou le site se trouve)

sinon le problème ne venait pas de linux/samba mais de windows/netbios. Apparament la gestion par le netbios (gourmand en ressource et accès disque) ajouté à ça l'analyse des dossiers pour stockage via php...

donc maintenant le dossier photo a été transformé en serveur virtuel pour accès

(l'admin réseau préfère un accès du type http plutot qu'un acces direct style .../.../)

ViPHP
ViPHP | 1380 Messages

05 mars 2009, 09:09

le mount n'est plus d'actualité en fait, il a été supprimé justement parce le fait d'aller chercher les photos surchargeait le serveur (j'ai oublié de précisé que ce serveur est utilisé par d'autres applications et qu'il tourne beaucoup plus que le serveur ou le site se trouve)

sinon le problème ne venait pas de linux/samba mais de windows/netbios. Apparamment la gestion par le netbios (gourmand en ressource et accès disque) ajouté à ça l'analyse des dossiers pour stockage via php...
J'insiste. Tu vas remplacer un braodcast netbios par l'installation d'un serveur http sur ton serveur windows? :shock:
Je ne suis pas sûr que tu vas y gagner en charge pour le serveur!

Comme tu ne veux toujours pas dire comment tu as fait ton mount, je ne peux que supposer que tu l'as fait avec le nom de partage de ton serveur et pas son IP. Du coup, oui il est vrai que le mount samba (comme client) va broadcaster du netbios. Par contre si tu fais ton mount avec l'IP du serveur windows, pas besoin de résolution de nom. Donc pas de netbios.

Il y a fort a parier que le trafic netbios soit généré par les autres clients du serveur windows. Faudrait suggérer à ton admin de mettre en place un serveur DNS sur ton lan et de désactiver le netbios qui est un "protocole" d'un autre âge pour petits réseaux. Si tu n'as plus de clients Windows 98 sur ton lan désactive netbios!
http://technet.microsoft.com/fr-fr/libr ... 58517.aspx

En passant, SMB est au dessus de netbios dans les couches OSI et il peut s'en passer.

Si tout ça dépasse ton admin, il y a une solution intermédiaire: faire un miroir de tes photos sur ton serveur linux et de synchroniser avec rsync de manière automatique par cron. Rsync a comme avantage de ne transférer que les parties de fichiers qui ont changé. Pas le fichier en entier. Le trafic sur le lan sera donc très léger. Il est possible d'installer rsync sur un Windows 2003. (vois sur Google).

Edit
Windows prend en charge le trafic de partage de fichiers et d'imprimantes à l'aide du protocole SMB (Server Message Block) directement hébergé par une connexion TCP. Cette caractéristique le distingue des systèmes d'exploitation précédents pour lesquels le trafic SMB nécessitait le protocole NetBIOS sur TCP (NBT) pour fonctionner sur une connexion TCP/IP. La suppression du transport NetBIOS présente plusieurs avantages, notamment :

* la simplification du transport de trafic SMB ;
* la suppression des diffusions WINS et NetBIOS comme méthode de résolution de noms ;
* la standardisation de la résolution de noms sur DNS pour le partage de fichiers et d'imprimantes.
http://support.microsoft.com/kb/204279
ripat

CAPLETON
Invité n'ayant pas de compte PHPfrance

05 mars 2009, 16:52

hello :)

désolé si je passais a coté de ta question, je partais sur autre chose et j'oubliai :p

en fait je me souviens plus de comment avait été fais le mount, mais il me semble bien qu'il était fait par le nom du partage en effet, ca me dit quelque chose dans la forme ^^

merci pour toutes ces précisions, j'ai passé le mot :)

en attendant je vais tester les mod_rew et mod_prox par rapports aux solutions déjà misent en place

merci à tous :)

CAPLETON
Invité n'ayant pas de compte PHPfrance

05 mars 2009, 17:00

je précise que je ne peux pas faire de cache, ou ud moins pas en totalité, le serveur windows est avant tous une plateforme de distribution de données vers un autre serveur et stock par la même occasion des photos qui arrivent tout les jours.

on a donc x giga de photos sur ce serveur qui est continuellement nourris. je sais pas si mettre en cache des milliers de photos, et analyser chaque dossier tout le temps pour mettre en cache les nouvelles ca peut le faire au final :p

enfin je dis ça avec le peu de connaissance que j'ai du cache !

ViPHP
ViPHP | 1380 Messages

05 mars 2009, 18:45

rsync + cron !

Edit:

Toute réflexion faite, tu n'as même pas besoin d'installer rsync sur le serveur Windows. Tu fais juste un mount cifs vers ce serveur et ensuite tu rsync le mount vers un répertoire de ton disque du serveur linux. Le trafic lan et la sollicitation d'accès fichiers sur le serveur Windows ne se fera qu'en bloc, à chaque synchro de ton miroir. Et encore, les caractéristiques de l'algo de rsync limitent considérablement la charge de synchronisation sur le réseau. Très simple à mettre en place et ton admin réseau sera content: pas d'instal à faire, trafic et accès disques minimum.
ripat

CAPLETON
Invité n'ayant pas de compte PHPfrance

06 mars 2009, 15:12

j'en parle tout de suite merci :)