Quelle quantité de Linux dois-je apprendre pour déployer des sites Web à l'aide de LAMP?

StackOverflow https://stackoverflow.com/questions/295861

Question

En tant que développeur Windows, je travaille actuellement sur mon propre projet avec LAMP. Je comprends ce que j'ai besoin de savoir sur PHP et MySQL, mais Linux a l'air énorme et on ne sait pas trop par où commencer ni ce qui est suffisant compte tenu de mes objectifs.
Et mes objectifs sont de saisir les concepts généraux, de pouvoir déployer le projet chez un fournisseur d’hébergement et de pouvoir surveiller les performances du site afin de repérer les problèmes, les problèmes de charge, etc.
Je sais que la meilleure solution est de faire appel à un administrateur Linux, mais avant de pouvoir le faire, je dois le faire moi-même.

Dites-moi comment!

Il serait bon que les gens développent leurs réponses sur ce que doit apprendre avec comment (devrais-je acheter un livre en particulier ou existe-t-il un bon tutoriel en ligne ou ...?).

Était-ce utile?

La solution

80% de vos problèmes seront des autorisations. Windows les fait différemment. Si vous vous connectez en tant que root (ou avec des privilèges équivalents à la racine), vous pouvez contourner les autorisations. Apache ne peut pas et ne veut pas.

  • Apprenez à définir correctement la propriété des fichiers et des répertoires. Tout livre Unix couvrira ceci: assurez-vous de bien le comprendre - ce n’est pas la sécurité de Windows épelée différemment - c’est un modèle de sécurité différent.

Parmi les problèmes restants, 80% seront des problèmes PATH. PHP n'a pas un problème PATH aussi important que Java et Python, mais ils utilisent tous un paramètre PATH pour rechercher des composants et des bibliothèques. Vous vous y tromperez régulièrement. Windows a un chemin, mais il a aussi un registre, ce qui rend les choses super faciles ou super secrètes. Unix n'a pas de secret.

  • Découvrez les variables d’environnement utilisées par PHP et MySQL. Assurez-vous de savoir où et comment ils se préparent. Apache s'exécute dans son propre environnement et comporte des commandes permettant de définir les paramètres de l'environnement d'exécution via mod_php. Ecrivez de brefs echo $PATH scripts shell pour révéler ce qui se passe.

Parmi les problèmes restants, 80% seront liés à la base de données. Après avoir trié les autorisations de base de données, vous devez toujours vous connecter et le & "Tube nommé &"; " localhost " les choses vont se tromper de manière obscure et déroutante. MySQL est très tolérant, mais vous ferez des erreurs ici.

  • Essayez chaque autre connexion, sachez comment elle fonctionne. Ne choisissez pas l'un d'entre eux car il ressemble à Windows ou & "Plus simple &". Exerce réellement chacun. La manière dont vous passez les noms d'utilisateur et les mots de passe d'une application Web à un serveur de base de données est également importante. Apache s'exécute en tant que & Quot; personne ne & Quot; - et vous ne voulez pas leur donner un accès par défaut à quoi que ce soit. Votre application doit établir une connexion intentionnelle avec la base de données sans utiliser de paramètres par défaut.

Parmi les problèmes restants, 80% seront des configurations Apache. Apache est vraiment simple, mais a un million d'options. Il y a quatre façons de tout faire, et vous en essayerez toujours deux qui ne fonctionnent pas du tout, et vous vous contenterez de la troisième qui sera dégoûtante. Le quatrième, qui est beaucoup plus simple, ne vous viendra jamais.

  • Lisez beaucoup sur la configuration d’Apache. Le site httpd.apache.org contient de nombreuses informations. Efforcez-vous de la simplicité. Copiez les exemples existants et utilisez-les. Ne définissez pas les exigences ou les implémentations souhaitées en fonction de l'expérience IIS ou du bureau Windows. Copier quelque chose qui fonctionne.

Parmi les problèmes restants, 80% concerneront l'utilisation du système de fichiers par les applications. Si vous essayez d'ouvrir, de lire ou d'écrire des fichiers locaux, vous constaterez que (a) les autorisations ne sont pas correctes sur le répertoire que vous essayez d'utiliser [voir ci-dessus] et (b) que les chemins de fichiers Unix sont différents. Pas très différent, mais assez différent pour que quelque chose se brise de manière obscure.

  • Chaque livre de programmation sous Unix / Linux couvre cela. Ce n’est pas très différent de Windows, mais suffisamment différent pour vous faire trébucher la première fois. Écrivez & "; Bonjour tout le monde &"; Comme les pages PHP pour créer la version la plus simple possible de téléchargements ou de téléchargements, afin de vous assurer que tous les éléments sont en place. Ensuite, corrigez l'application complète pour qu'elle le fasse correctement.

