[LINUX] Pour déployer des applications Java sur VPS (installation / liaison Apache / Tomcat)

1. 1. introduction

J'ai créé une application de servlet l'autre jour, j'ai donc loué un serveur VPS pour déployer l'application sur le Web, mais j'ai eu une énorme difficulté à créer l'environnement car je n'avais presque aucune connaissance de Linux et des serveurs. Ici, en plus de la procédure proprement dite, je voudrais aborder "ce qui est nécessaire pour déployer une application Java?" Et "qu'est-ce que la coopération ajp?" Et le résumer sous forme de mémorandum.

2. environnement

Pour référence, je publierai mon environnement cette fois.


VPS
・ Le VPS de Sakura -OS: CentOS Linux version 7.8.2003
JDK
-Version: 1.8.0_262
Apache
-Version: Apache 2.4.6
Tomcat
-Version: apache-tomcat 9.0.37

3. 3. Comment déployer une application Java sur le Web?

Environnement de déploiement d'applications Java

Contrairement au contenu statique (fichiers HTML, etc.), le contenu dynamique (applications Java, etc.) ne peut être traité que si un "serveur d'applications" est installé en plus du ** serveur Web. ** (Vous devez également installer JDK pour exécuter les fichiers Java) Cette fois, nous utiliserons "Apache" comme serveur Web et "Tomcat" comme serveur d'application.

server1.png Puisqu'un serveur de location général ne peut pas organiser l'environnement du serveur comme vous le souhaitez, vous devez utiliser un serveur tel que VPS (serveur dédié virtuel) que vous pouvez créer votre propre environnement. Ensuite, comme le montre la figure ci-dessus, ** Comment puis-je lier le serveur Web (Apache) et le serveur d'applications (Tomcat)? ** À ce moment-là, "AJP (Apache JServ Protocol)" est utilisé.

Qu'est-ce que ajp (Apache JServ Protocol)?

ajp est un protocole pour relier Apache et Tomcat, mais qu'est-ce que ajp en premier lieu? L'explication sur ce site était facile à comprendre, je vais donc la citer.

ajp est une abréviation de Apache Jserv Protocol, qui est un protocole utilisé lors de la liaison entre Apache HTTP Server et Apache Tomcat. ajp est un protocole pour se connecter au port serveur ajp de Tomcat via TCP. La demande reçue par Apache du client est transférée au programme serveur ajp de Tomcat par ajp, Tomcat répond à Apache avec le résultat du traitement tel que Servlet, et Apache répond au client avec la réponse.

