Source compilez Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web ―― 1. Introduction à Apache

Hypothèses et préparatifs

Article sur la construction du serveur Linux

Tout d'abord, j'ai essayé de créer un serveur de fichiers en utilisant Samba comme serveur pouvant être construit sur un petit PC, qu'il s'agisse d'un PC d'occasion ou d'une tarte aux râpes, en partageant des fichiers PC de gestion privée et de petites et moyennes entreprises, mais cette fois Construire sur un serveur Web avec Apache (⑅ • ᴗ • ⑅)

Signification de la compilation avec le code source

Il est tout aussi simple de configurer Apache pour n'importe quelle distribution, et vous aurez la version dont vous avez besoin (les commandes de package standard varient en fonction de la version de cette distribution).

Cependant, si vous compilez tous les packages à partir de la source, vous rechercherez toutes les bibliothèques principales, donc seules celles que vous souhaitez absolument réparer et exécuter, comme Apache et PHP, compileront la source et ce qui est nécessaire pour faire Pris en charge par les commandes de package standard telles que dnf et apt

environnement

supposition

CentOS8.1


# vi /etc/selinux/config

/etc/selinux/config


SELINUX=disabled

CentOS8.1


# reboot

Conditions du serveur

adresse IP

Fonctions et versions pour télécharger et installer individuellement les packages (à partir de juin 2020)

Les autres packages requis sont installés à l'aide des commandes de package standard de la distribution (dnf, apt, etc.) et n'ont pas besoin d'être téléchargés individuellement.

Pour le téléchargement, vous pouvez accéder au site officiel, le télécharger à partir de là et le transférer par FTP, ou vous pouvez l'obtenir avec wget si vous connaissez l'URL du fichier à télécharger, mais la méthode d'acquisition est omise.

Procédure de travail

Préparation

Installer les fonctions de décompression make, cmake et package

CentOS8.1


# dnf -y install make cmake tar bzip2

openSUSE15.1


# zypper -n install make cmake tar bzip2

Installation du compilateur GCC et C ++

CentOS8.1


# dnf -y install gcc gcc-c++

openSUSE15.1


# zypper -n install gcc gcc-c++

installation de la source zlib

J'ai installé le zlib avec l'emplacement par défaut.

# cd [Répertoire où se trouvent les fichiers d'archive zlib]
# tar zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11/
# ./configure
# make
# make install

Installez les packages requis pour compiler Apache avec la commande de package standard de distribution

En installant des bibliothèques Perl ou SSL, vous pouvez obtenir toutes les fonctionnalités dont vous avez besoin pour Apache. Remarque: Si vous ne l'exécutez pas même si c'est gênant, vous obtiendrez une erreur indiquant qu'il n'y a pas de paquet et la compilation sera arrêtée (´ • ω • ̥`)

CentOS8.1


# dnf -y install ncurses-devel perl libaio libaio-devel perl-Data-Dumper expat-devel pcre pcre-devel openssl-devel

openSUSE15.1


# zypper -n install ncurses-devel perl libaio1 libaio-devel perl-Data-Dump libexpat-devel pcre pcre-devel libopenssl-devel

Installez APR et sa bibliothèque d'utilitaires

APR installe la bibliothèque dans /opt/apr-1.7.0 et APR-Util installe la bibliothèque dans /opt/apt-util-1.6.1

# cd [APR 1.7.Répertoire où se trouvent 0 fichiers d'archive]
# tar xvzf apr-1.7.0.tar.gz
# cd apr-1.7.0/
# ./configure --prefix=/opt/apr-1.7.0
# make
# make install

# cd [APR-Util 1.6.Répertoire où se trouve 1 fichier d'archive]
# tar xvzf apr-util-1.6.1.tar.gz
# cd apr-util-1.6.1/
# ./configure --prefix=/opt/apr-util-1.6.1 --with-apr=/opt/apr-1.7.0
# make
# make install	

Installation de la compilation des sources Apache 2.4

Eh bien, voici la production. Ce travail a pris un certain temps (probablement 30 minutes sur mon PC Hyper-V)

configurer et faire

# cd [Répertoire où se trouve Apache httpd]
# tar xvzf httpd-2.4.43.tar.gz
# cd httpd-2.4.43/
# ./configure --with-apr=/opt/apr-1.7.0 --with-apr-util=/opt/apr-util-1.6.1 --enable-so --enable-ssl --enable-mods-shared=all --enable-mpms-shared=all

Par conséquent, en tant que spécification de configuration, spécifiez le chemin spécifié dans l'installation pour les chemins APR et APR-Util. Ici, APR a été installé dans "/opt/apr-1.7.0" et APR-Util a été installé dans "/opt/apr-util-1.6.1", et je l'ai utilisé.

J'ai également activé SSL.

J'ai installé tous les packages requis ci-dessus et j'ai pu configurer sans erreur (\ * ´꒳` \ *) Maintenant, la compilation et l'installation essentielles. Si vous obtenez une erreur, Apache est déjà plein de fonctionnalités, il est donc difficile de savoir où l'erreur s'est produite (˙꒳ ˙ᐢ).

# make
# make install

Si vous pouvez compiler sans erreur, l'installation est terminée ♪ (\ * ˘︶˘ \ *) ...: \ * ♡

Préférences Apache

Une fois installé, l'étape suivante est le fichier de configuration (˙꒳ ˙ᐢ) Lorsque vous installez Apache avec la compilation source, Apache lui-même est installé dans / usr / local / apache2. Le fichier de configuration est stocké dans / usr / local / apache2 / conf /, alors configurez-y l'environnement Apache.

[Paramètres de base d'Apache]
# vi /usr/local/apache2/conf/httpd.conf

/usr/local/apache2/conf/httpd.conf


…
#ServerName www.example.com:80
ServerName localhost:80 ← Ajoutez cette ligne directement sous ↑
…
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
    …
    Options Indexes FollowSymLinks
↑ Au début "#Commentez avec ""
   (Ne pas autoriser l'accès inutile aux répertoires qui ne sont pas publiés en tant que pages)
…
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
Recherchez les deux lignes ci-dessus, et les deux sont "#Et chargez la bibliothèque so
…
#Include conf/extra/httpd-ssl.conf
↑ "#Et conf/extra/httpd-ssl.Permet de lire la conf
…
[SSL Apache(https)paramètres de]
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf

/usr/local/apache2/conf/extra/httpd-ssl.conf


…
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
…
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
…

Ici, nous avons décidé que l'emplacement clé requis pour https est situé dans / usr / local / apache2 / conf /, qui est le même que le fichier de configuration.

Création de certificat SSL

À l'origine, le certificat a été créé via l'autorité de certification racine, mais ici nous donnerons la priorité à la méthode de rendre Apache compatible avec https **, donc nous n'aborderons pas l'autorité émettrice du certificat. Ainsi, lorsque vous y accédez, vous recevez un avertissement de sécurité [. .. .. ]

# cd /usr/local/apache2/conf/
# openssl genrsa -out server.key 2048
# openssl req -new -key server.key -out server.csr

Dans le processus de création d'une clé SSL, il existe également un dialogue pour entrer le profil de l'organisation, mais vous pouvez créer le certificat sans problème en entrant ce qui suit

python


# openssl req -new -key server.key -out server.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:<what entry=La préfecture dans laquelle vous vivez en exemple=Kanagawa>
Locality Name (eg, city) [Default City]:<what entry=Exemple de communes où vous vivez=Miura>
Organization Name (eg, company) [Default Company Ltd]:<what entry=Nom de l'organisation arbitraire>
Organizational Unit Name (eg, section) []:<what entry=Toute unité organisationnelle>
Common Name (eg, your name or your server's hostname) []:<what entry=Exemple de nom de domaine=kazumi-jam.chips.jp>
Email Address []:<what entry=Exemple d'adresse [email protected]>

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<what entry=Approprié pour le moment>
An optional company name []:<what entry=Vide Entrez pour le moment>

Je veux le coder en couleur d'une manière facile à comprendre, j'ai donc ajouté "que dois-je entrer" dans le style XML (\ * ˘︶˘ \ *) Le style de balise XML "<what entry =…" est , Que saisir "exemple =…" est un exemple d'entrée. En fait, peu importe s'il y a un blanc.

Exemple:
State or Province Name (full name) []: Kanagawa Pref.
Locality Name (eg, city) [Default City]: Miura city

Après avoir créé server.csr, créez un ensemble de certificats.

# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

Sans l'option "-days", elle n'est valable que pendant 90 jours et est inutile à d'autres fins que l'expérimentation. Donc ici, il est défini comme "-days 3650" pendant 10 ans. Même ainsi, le certificat lui-même n'a pas été émis par une institution approuvée par le certificat Oreore ... (\ * ˘ᗜ˘ \ *;)

Maintenant que vous avez créé le certificat SSL, modifiez les autorisations afin que personne d'autre ne puisse y toucher.

# chmod 600 /usr/local/apache2/conf/server.crt
# chmod 600 /usr/local/apache2/conf/server.csr
# chmod 600 /usr/local/apache2/conf/server.key
# ls -l /usr/local/apache2/conf/
108 au total
drwxr-xr-x 2 racine racine 313 24 juin 13:08 extra
-rw-r--r--1 racine racine 19316 24 juin 13:07 httpd.conf
-rw-r--r--1 racine racine 13064 24 juin 13:03 magic
-rw-r--r--1 racine racine 60847 24 juin 13:03 mime.types
drwxr-xr-x 3 racine racine 37 24 juin 13:03 original
-rw-------1 racine racine 1379 24 juin 13:06 server.crt
-rw-------1 racine racine 1119 24 juin 13:04 server.csr
-rw-------1 racine racine 1675 24 juin 13:03 server.key

Avec la commande "ls -l", ** 3 fichiers liés aux clés de certificat tels que "server.crt" (les 3 dernières lignes de la liste ci-dessus) appartiennent à root et les permissions sont "rw -------" (600) ”** Confirmez que c'est le cas. C'est une faille de sécurité lorsque le contenu de la clé privée est visible par les autres utilisateurs. ..

Démarrez le service Apache

Créer et activer le script de démarrage du service Apache

Vous disposez de tous les paramètres d'environnement et des clés nécessaires pour Apache. J'aimerais donc pouvoir le démarrer. Puisque le script de démarrage est Systemd, créez-le dans / etc / systemd / system

# cd /etc/systemd/system
# vi httpd.service

httpd.service


[Unit]
Description=Apache

[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl stop

[Install]
WantedBy=multi-user.target

Le script Systemd n'est pas expliqué en détail ici, mais comme le fichier de démarrage d'Apache lui-même se trouve dans / usr / local / apache2 / bin, vous pouvez démarrer Apache en exécutant la commande "apachectl" pour y démarrer le service Apache. Et peut être arrêté. De plus, dans le cas d'Apache, le processus du serveur Web est exécuté comme un sous-processus (bref, lorsqu'il est démarré et exécuté sur un certain terminal, il sera à l'état "en cours d'exécution" et les autres opérations ne seront pas possibles. , Vous pouvez revenir à l'entrée de commande et exécuter les autres opérations telles quelles. Comprenez-vous ??), spécifiez donc forking pour Type.

paramètres firewalld

Ensuite, dans les paramètres de firewalld, ** les ports 80 (http) et 443 (httpd) ** sont acceptés. En principe, ** le serveur et le client appartiennent au réseau 192.168.1.0/24 **, donc l'accès depuis un autre extérieur n'est pas accepté, alors autorisez-le avec la règle riche comme suit.

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="80" protocol="tcp" accept'
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="443" protocol="tcp" accept'
# firewall-cmd --reload

Démarrer et vérifier le fonctionnement

Commençons. Commencez toujours par activer Activer et confirmez que l'état est «Actif» et «En cours d'exécution».

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd

apachect.png Si cela ressemble à l'image ci-dessus, le démarrage est réussi. Du côté client Windows, entrez https: // [Adresse IP du serveur Linux] / dans le navigateur pour confirmer.

Ici, le serveur Web Linux est 192.168.1.18, alors allez sur https://192.168.1.18. Bien sûr, le certificat n'est pas émis par une institution de confiance, vous obtiendrez donc une erreur de confidentialité ;; dans ce cas, sélectionnez "Accéder tel quel" pour continuer (bien que cela se comporte différemment dans Chrome et Firefox).

itwks.png

Réussi! !! (˶˙ᵕ˙˶)

la prochaine fois

Présentez PHP et publiez les bases du serveur d'applications Web

Recommended Posts

Source compilez Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web ―― 1. Introduction à Apache
Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --2 introduction PHP
Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --3 MySQL 8.0 introduction
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
Compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --3. Utilisez MySQL
Créer un serveur HTTP Apache et Wildfly sur Oracle Linux 8
Construisez un serveur WebDAV simple sur Linux
Construire un serveur Samba sur Arch Linux
Créez un environnement CentOS Linux 8 avec Docker et démarrez Apache HTTP Server
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Créez un environnement LAMP avec Vagrant (Linux + Apache + MySQL + PHP)
Construction de serveur Web Linux (Ubuntu et Apache)
Exécutez un serveur Linux avec GCP
Construire un serveur de cache Pypi sur QNAP
[UE4] Construire DedicatedServer sous Windows et Linux
Créer un serveur NFS sur Arch Linux
Installer et configurer le serveur TigerVNC sous Linux
Démarrez un serveur Web en utilisant Bottle et Flask (j'ai également essayé d'utiliser Apache)
Construisez Linux sur un environnement Windows. Étapes pour installer Laradock et migrer
Installez Python3 et Django sur Amazon Linux (EC2) et exécutez le serveur Web
Mesures de sécurité du serveur Web efficaces et simples «Linux»
Lancer un serveur Web avec Python et Flask
Intégrons Django et apache (httpd) sur Mac! !!
Exécutez l'application flask sur Cloud 9 et Apache Httpd
Spécifiez le volume sous Linux et jouez le son
[Linux] [module de noyau] Construire et charger un module de noyau chargeable simple
Le débutant de la CTF a tenté de créer un serveur problématique (Web) [Problème]
Exécuter une commande sur le serveur Web et afficher le résultat
Compilez et installez MySQL-python pour python2.7 sur Amazon Linux
Comment créer un environnement Python sur Amazon Linux 2
[Linux] Créez un auto-certificat avec Docker et apache
Comment démarrer un serveur WEB simple qui peut exécuter des cgi de php et python
Créez un serveur Web API à une vitesse explosive en utilisant HUG
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Comment intégrer Apache httpd 2.4 et Tomcat 9 sur Cent OS 8
Créer un environnement Python et transférer des données vers le serveur
Créez un serveur API Web ultra-rapide avec Falcon
Créez un environnement python sur CentOS 7.7 pour votre serveur domestique