Parmi les problèmes restants, 80% seront la création de sous-processus. Windows le fait différemment. Une des choses les plus importantes dans Unix est de garder à l'esprit que votre sous-processus est votre enfant et que vous devez attendre qu'il se termine pour que le système d'exploitation puisse se nettoyer. Si vous considérez un sous-processus comme un parallèle & "Feuilletez et oubliez &"; chose, vous aurez des processus zombies et serez obligé de faire des redémarrages périodiques.

  • Écrivez des pages PHP très simples pour améliorer la gestion des sous-processus. La règle d'or est de gérer vos enfants et de nettoyer après eux. Ensuite, corrigez l'application complète pour qu'elle le fasse correctement.

Les problèmes restants seront triviauxlogique d'application, mais à cause des différences de plate-forme, vous blâmerez Unix avant de dépister le bogue dans l'application PHP.

Autres conseils

Pour commencer, vous devrez:

  1. Découvrez le système de fichiers.
  2. Découvrez comment démarrer / arrêter les processus (services) que vous utilisez.
  3. Trouver ou apprendre un éditeur de texte de base (vim, joe, pico)
  4. Apprenez à vérifier les processus pour voir si les choses fonctionnent (ps, en haut)
  5. Si vous maintenez le serveur, vous devrez apprendre à installer des packages.

Ce ne sont que des bases, la prochaine étape consiste à comprendre quand vous avez un problème et à savoir où vous pouvez aller pour trouver plus d’informations à ce sujet. Même avec tout cela, cela ne fait que gratter la surface et beaucoup de choses peuvent ne pas avoir de sens, c'est un bon début cependant.

Je faisais PHP / MySQL sous Windows et Mac depuis quelques années quand on m'a demandé de porter un site intranet assez complexe d'IIS / Windows vers Apache / Linux. Je n'avais aucune expérience avec Linux et un serveur vierge sans système d'exploitation. Au bout de deux jours environ, moi-même et un autre administrateur Windows ne possédant pratiquement aucune expérience de Linux possédais une copie de CentOS exécutant PHP / MySQL / Apache ainsi que l’intranet.

Les leçons que j'ai apprises: & "; miam &"; est votre meilleur ami lors de l’installation de vos services, " sudo " est votre meilleur ami lors de la configuration de vos services (les autorisations peuvent être fastidieuses), et presque tous les autres problèmes résultaient de problèmes de casse ou de slash-backslash. Il s’est avéré que nous avions un peu gâché la sécurité sur l’accès FTP, mais c’était derrière un pare-feu (dmz); aucun dommage n’a donc été causé avant qu’un véritable audit de sécurité n’ait été effectué et que cela ne soit pas encore renforcé.

Réponse finale: si vous êtes prêt à retrousser les manches et à salir votre ligne de commande, la mise en place d’un site Web de base sur une machine Linux n’est pas une tâche énorme tant que vous n’arrivez pas à la sécurité, ce qu’il est préférable de laisser (OMI) quelqu'un qui est un expert dans ce domaine.

Vous pourriez envisager, en fonction de votre introduction, une option WAMP (Windows Apache MySQL Python / Perl / PHP).

L'apprentissage de Linux n'est pas difficile , mais ce n'est certainement pas une tâche courte non plus. De nombreuses tâches d’administrateur système s’appliquent de plate-forme à plate-forme, mais la vraie réponse à votre question est d’être au moins un administrateur Linux amateur, puis de partir de là.

Je voudrais apprendre vi et bash. vi est léger et a tendance à être installé partout. Il peut être très pénible de s'y habituer, mais si vous voulez connaître Linux, il a tendance à être toujours disponible et vous aurez souvent besoin d'un éditeur de texte. J'apprendrais également bash, car il s'agit généralement du shell par défaut.

Les suggestions de vfilby sont bonnes.

Apprenez le gestionnaire de paquets pour le linux de votre choix. Je passerais quelque temps avec Apache, car c’est un peu un monstre, simplement parce qu’il a BEAUCOUP d’options de configuration.

J'essaie de garder mon banc d'essai Linux hors de l'internet public parce que je sais que je ne suis pas un administrateur système assez bon pour le garder en sécurité. Au moins, placez-le derrière un pare-feu. Il est assez facile de trouver des scripts iptables pour bloquer tout ce qui arrive, vous pouvez donc essayer de vérifier sur iptables pour une bonne manipulation pare-feu / adresse / port.

Bonne chance!

Tout d’abord, vous devez décider si vous allez gérer le système à l’aide d’outils graphiques (gnome ou KDE) ou si vous allez accéder principalement à partir de SSH à l’aide d’une ligne de commande. (Ceci est généralement une décision en fonction de l'emplacement du serveur). Apprendre un peu des deux GUI et CLI va un long chemin. L’interface de ligne de commande est super puissante, bien plus que l’invite de commande sous Windows (je connais PowerShell ...)

Du point de vue de l'interface graphique, le terminal (CLI) fonctionne de toute façon, du point de vue de Debian / Ubuntu:

  1. Processus de démarrage / d'arrêt: sudo /etc/init.d/apache stop ou sudo /etc/init.d/apache start
  2. Editeurs de texte: gedit (interface graphique - gnome), kate (interface graphique - KDE), vim (CLI) ou nano (CLI)
  3. Processus en cours d'exécution: ps -aux
  4. Terminer le processus sudo kill -s TERM <process_id>
  5. Ajouter un package: sudo apt-get install php5-cli
  6. Mettre à niveau / corriger un système: sudo apt-get update && sudo apt-get upgrade

Il y a beaucoup d’informations ici et une grande variété d’options parmi lesquelles choisir. Je recommanderais d’utiliser une distribution Linux qui possède une communauté conviviale (Ubuntu, CentOS (sans marque / RHEL libre) ou RHEL (vous les payez pour vous aider).

Il va certainement être très utile pour vous de jouer avec une distribution le week-end sur une machine virtuelle ou une machine de rechange à la maison / au travail. La communauté Linux est immense et vous trouverez un excellent support si vous le recherchez.

Pour commencer, vous devrez:

  1. Apprenez à lire les pages du manuel / utilisez le système d'aide.
  2. Apprenez à naviguer dans le système de fichiers.
  3. Découvrez comment démarrer / arrêter les processus (services) que vous utilisez.
  4. Découvrez où votre serveur se connecte et comment mettre en forme les fichiers journaux.
  5. Apprenez à vérifier les processus pour voir si les choses fonctionnent (ps, en haut).
  6. Trouver ou apprendre un éditeur de texte de base (vim, joe, pico)
  7. Si vous maintenez le serveur, vous devrez apprendre à installer des packages.

Ce ne sont que des bases, la prochaine étape consiste à comprendre quand vous avez un problème et à savoir où vous pouvez aller pour trouver plus d’informations à ce sujet. Même avec tout cela, cela ne fait que gratter la surface et beaucoup de choses peuvent ne pas avoir de sens, c'est un bon début cependant.

Vous devriez

  • Apprenez le shell bash (en particulier $PATH, history)
  • Commandos de base (cd, ls, rm, tail, kill, ps, top)
  • Connaître /proc et ses principales utilisations
  • Apprendre un éditeur (vi est toujours installé. Si vous le souhaitez, vous pouvez aussi apprendre emacs)
  • Remplacement sed de base (sed s,orig,repl,g), un peu gênant
  • Comment travailler avec iptables, netstat et traceroute
  • Comment obtenir des informations (man, info et --help)
  • Comment installer un paquet (pacman -S <name> pour archlinux, apt-get install <name> pour Debian), supprimez et mettez à jour votre système.
  • Savoir comment démarrer / arrêter les services de votre distribution (/etc/init.d, /etc/rc.d)
  • Comment fonctionne généralement un système de fichiers Unix (inodes, qu'est-ce que quota?). Comprendre par exemple /etc/fstab. Connaître df.
  • Comprendre comment gérer les utilisateurs et les groupes (useradd, groupadd). Connaître le format de /etc/passwd et /etc/group
  • Où rechercher les fichiers journaux de apache et du syslog démon.
  • Connaître des problèmes de bas niveau tels que dmesg et hdparm

La plupart du temps, vous devriez savoir comment utiliser Linux (comme dans un usage quotidien). Ensuite, vous devez également savoir comment gérer les lignes de commande.

Enfin, vous devez apprendre des choses spécifiques à LAMP. Vous devez connaître et appliquer certaines consignes de sécurité élémentaires (ou pas très élémentaires).

Franchement, très peu si les sites Web sur lesquels vous allez travailler sont très petits ou très grands. Très petit signifie un hébergement partagé et vous n'avez pas besoin de le faire, très grand signifie que vous aurez probablement un administrateur système à bord pour le gérer.

  • Ajoutez un signet ou téléchargez le manuel GNU coreutils et lisez-le régulièrement.

  • Apprendre vim. Un bon départ est vimtutor sur le shell.

  • Apprenez à utiliser les mécanismes de sécurité, ne les désactivez pas simplement. Windows a une sécurité laxiste parce que les applications disponibles l’attendent de cette façon (et casseraient autrement). Dans un environnement de type Unix, les applications ont toujours été obligées de se comporter et la sécurité peut être étroite par défaut.

Récupérez une vieille boîte sur Craigslist et installez Gentoo Linux dessus. Cette ... expérience ... devrait vous donner une bonne idée de Linux et de sa façon de penser.

De même, dans le cas vi contre emacs , je règle emacs . (Bien que vous souhaitiez commencer par pico / nano, car rien ne sert d’apprendre à utiliser un éditeur complet tout en apprenant un nouveau système d’exploitation).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top