Partage
  • Partager sur Facebook
  • Partager sur Twitter

{Aide pour projet } Mise en place d'une VM de dev

Linux, PHP, Java EE, réseaux, bases de données, compilation...

    28 avril 2015 à 14:15:01

    Bonjour tout l'monde ! Aujourd'hui c'est mon tour de solliciter l'aide de la communauté, sauf que mon "problème" ressemble plus à un projet perso qui peine plutôt qu'à un sujet ciblé. Permettez-moi d'exposer d'abord la situation et mes objectifs. Note : j'appliquerai des *edit* à ce message au fur et à mesure que la discussion avancera... en espérant qu'elle avance bien. :p

    Projet : VM de dev, la vue d'ensemble

    Je cherche à mettre en place une machine virtuelle me servant de serveur de développement, de façon à centraliser l'installation technique sur de type d'environnement et le manipuler comme je manipulerais (et manipulerai, même) un serveur dédié à distance. Les objectifs sont nombreux et multiples, autant dire qu'il y a du boulot ! Voici la liste courte des besoins auxquels je souhaite répondre à travers cette VM :

    • Disponibilité réseau : la VM doit être accessible par SSH (Putty) depuis une IP réseau locale ou un nom de domaine local
    • Disponibilité internet : la VM doit être accessible sur internet de la même façon
    • Serveur web HTTP : la VM doit offrir un serveur frontal Apache HTTPD. Ce serveur doit répondre à la plupart des demandes (vhosts), et en fonction de ces demandes les gérer lui-même (typique : applications PHP) ou passer le relai à un serveur JBoss (typique  application J2EE)
    • Serveur web : la VM doit aussi proposer des serveurs FTP et Mail (tant qu'à faire).
    • Services de versionning
    • Serveur Packagist : un des gros intérêts de cette VM : héberger mon propre dépôt Composer.

    Voici la liste, susceptible d'évolue (grossir) avec le temps. Je vais donc discuter ci-dessous des différents points, ce que j'ai fait, ce qui coince, etc...

    Disponibilité réseau et internet

    La VM est de type VirtualBox et tourne sous Debian, sans serveur X. Le système hôte est Windows, et je dispose par ailleurs d'une autre VM sous LUbuntu Desktop pour d'autres usages.

    Les 2 VM ont une configuration réseau quasi identique : une carte réseau eth0 de type "NAT" qui leur permet de voir l'internet à travers l'hôte sans voir ou être vûe de l'hôte, et une carte réseau eth1 de type "Host-Only" qui permet la connexion entre l'hôte et la VM (mais pas internet). Les 2 sont configurées pour également voir les autres VM de ce même réseau local : 10.0.0.0/24. La VM qui nous intéresse a d'ailleurs pour adresse 10.0.0.2.

    Le paragraphe ci-dessus n'est plus d'actualité (mais je ne sais pas comment marquer du texte comme barré dans cette version du forum). Ma VM serveur dispose désormais d'une seule carte réseau, type Bridge, qui se base sur le DHCP pour obtenir sa carte réseau et autorise les autres machines du même réseau. Elle est donc visible depuis n'importe quel ordinateur du réseau de la maison.

    La VM est par ailleurs configurée pour se lancer d'elle-même au démarrage de Windows à travers VmService, un service Windows conçu pour lancer les VM de VirtualBox sans aucune fenêtre (pas même la console laissée par VBoxHeadless) et ce même au démarrage automatique.

    A l'installation, Debian m'a proposé différents outils à installer automatiquement, le seul que j'ai accepté à part "les outils usuels" étant le gestionnaire SSH, de façon à pouvoir rapidement utiliser Putty pour accéder à la VM plutôt que de passer par son écran. La commande ssh depuis l'autre VM me permet également d'accéder à ma VM Debian.

    Cependant, avec cette configuration, pas possible d'atteindre la vm depuis l'extérieur. Mon adresse IP internet étant celle du routeur, je pense qu'il faille faire un réglage à son niveau, mais j'y connais rien... xD

    Apache 2.4.12

    Que du bonheur avec l'installation d'Apache 2.4... Debian ne propose pas de paquet, mais c'est pas plus mal ça me permet de l'installer via sources directement et de personnaliser ma commande. Oui seulement voilà, lors de mes premières tentatives, j'ai essayer de mettre certains modules en statique, d'autres en shared. L'idée était d'avoir les modules importants toujours disponibles, et ceux moins importants, obscurs à mes yeux, voir problématique en shared de façon à commenter ou décommenter leur LoadModule à tout moment.

    ./configure --prefix=/etc/apache2 --with-included-apr \
       --enable-mods-static='ma liste de modules importants' \
       --enable-mods-shared='autres modules'

    Oui seulement voilà, si je fais ça, il y aura toujours un module qui refusera de compiler, et parfois des modules qui me semblent importants comme mod_privileges. Peu importe que je les enlève, d'autres planteront. J'ai fini par utiliser cette commande plus simple, mais elle ne me satisfait pas car tous les modules sont "shared" :

    ./configure --prefix=/etc/apache2 --with-included-apr --enable-modules=all

    Avez-vous moyen de faire passer ces modules récalcitrants ?

    Du reste, je combine les tutoriels ci-dessous pour rendre Apache automatiquement démarré, et pour qu'il utilise son propre utilisateur.

    PHP 5.6.18

    Je suis encore en en train de préparer la commande de configuration, en voyant pour chaque extension non-PECL la commande à inclure au configure. J'en suis aux extensions commençant par 'G' et il y a encore de quoi faire. Je préviendrai si j'ai un os. ;)

    Quelles bases de données choisir ?

    Je pensais à MySQL comme incontournable du monde PHP, mais peut-être pas seulement ?
    Lesquels conseilleriez-vous ? J'ai vu que CUBRID semble pas mauvais mais côté PHP c'est une extension PECL. Il y a les classiques Oracle et Postgre (ce dernier jamais manipulé d'ailleurs), et peut-être d'autres que vous connaissez...

    Apache et JBoss

    En attendant que j'arrive à cette étape, des documentations ou tutos que vous conseilleriez ? J'avoue ne pas avoir commencé vraiment la recherche sur ce sujet, je sais que c'est faisable (et même fréquent) mais j'en sais pas plus ^^'

    FTP

    à venir...

    Mail

    à venir...

    Versionning

    J'ai prévu de mettre en place les clients SVN et Git, j'ignore encore si je vais mettre en place des dépôts associés. A voir quand on y arrivera.

    Packagist

    Le mode opératoire m'a déjà été conseillé sur un autre topic, cependant la procédure ne peut être démarrée tant que je n'ai pas Apache, PHP et MySQL qui tournent, ainsi que Composer. A venir, donc. ;)

    Autres ?

    Si d'autres outils vous paraissent important pour un serveur de dev privé (car c'est le rôle de cette VM quelque part), n'hésitez pas à me conseiller, svp. :)

    -
    Edité par Darth Killer 28 avril 2015 à 23:17:25

    • Partager sur Facebook
    • Partager sur Twitter
      28 avril 2015 à 15:03:31

      Salut,

      Pourquoi tu compiles depuis les sources ?

      Apache 2.4 : https://packages.debian.org/fr/jessie/apache2

      PHP 5.6 : https://packages.debian.org/fr/jessie/php5

      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2015 à 15:06:52

        J'ai un contrôle sur ce qui est activé à la compilation, puisque je compile moi-même. Et puis, je ne sais pas quel dépôts tu as dans ton sources.list, mais le miens ne connait pas Apache 2.4 ; son package "apache2" pointe sur un Apache 2.2
        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2015 à 15:17:05

          Jessie, la dernière stable sur une VM de test (faut que je passe un serveur de prod d'ailleurs dessus) :

          Tu dois sûrement encore être sous wheezy.

          • Partager sur Facebook
          • Partager sur Twitter
            28 avril 2015 à 15:27:19

            Je sais pas trop à vrai dire sous quel Debian je suis. Je l'ai DL ya pas très longtemps pourtant.
            L'ISO marque Debian 7.8.0
            Quand je fais ta même commande, ça me donne  les versions 2.2.22-13+deb7u3 et 2.2.22-13+deb7y4

            Mais bon, ça ne m'avance pas trop : dans le package la compilation est déjà faite, donc la liste de modules est écrite pour moi, certains en statique et d'autres en shared. Je n'ai aucun contrôle là-dessus. :p

            • Partager sur Facebook
            • Partager sur Twitter
              28 avril 2015 à 15:33:28

              La version 8 vient de sortir, je dis ça parce que tant qu'à installer un serveur de dev, autant ne pas se prendre la tête avec de vieilles versions de paquets, mais puisque dans ton cas précis tu as besoin de gérer toi-même la compilation, pourquoi pas ...

              En espérant que tu ne sois pas emmerdé avec des dépendances :)

              • Partager sur Facebook
              • Partager sur Twitter
                28 avril 2015 à 15:35:46

                Rednax a écrit:

                En espérant que tu ne sois pas emmerdé avec des dépendances :)

                Bah en même temps j'ai fixé certains objectifs en sachant pertinemment que j'allais prendre le taureau par les cornes. ;)
                Merci pour la v8 au passage. Je vais juste formater ma VM (j'ai pas grand chose à sauvegarder : 2 fichiers .bashrc :D ) et basta. ;)

                • Partager sur Facebook
                • Partager sur Twitter
                  28 avril 2015 à 15:43:22

                  Tu feras gaffe, ya un truc qui s'appelle systemd qui fait un peu chier au début, mais on s'y fait :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 avril 2015 à 15:56:54

                    Trouvé ça sur le net

                    ça a l'air compliqué ce systemd... xD
                    Moi qui me contentais d'éditer /etc/rc.local comme une brute... xD

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 avril 2015 à 16:04:18

                      Darth Killer a écrit:

                      ça a l'air compliqué ce systemd... xD


                       C'est une autre logique, va juste falloir t'y intéresser pour créer tes fichiers .service.

                      Darth Killer a écrit:

                      Moi qui me contentais d'éditer /etc/rc.local comme une brute... xD

                      Pourquoi ça ne m'étonne pas venant d'un dev ...  :lol:

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 avril 2015 à 18:55:13

                        Bon bah réinstallé avec Debian 8.0, et pour le coup j'ai mis une seule carte réseau, de type Bridge. Normalement ça permet de déclarer la vm sur le réseau réel comme un ordinateur à part, sauf que jusqu'ici j'obtenais des VM isolées (erreur de dhcp ? c'est quoi ce truc ?) mais ce coup-ci c'est passé.

                        Par contre, autant mon hôte peut pinger ma vm, autant la connexion SSH foire alors que j'ai demandé l'installation d'openSSH dans la foulée de l'installation, comme je faisais avant. Message d'erreur :

                        Fatal: Couldn't agree a client-to-server cipher (available: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com)

                        Moi pas comprendre. Si quelqu'un a une idée, je suis preneur...

                        En note supplémentaire, alors que je cherchais dans les tutos l'information sur le rôle des différents dossier sous la racine de linux, je suis tombé sur un tutoriel expliquant comment inscrire un service via update-rc.d de manière claire. Comme quoi... :D

                        Edit : j'ai essayé via ma VM linux desktop : je peux pinger ma vm serveur, mais la commande ssh fail (déjà elle pré-suppose que le login est en tant que root, wtf ?) sur le mot de passe alors que je suis formel : j'ai pas fait d'erreur dessus.

                        Edit2 : second problème : halt n'éteint pas ma vm. Je comprends pas vraiment pourquoi il en serait autrement. J'avais eu le problème lorsque je voulais choisir entre Debian 7.8 et Ubuntu Server (14.10 je crois), ce dernier l'éteignait pas la vm au halt non plus...

                        -
                        Edité par Darth Killer 28 avril 2015 à 19:20:36

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 avril 2015 à 20:22:22

                          Darth Killer a écrit:

                          Edit : j'ai essayé via ma VM linux desktop : je peux pinger ma vm serveur, mais la commande ssh fail (déjà elle pré-suppose que le login est en tant que root, wtf ?) sur le mot de passe alors que je suis formel : j'ai pas fait d'erreur dessus.

                          Il me semble qu'il faut que tu ajoutes les clés toi-même sur ton client.

                          Edit2 : second problème : halt n'éteint pas ma vm. Je comprends pas vraiment pourquoi il en serait autrement. J'avais eu le problème lorsque je voulais choisir entre Debian 7.8 et Ubuntu Server (14.10 je crois), ce dernier l'éteignait pas la vm au halt non plus...

                          systemctl poweroff

                          systemctl reboot

                          J'y ai passé un peu de temps, vienvenue chez systemd ^^

                          -
                          Edité par Rednax 28 avril 2015 à 20:23:54

                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 avril 2015 à 20:38:43

                            Rednax a écrit:

                            Darth Killer a écrit:

                            Edit : j'ai essayé via ma VM linux desktop : je peux pinger ma vm serveur, mais la commande ssh fail (déjà elle pré-suppose que le login est en tant que root, wtf ?) sur le mot de passe alors que je suis formel : j'ai pas fait d'erreur dessus.

                            Il me semble qu'il faut que tu ajoutes les clés toi-même sur ton client.

                            J'avais pas eu à l'ajouter quand j'avais essayé avec une précédente "version" de ma vm serveur. Il me disait simplement "clé inconnue, ajouter ?". Pareil pour putty sous Windows d'ailleurs.

                            Du coup je ne sais pas comment récupérer cette clé et l'ajouter au client...

                            Rednax a écrit:

                            Edit2 : second problème : halt n'éteint pas ma vm. Je comprends pas vraiment pourquoi il en serait autrement. J'avais eu le problème lorsque je voulais choisir entre Debian 7.8 et Ubuntu Server (14.10 je crois), ce dernier l'éteignait pas la vm au halt non plus...

                            systemctl poweroff

                            systemctl reboot

                            J'y ai passé un peu de temps, vienvenue chez systemd ^^

                            Roptain nan... Oui parce qu'entre temps j'ai vu des explications sur systemd...
                            Bah tu sais quoi ? Je rétrograde à Debian 7.8 juste pour ça. >_<
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 avril 2015 à 23:22:24

                              Bon j'ai remis Debian 7.8, et mis en place une seule carte réseau (type Bridge). Ce coup-ci, l'accès SSH fonctionne niquel, et j'ai même pu ping ma VM depuis un autre ordinateur réel du réseau de la maison.
                              Maintenant  il reste à voir comment la rendre accessible depuis l'extérieur (internet). Pour l'instant, l'adresse IP internet est celle de notre routeur si bien qu'on arrive pas à taper sur la VM. Il y a quelque chose à y faire mais je n'y connais rien... :')

                              Topic mis à jour, du coup.

                              J'ai encore de questions ouvertes, et pas que celles où je demandes des idées à la fin. :p
                              Notamment, comment résoudre mon soucis des modules statiques et shared pour Apache ?

                              Edit : par ailleurs, d'où et comment je modifie le bashrc générique utiliser pour créer le .bashrc d'un nouvel utilisateur ?

                              -
                              Edité par Darth Killer 28 avril 2015 à 23:25:13

                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 avril 2015 à 8:35:43

                                Darth Killer a écrit:

                                Edit : par ailleurs, d'où et comment je modifie le bashrc générique utiliser pour créer le .bashrc d'un nouvel utilisateur ?


                                Tu trouveras ton bonheur dans /etc/skel

                                Darth Killer a écrit:


                                Maintenant  il reste à voir comment la rendre accessible depuis l'extérieur (internet). Pour l'instant, l'adresse IP internet est celle de notre routeur si bien qu'on arrive pas à taper sur la VM. Il y a quelque chose à y faire mais je n'y connais rien... :')


                                Alors ça s'appelle du NAT, et c'est à configurer directement sur ton routeur/box, sur l'interface ça doit s'appeler "redirection de ports".

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  29 avril 2015 à 8:56:58

                                  en attendant la NAT, la config réseau de ma VM ne fonctionne plus. :(

                                  Au départ il y avait ça :

                                  allow-hutplug eth0
                                  iface eth0 inet dhcp

                                  C'est ce qui permettait à ma vm d'apparaître hier sous une IP de mon réseau réel, mais n'apparait plus aujourd'hui. J'ai essayé de changer pour ça :

                                  auto eth0
                                  iface eth0 inet static
                                     address 192.168.0.100
                                     netmask 255.255.255.0

                                  Là, eth0 se charge dans ma vm mais reste absent aux yeux des autres ordinateurs... o_O

                                  Et si je reviens sur le réglage précédent, eth0 ne se charge plus du tout, j'ai une warning mais impossible de la lire, le texte est écrasé par le label "warning"...


                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 avril 2015 à 10:13:46

                                    Bon il s'avère que c'est la commande pour recharger la config réseau qui merde. Si je redémarre carrément la vm, ça passe normalement. J'ai donc ceci comme configuration :

                                    allow-hotplug eth0
                                    iface eth0 inet static
                                       address 192.168.0.100
                                       netmask 255.255.255.0

                                    ça semble marcher au détail près que la vm n'apparait pas dans la liste des adresses mac de confiance du routeur... o_O
                                    Ce qui ne m'empêche pas de la voir en ping broadcast ainsi qu'y accéder par ssh depuis l'hôte. Mais elle apparaissait dans la liste de confiance quand je laissais DHCP m'attribuer une IP. o_O

                                    Bon ça à la rigueur c'est secondaire, tant que ça marche... Je vais demander à un poto qui peut m'assister en "live" pour cette histoire de NAT, j'ai été voir dans mes réglages de routeur et il n'y a pas ce type de réglage par contre il y a 2 réglages qui semblent s'en approcher : un qui permet d'associer l'IP internet à une des IP réseau, via une plage de ports précis, et une autre qui (si j'ai bien compris) associe un port d'une machine du réseau à un autre port du routeur.

                                    En attendant, j'ai Apache à me farcir, 'faudrait voir s'il n'y a pas moyen de ne pas avoir à compiler tous les modules comme DSO pour pouvoir avoir leur liste sous la main. xD

                                    Edit : ah ouais mais non en fait : ma vm ne voit plus internet... :(

                                    Edit2 : en remettant comme c'était, ma vm voit de nouveau internet. Mais du coup c'est le DHCP du routeur qui défini l'IP, j'espère juste qu'il ne va pas s'amuser à la changer de temps en temps...

                                    -
                                    Edité par Darth Killer 29 avril 2015 à 10:54:40

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      30 avril 2015 à 15:30:31

                                      Je reformate à nouveau ma vm pour remettre Debian 8, maintenant que j'ai trouvé une procédure (étape 1 et étape 2) pour virer systemd et empêcher sa réinstallation sournoise.

                                      Je tiens cependant à souligner, pour ceux qui jugent qu'il suffit de "s'habituer" à systemd (tels que Rednax ici :p ), que vous devriez lire un peu ce qui se dit au sujet de cet outil catastrophique... :p

                                      @Rednax : et dire que je ne connaissais même pas systemd avant que tu n'en parles ici-même... Bah p'tain, merci de l'avoir fait !

                                      Edit (bien que je suis franchement tenté de faire un nouveau message là...) :
                                      A nouveau, et malgré le fait que systemd ne soit plus là, je n'arrive plus à me connecter à ma vm par SSH.

                                      Putty plante instantanément (même pas de timeout, donc il trouve l'IP) avec ce message :

                                      Fatal: Couldn't agree a client-to-server cipher (available: aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com)
                                      

                                      Quelqu'un a-t-il une explication ou une piste ? Parce que là, je vois pas pourquoi... Avec Debian 7 dans les mêmes conditions ça passait crème.
                                      Et oui, j'ai openssh-server et openssh-client installés.

                                      Edit2 : quand ça me le faisait avant, j'avais testé aussi via la commande ssh de mon autre vm linux. Cette fois, depuis l'intérieur de la même vm j'ai essayé "ssh 127.0.0.1", et même résultat qu'avec l'autre vm linux : après 3 mots de passe ça échoue avec "Permission denied (publickey, password)". Et pourtant il m'a proposé la clé SSL avant ces échecs...

                                      -
                                      Edité par Darth Killer 30 avril 2015 à 17:58:35

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        9 mai 2015 à 21:15:50

                                        OUF on sent les problèmes des pros......:magicien:
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        La justice est la plus pire des injustices.
                                          9 mai 2015 à 21:35:14

                                          Sauf que j'suis pas administrateur, ce n'est pas le même métier. Pour un admin, ces problèmes n'en seraient pas, je suis sûr. ^^

                                          Je suis pas tous les jours sur ce projet, mais j'uperai le topic quand j'aurai du neuf. ;)

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            10 mai 2015 à 0:08:48

                                            Mais a ce niveau la humm tu finira par en être un
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            La justice est la plus pire des injustices.

                                            {Aide pour projet } Mise en place d'une VM de dev

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown