Maison > Article > Opération et maintenance > Comment déployer Tomcat et Nginx sur un serveur Linux
1. Préparation
Vous devez d'abord disposer d'un serveur Linux pouvant être joué, connaître le nom d'utilisateur et le mot de passe, puis vous devez installer les deux sur votre ordinateur Windows Outils pouvant se connecter au serveur Linux, xshell 5 et xftp 5, le tutoriel d'installation n'entrera pas dans les détails, l'image supplémentaire montre comment se connecter au serveur :
L'interface de connexion xshell est comme suit, entrez l'adresse IP de l'hôte et cliquez sur OK, xshell Une fenêtre apparaîtra pour entrer votre nom d'utilisateur et votre mot de passe pour vous connecter avec succès !
Vous pouvez comprendre la différence entre cela et sftp dès que vous le savez !
2. Travaux d'installation et de déploiement
Pour déployer le projet sur le serveur Linux , il est indispensable d'installer jdk et tomcat. Ce qu'il faut souligner ici, c'est que si vous souhaitez déployer plusieurs applications sur un serveur, vous devez avoir son propre tomcat pour chaque application, car sous différentes applications, la configuration de tomcat est définitivement différente. différent. Dans ce cas, vous pouvez installer un répertoire d'installation de Tomcat et le répertoire de travail de Tomcat sous plusieurs applications. Pour les mêmes parties, vous pouvez partager le répertoire d'installation de Tomcat. Ce qui suit explique en détail comment installer Tomcat. et jdk sur votre serveur Créez un nouveau répertoire de cette manière et placez certains fichiers liés au démarrage du projet et à l'accès au déploiement sous ce répertoire. Comme vous pouvez le voir, j'ai placé plusieurs versions de jdk et plusieurs versions de Tomcat sous ce répertoire. le processus de déploiement du projet, quels Tomcat et jdk utiliser peuvent être obtenus via la configuration.
Pour les applications réelles, nous les mettons dans un répertoire d'instance, établissons le nom de chaque application, puis plaçons la guerre correspondante sous le package de répertoire, et les fichiers décompressés, en attendant que Tomcat lise le répertoire pour déployer l'application, comme suit : Modifier la configuration
Nous plaçons également le tomcat sous chaque application dans un répertoire pour une gestion facile, comme indiqué ci-dessous, mais vous devez faire attention à la configuration de chaque tomcat# 🎜🎜#
Sous le répertoire /bin, le fichier start.sh et le fichier stop.sh doivent être modifiés. Tout d'abord, vous devez spécifier le chemin jdk, ce qui est similaire à la configuration des variables d'environnement. La deuxième étape consiste à spécifier le chemin Tomcat du répertoire de travail Tomcat. Vous pouvez remarquer que catalina_home et catalina_base correspondent respectivement au répertoire d'installation et au répertoire de travail de Tomcat. ligne indiquant que le projet démarre en utilisant start.sh sous le répertoire d'installation, mais le projet démarre. Le fichier de configuration Tomcat utilisé est le fichier de configuration configuré par chaque application Tomcat. La même chose est vraie pour stop.sh.
Pour utiliser xshell pour exécuter ./start.sh et ./stop.sh, des autorisations sont requises. S'il n'y a pas d'autorisation, nous pouvons utiliser. xftp Pour modifier les autorisations de l'e-mail start.sh, cochez la case comme indiqué sur l'image.
Sous le répertoire /conf, vous devez faire attention aux configurations modifiées. La première est le fichier server.xml, modifiez le numéro de port correspondant. , et le tomcat de chaque application. Différents numéros de port doivent être modifiés, sinon le port sera occupé lors du démarrage de plusieurs tomcats et ne pourra pas être démarré. Il est préférable de se souvenir du numéro de port de tomcat configuré pour cette application, qui sera utilisé. plus tard lors de l'utilisation de nginx pour le mappage de ports ; #🎜 🎜#
Un autre endroit à modifier est le fichier root.xml dans le répertoire localhost sous le répertoire catalina. utilisé pour spécifier quel Tomcat doit être chargé au démarrage. Exemples de projets dans le répertoire
.Les autres répertoires /logs, /temp, /webapps et /work n'ont pas besoin d'être modifiés ; comme le montre ce qui précède, la division des répertoires est très claire et ils sont divisés en répertoires d'installation de services ( jdk, tomcat, nginx, etc.), le répertoire d'instance d'application et le répertoire de déploiement d'application peuvent également être divisés de cette manière lorsque vous utilisez le serveur Linux pour déployer plusieurs projets.
3.nginx implémente le proxy inverse du port 80
Logiquement parlant, à ce stade, nous pouvons transférer le package war de notre propre application vers le répertoire correspondant pour le décompresser, puis l'exécuter dans le répertoire de travail de l'application Tomcat correspondante. /start.sh pour démarrer le projet ! Autant essayer d'abord.
Une fois le projet déployé, nous configurons les hôtes et commençons à accéder. À ce moment-là, nous constaterons que nous devons ajouter le numéro de port Tomcat configuré ci-dessus avant de pouvoir y accéder. Ne pouvons-nous pas ajouter le numéro de port (utiliser celui par défaut). port 80 ) visite ? Comme mentionné ci-dessus, nous avons configuré différents numéros de port pour différents Tomcats. La raison en est qu'un seul numéro de port ne peut être utilisé que par un seul Tomcat. Cela signifie que l'accès au projet doit ajouter des numéros de port pour l'accès. Il est également possible qu'une application utilise le port 80 pour l'accès. C'est à ce moment-là que nginx est utilisé. Après avoir installé nginx, nous pouvons ajouter certaines configurations pour obtenir un proxy inverse et transférer l'accès au port 80 utilisé par différentes applications vers le numéro de port correspondant. Du point de vue de Tomcat, les requêtes externes utilisent toujours le numéro de port configuré par Tomcat, ce qui permet d'obtenir l'effet souhaité. La configuration spécifique est la suivante (bien sûr, nous devons également effectuer le travail de division de répertoire correspondant) :
Le répertoire nginx. est la suivante :
Nous devons uniquement nous soucier du fichier de configuration nginx.conf dans le répertoire /conf. J'ai également ouvert les informations de configuration spécifiques pour que tout le monde puisse les voir. Avez-vous remarqué la dernière ligne "inclure les domaines/". *"? Indique que la configuration n'est pas encore terminée, y compris tous les fichiers de configuration dans le répertoire /domains,
À ce stade, nous pouvons configurer la configuration nginx correspondante de chaque application avec des fichiers avec des noms différents
Voyons ensuite comment le configurer. Écoutez l'accès au nom de domaine sur enchères.center.jd.net:80, puis transférez-le vers le port 1605 de 127.0.0.1 de la machine locale. peut également voir que pour certains états anormaux, tels que http_500, http_502, http_504, etc. seront enregistrés et traités différemment. Généralement, vous pouvez accéder à la page d'accueil du site Web, etc., puis enregistrer le journal après avoir configuré ce fichier de configuration. , il ne faut pas oublier de créer un nouveau répertoire de log, sinon nginx ne pourra pas le trouver. Allez dans le répertoire et une erreur sera signalée au démarrage.
Après avoir terminé ces tâches, nous n'avons pas encore terminé. Nous devons redémarrer nginx. Je n'entrerai pas dans les détails sur la façon de redémarrer. Il existe de nombreuses informations connexes sur Baidu. Si le redémarrage échoue, prenons simplement. une étape difficile et tuez le processus nginx. Utilisez ensuite la commande nginx service start pour démarrer le service nginx.
Une fois ces tâches terminées, pouvons-nous utiliser la méthode familière (sans ajouter de numéro de port) pour y accéder ? Oui, c'est vrai, beaucoup de gens se demandent s'ils doivent à nouveau redémarrer Tomcat pour déployer une application. signifie seulement que vous ne comprenez pas la couche de conversion de routage nginx de la couche réseau. Le nom de domaine que nous visitons effectue d'abord la résolution DNS via les hôtes que nous avons configurés, le convertit en l'adresse IP correspondante, trouve le serveur correspondant à l'adresse IP et transmet l'adresse IP correspondante. le pare-feu du serveur, puis lorsque nous configurons nginx sur le serveur, nginx interceptera d'abord la requête, traitera et distribuera la requête, et enfin frappera le tomcat correspondant (compréhension personnelle, je ne le comprends peut-être pas bien, veuillez ne pas vous plaindre), en ce moment Nous pouvons désormais accéder au nom de domaine et envoyer des demandes en toute confiance ! !
4. Montez sur la fosse
Euh. . pas bon ! ! J'étais ravi et j'ai sauté sur la page d'accueil, mais je n'ai toujours pas pu accéder à l'application spécifiée. Lorsque j'ai essayé d'ajouter le numéro de port, j'ai pu y accéder "miraculeusement". Cela signifie que le nginx que nous avons configuré n'a pas pris effet. est le problème ?
Permettez-moi de parler de mes idées de résolution de problèmes ci-dessous. Tout d'abord, nous devons confirmer que toutes les demandes vont à nginx. À ce stade, les avantages des journaux se reflètent lorsque nous utilisons le port 80 pour accéder à notre application. les journaux. Une, deux fois, trois fois. . Il n'y a pas de journal pour le moment, nous pouvons conclure à peu près que le service nginx n'a pas été utilisé du tout. Nous ne pouvons pas être sûrs que le service nginx n'a pas pris effet sur le serveur. À ce moment-là, j'ai fait une opération audacieuse : désactiver l'accès au service nginx, ou accéder à la page d'accueil du site Web. Le passage à la page d'accueil n'est-il pas configuré via nginx ? En effet, l'entreprise l'a déjà traité au niveau réseau. A cette époque, j'étais très confus. Il s'agissait simplement de diverses tentatives, autant modifier la configuration de Tomcat et configurer l'une des applications sur le port 80. afin qu'il soit toujours accessible. Bientôt, la modification a été terminée. Après l'avoir déployé, j'ai juste attendu que le nom de domaine soit saisi dans la barre d'adresse pour y accéder. Car le service nginx a été fermé, la demande à ce moment-là. doit être envoyé directement à Tomcat. J'y ai accédé une, deux fois et trois fois, miraculeusement, je n'ai pas pu y accéder. ? ? À ce moment-là, j'ai eu un éclair d'inspiration. Il se peut que le pare-feu du serveur ait désactivé le port 80. J'ai rapidement essayé de communiquer localement avec Telnet 192.168.108.37 80. Il s'est avéré que je ne pouvais pas y accéder, ce qui a prouvé que c'était ma supposition. était correct. C'était facile à gérer à ce moment-là. J'avais juste besoin de l'activer dans le pare-feu. L'accès au port 80 est suffisant. Vous trouverez ci-dessous un supplément sur la façon de configurer le pare-feu iptables pour ouvrir le port 80 sous centos.
1. Ouvrez le fichier de configuration d'iptables, le code est le suivant : vi /etc/sysconfig/iptables
2. Utilisez la commande /etc/init.d/iptables status pour vérifier si le port 80 est ouvert Sinon. , il existe deux méthodes de traitement
3. La première façon : Modifier la commande vi /etc/sysconfig/iptables pour ajouter le pare-feu pour ouvrir le port 80. Le code est le suivant :
Copiez le code Le code est le suivant :
-a rh-firewall-1-input -m state --state new -m tcp -p tcp --dport 80 -j accept
4. Le code pour fermer/activer/redémarrer le pare-feu est le suivant : / etc/init.d/iptables stop (#start pour ouvrir, #restart pour redémarrer)
5. La deuxième façon : ajoutez le port via la commande, le code est le suivant :
[root@centos httpd]# /sbin/iptables -i input -p tcp --dport 80 -j accept [root@centos httpd]# /etc/rc.d/init.d/iptables save [root@centos httpd]# /etc/init.d/iptables restart
6. Visualisez l'effet : [ root@centos httpd]# /etc/init.d/iptables status
7. De plus, il est recommandé d'utiliser la première Les deux méthodes sont faciles à utiliser et ont un taux de réussite élevé. Prenez-moi comme exemple. J'utilise la première méthode pour modifier la configuration du pare-feu, le redémarrage échoue. Lorsque j'utilise la deuxième méthode, cela réussit parfaitement
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!