[Ajp / Tomcat ajp linkage-httpd mod_proxy_ajp, protocole, méthode de paramétrage. ] (https://www.zealseeds.com/SysDevTech/apache_tomcat/connect/ajp/index.html)

Tomcat accepte la communication HTTP sur le port 8080 et accepte la communication AJP sur le port 8009. Par conséquent, vous pouvez accéder directement à Tomcat avec `` http: // adresse IP: 8080 '' sans passer par Apache, mais vous utilisez rarement ce port lorsque vous utilisez réellement l'application. Assurez-vous de passer par le serveur Web. ** Tomcat accepte la communication AJP 1.3 sur le port 8009, donc à partir d'Apache, la communication AJP peut être effectuée sur le port 8009 **. server2.png

Alors, que devons-nous faire réellement?

Sur la base de l'histoire jusqu'à présent, si vous énumérez approximativement la procédure réelle,

** 1 Installez JDK, serveur Web (Apache), serveur d'applications (Tomcat) sur VPS. ** ** ** 2 Effectuez le traitement suivant pour lier Apache et Tomcat. ** ** ** (1) (côté Tomcat) Désactivez le réglage du port 8080 et activez le réglage du port 8009. ** ** ** (2) (côté Apache) Définit le chemin d'accès pour lier Tomcat. ** **

Ce sera.

4. Présentez Apache et Tomcat à VPS

Installez Java 8 (OpenJDK)

Semblable à la création d'un environnement sur un PC local, les applications Java ne fonctionneront pas sur VPS sauf si celui-ci est installé. Si vous ne prévoyez pas de développer sur VPS, une installation uniquement à l'exécution est suffisante.   〇 Lors de l'installation du runtime

# yum install java-1.8.0-openjdk

〇 Lors de l'installation de l'environnement de développement

# yum install java-1.8.0-openjdk-devel

Vérifiez si l'installation a réussi. Si vous l'avez installé correctement, entrez la commande suivante

$ java -version

La version JDK s'affiche comme illustré ci-dessous.

openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

Ceci termine l'installation de Java.

Installez Apache

Comme mentionné ci-dessus, Apache est un serveur Web. Cette fois, installez la version "2.4.6".   (1) Installer

# yum install httpd

(2) Démarrez Apache

# systemctl start httpd.service
# systemctl enable httpd.service
# systemctl status http.service

(3) Définissez le pare-feu Les paramètres de pare-feu par défaut autorisent l'accès au serveur Web, autorisez donc l'accès au port 80.

# firewall-cmd --permanent --add-service=http

Lorsque "succès" s'affiche, rechargez avec la commande suivante.

# firewalld-cmd --reload
$ systemctl status firewalld
# firewall-cmd --list-all

Ceci termine l'installation d'Apache. À ce stade, si vous accédez à `` http: // Adresse IP VPS / '', vous pourrez voir la page de test Apache (la page ci-dessous). apachetest.png

Installez Tomcat

(1) Installez Tomcat dans n'importe quel dossier. (Cette fois, réglez-le sur / opt) Installez la dernière version "9.0.37" pour le moment. (Voir `` `` http: // tomcat.apache.org / download-90.cgi pour vérifier la dernière version)

$ cd /opt
# wget http://ftp.riken.jp/net/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz

(2) Le fichier téléchargé apache-tomcat9.0.37.tar.gz est compressé au format gzip, alors décompressez-le avec la commande suivante.

$ tar -xzvf ~/apache-tomcat-9.0.37.tar.gz

(3) Ajoutez un utilisateur dédié pour faire fonctionner Tomcat.

# useradd -s /sbin/nologin tomcat

(4) Changez le propriétaire de tomcat9.0.37 en `` tomcat.

$ chown -R tomcat:tomcat /opt/apache-tomcat-9.0.37

(5) Créez un fichier d'unité Tomcat. Ce fichier utilise la fonction de gestion de service `` Systemd '' de Linux et est nécessaire pour lancer automatiquement les programmes.

/etc/systemc/system/tomcat.Créez un fichier de service avec le contenu suivant.




#### **`tomcat.service`**
```service

[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/apache-tomcat-9.0.37/tomcat.pid
RemainAfterExit=yes

ExecStart=/opt/apache-tomcat-9.0.37/bin/startup.sh
ExecStop=/opt/apache-tomcat-9.0.37/bin/shutdown.sh
ExecReStart=/opt/apache-tomcat-9.0.37/bin/shutdown.sh;/opt/apache-tomcat-9.0.37/bin/startup.sh

[Install]
WantedBy=multi-user.target

Modifiez ensuite les autorisations sur ce fichier.

$ chmod 755 /etc/systemd/system/tomcat.service

À ce stade, tapez la commande suivante pour activer tomcat.

$ systemctl enable tomcat

(6) Paramètres du pare-feu Comme avec Apache, configurez le pare-feu pour tomcat. Pour ajouter un service auquel l'utilisateur applique un pare-feu, le fichier xml doit être placé dans / etc / firewalld / services```. Alors, créez un fichier / etc / firewalld / services / tomcat.xml '' avec le contenu suivant.

tomcat.xml


<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Apache Tomcat 9</short>
  <description>Apache Tomcat 9</description>
  <port protocol="tcp" port="8080"/>
</service>

Entrez ensuite la commande suivante pour autoriser la communication tomcat.

# firewalld-cmd --add-service=tomcat --zone=public --permanent
# firewall-cmd --reload
# firewall-cmd --list-services --zone=public --permanent

C'est OK si "tomcat" est affiché ici.

Ceci termine l'introduction de Tomcat.

http://Adresse IP VPS:Sur le 8080, la page de test tomcat sera affichée.


 ![tomcat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673146/a27ef129-fffe-407e-4278-7f1b802adf53.png)

# 5. Intégrez Apache et Tomcat
## Paramètres côté Tomcat

#### **`opt/apache-tomcat9.0.37/conf/server.Modifiez xml comme suit.`**

** 〇 Commentez le réglage du port 8080 et décommentez le réglage du port 8009. ** ** ** 〇 Modifiez les paramètres du port 8009. ** **

Le code actuel est ici.  
Avant modification

server.xml


<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<!--
<Connector protocol="AJP/1.3"
               address="::1"
               port="8009"
               redirectPort="8443" />
-->


Après modification

server.xml


<!--
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-->

<Connector protocol="AJP/1.3"
               address="0.0.0.0"
               port="8009"
               secretRequired="false"
               redirectPort="8443" />

** * Remarque 1 ** Raison de la modification du champ "adresse" de ":: 1" à "0.0.0.0" ":: 1" est une adresse IPv6, et si le serveur ne prend pas en charge IPv6, cette partie provoquera une erreur. (À propos, "0.0.0.0" signifie autoriser l'accès de tous les hôtes)   ** * Remarque 2 ** Raison de l'ajout de "secret Required =" false "" Je n'étais pas sûr de cela au début, mais la réponse était dans le journal des modifications de Tomcat.

Rename the requiredSecret attribute of the AJP/1.3 Connector to secret and add a new attribute secretRequired that defaults to true. When secretRequired is true the AJP/1.3 Connector will not start unless the secret attribute is configured to a non-null, non-zero length String. (markt)

Apache Tomcat 9 (9.0.38) - Changelog   La partie en gras signifie "Si secret n'est pas défini, le connecteur AJP ne fonctionnera pas si secretRequired est true". En d'autres termes, si vous ne définissez pas de secret (un mot de passe), vous obtiendrez une erreur sauf si vous définissez "secretRequired =" false "".

Paramètres côté Apache

Du côté d'Apache, définissez ProxyPass sur Tomcat.

/etc/httpd/conf/httpd.Dans le fichier conf, il y a la description suivante.



Load config files in the "/etc/httpd/conf.d" directory, if any.

IncludeOptional conf.d/*.conf

 Il dit quelque chose comme "S'il s'agit d'un fichier conf dans le répertoire conf.d, il sera lu." Par conséquent, créez un fichier ```etc / httpd / conf.d / proxy-ajp.conf``` (tout nom de fichier est OK s'il est au format `` `` .conf```) avec le contenu suivant, et créez un Proxypass. Ensemble.


#### **`proxy-ajp.conf`**
```conf

<Location /examples/>
  ProxyPass ajp://127.0.0.1:8009/examples/
</Location>

Vous devriez maintenant pouvoir voir la page d'exemples de Tomcat sur `` http: // adresse IP / exemples ''.

6. référence

Procédure pour installer Apache Tomcat 9 sur CentOS 7 Comment lier Apache httpd et Tomcat Jusqu'à ce que vous installiez Apache et Tomcat sur Linux (CentOS) et déployez des applications Java Arrêtez le port 8080 et vérifiez le protocole AJP / 1.3

Recommended Posts

Pour déployer des applications Java sur VPS (installation / liaison Apache / Tomcat)
Jusqu'à ce que vous installiez Apache et Tomcat sur Linux (CentOS) et déployez des applications Java
Comment déployer une application Django dans le cloud Alibaba
L'installation d'Apache échoue sur CentOS 8.2
Comment déployer une application Web sur Alibaba Cloud en tant que pigiste
Étapes pour déployer EMLauncher sur CentOS 8
Déployer l'application Django sur Heroku
Comment déployer django-compresseur sous Windows
Java - Déployer le projet Spring Boot sur GAE
Comment installer Apache (httpd) sur CentOS7
Comment installer Apache (httpd) sur CentOS8