Sous-domaines avec Php/SSH. Possible ?
le 21/12/2009 à 11:25
N@b
Bonjour.
Je viens de terminer la programmation d'un système de création de blogs et comme vous le savez tous, les liens directs pour les blogs sont des Sous-domaines selon le pseudo choisi par les clients ( les blogueurs ) donc par conséquent je dois créer un sous-domaine pour chacun d'eux mais cela mannuellement avec C-Pannel par exemple ou autre outils de gestion qui aide à la création des sous-domaines. Malheureusement ce n'est pas pratique et encore loins d'être dynamique et rapide comme solution.
Pour créer des sous-domaine on peut le faire via C-Pannel ou avec un Accès SSH au serveur dédié mais voilà ça reste toujours intermédiaire et non dynamique dans la mesure ou c'est moi qui crée toujours le sous-domaine.
Ma question est plutôt simple: Pourrait on créer un sous-domaine avec Php via les commande SSH ?
Sinon, y'a t il une autre solution que via l'accès SSH pour créer un sous-domaine avec Php ?
Merci pour votre aide :)
Ça dépend de l'organisation des fichiers de configuration, et des méthodes utilisées pour configurer Apache.
Par exemple, sous Debian GNU/Linux, la politique concernant Apache requiert que les sites disponibles sous forme d'hôtes virtuels soient contenus dans leur propre fichier.
Ainsi, tu auras par exemple :
/etc/apache2/sites-available/toto
Qui devra être activé à l'aide de mod2en ou un truc approchant (j'y vais à l'arrache en faisant un lien dur dans /etc/apache2/sites-enabled/).
Cependant, ceci comporte des risques important de sécurité. N'oublions pas que ces fichiers de configuration sont lus par un processus possédé par root.
Une autre solution serait de découpler la création du compte de la création du sous-domaine. La page de création du sous-domaine ajoute une entrée active dans un tableau ad hoc de ta base de données. En parallèle, un cron effectue périodiquement la création des domaines qui ne sont pas encore régis par le serveur. Ne pas oublier de dire à Apache de se recharger.
Au fait, il existe peut-être des Webservices pour Cpanel ? Mais là encore, ça signifie que ton processus web risque d'avoir d'autres informations d'authentification, ce qui n'est pas une bonne politique de sécurité.
Enfin bref, tu as l'embarras du choix pour les solutions. À toi de faire celui qui convient le mieux à ton projet.
Cependant, ne perd jamais de vue qu'une requête sur un webservice, ou encore pire, une connexion ssh, ça peut prendre beaucoup de temps. Écrire en base et déléguer à un cron est encore la meilleurs solution.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
le 21/12/2009 à 12:13
N@b
effectivement j'ai aussi pensé à la sécurité de mon serveur et je vous remercie de m'en avoir fait part et de m'avoir averti à plusieurs fois dans votre réponse ^^
Concernant les solutions proposés je vais sans aucun doute me pencher sur celle de Cron mais je n'ai pas compris juste une ligne qui est " La page de création du sous-domaine ajoute une entrée active dans un tableau ad hoc de ta base de données ". Est-ce que vous faites référence a créer une table dans ma base de donné qui enregistre les sous-domaines à créer et que Cron se connecte à cette base de donnée, retire les lignes ( sous-domaines ) à créer et fais le travail puis supprime les lignes traités ?
Je dois avouer que je n'ai pas encore appris le Cron et du comment ça marche, y'aurait il un site Web où je pourrai m'initier à ce langage ?
Merci encore beaucoup pour vos réponse LupusMic
Pourquoi ne pas faire simplement un ServerAlias *.toto.com dans la configuration de ton vhost ?
Ensuite, en PHP, il te suffit de checker le sous domaine de l'URL, et de vérifier si il s'agit d'un blog qui existe dans ta base de données (genre si l'url vaut blu.toto.com, tu cherches si tu as un blog pour le login blu en base). Si oui tu affiches le blog, sinon 404.
Et au niveau DNS, un simple wildcard fera l'affaire.
(La Globule) C'est vrai que la solution de facilité peut être tentante, mais personnellement, pour un principe de sécurité, je ne le conseillerai pas. Le principe étant « on autorise rien sauf ». De plus, peut-être que sa plate-forme de blog a des caractéristiques qui requièrent des spécifications au niveau de la configuration Apache. C'est quand même le boulot d'Apache de gérer les hôtes, et il le fait bien.
Il n'y a que le wildcard pour le DNS où on a pas trop le choix. À moins d'avoir accès à un webservice qui permette de déclarer une entrée DNS. Dans ce dernier cas, un cron qui va bien peut s'en charger aussi sans pénaliser le fonctionnement du site.
Alors, cron. Cron c'est pas compliqué. Le manuel est assez bien fait, et de nombreux tutoriels existent à travers la toile. Le principe est de faire exécuter une tâche (un binaire ou un script) de manière périodique. Tu peux écrire le script lancé par cron en PHP.
Pour la table, ne surtout pas effacer. Ce serait contre-productif (tu risques de perdre des informations importantes en cas d'échec). Je suppose que tu as déjà une table de gestion des sous-domaines : réutilises-là ! Par exemple, tu peux avoir une table associée vhost_status qui aurait des attributs indiquant si le domaine est payé, créé, planté, etc. Tu as juste besoin de mettre à jour le statut si la création du domaine réussit. Rien de bien compliqué en somme : il faut juste faire attention aux conditions de course en utilisant des locks (beurk) ou des transactions si tu utilises le bon type de tables.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
le 21/12/2009 à 13:45
N@b
Ne vous disputez pas vous deux j'accepte toutes les réponses qui me sont faites par des talentueux tel que vous deux ;)
pour le WildCard je préfère d'abord la solution proposé par LupusMic histoire d'apprendre le Cron en même temps ça poura me servir à l'avenir.
Sinon jvais me pencher dessus et essayer de créer un code en Cron pour les sous-domaines et si je rencontre un problème je sais où aller désormais ;)
Merci encore beaucoup pour vos réponses :)
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: