Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers ―― 1. Einführung in Apache

Annahmen und Vorbereitungen

Artikel zum Aufbau eines Linux-Servers

Zuerst habe ich versucht, einen Dateiserver mit Samba als Server zu erstellen, der auf einem kleinen PC erstellt werden kann, egal ob es sich um einen gebrauchten PC oder einen Raspeltorte handelt, indem ich PC-Dateien von der privaten Verwaltung und kleinen und mittleren Unternehmen gemeinsam genutzt habe. Diesmal jedoch Bauen Sie mit Apache auf einem Webserver auf (⑅ • ᴗ • ⑅)

Bedeutung des Kompilierens mit Quellcode

Es ist genauso einfach, Apache für jede Distribution einzurichten, und Sie haben die Version, die Sie benötigen (die Standardpaketbefehle variieren je nach Version dieser Distribution).

Wenn Sie jedoch alle Pakete aus der Quelle kompilieren, durchsuchen Sie alle wichtigen Bibliotheken, sodass nur diejenigen, die Sie unbedingt fest ausführen möchten, wie Apache und PHP, die Quelle kompilieren und was für make erforderlich ist. Unterstützt von Standardpaketbefehlen wie dnf und apt

Umgebung

--Web Server Programm: Apache 2.4.43 (Quellensammlung) --Client: Windows10 Pro

Annahme

CentOS8.1


# vi /etc/selinux/config

/etc/selinux/config


SELINUX=disabled

CentOS8.1


# reboot

Serverbedingungen

IP Adresse

Funktionen und Versionen zum individuellen Herunterladen und Installieren von Paketen (Stand Juni 2020)

Andere erforderliche Pakete werden mit den Standardpaketbefehlen der Distribution (dnf, apt usw.) installiert und müssen nicht einzeln heruntergeladen werden.

Zum Herunterladen können Sie auf die offizielle Website zugreifen, von dort herunterladen und per FTP übertragen oder mit wget abrufen, wenn Sie die URL der Download-Datei kennen, die Erfassungsmethode jedoch weggelassen wurde.

Arbeitsablauf

Vorbereitung

Installieren Sie die Dekomprimierungsfunktionen make, cmake und package

CentOS8.1


# dnf -y install make cmake tar bzip2

openSUSE15.1


# zypper -n install make cmake tar bzip2

Installation von GCC und C ++ Compiler

CentOS8.1


# dnf -y install gcc gcc-c++

openSUSE15.1


# zypper -n install gcc gcc-c++

Installation der zlib-Quelle

Ich habe die zlib mit dem Standardspeicherort installiert.

# cd [Verzeichnis, in dem sich zlib-Archivdateien befinden]
# tar zxvf zlib-1.2.11.tar.gz
# cd zlib-1.2.11/
# ./configure
# make
# make install

Installieren Sie die zum Kompilieren von Apache erforderlichen Pakete mit dem Befehl Distribution Standard Package

Durch die Installation von Perl- oder SSL-Bibliotheken erhalten Sie alle Funktionen, die Sie für Apache benötigen. Hinweis: Wenn Sie es nicht ausführen, auch wenn es problematisch ist, wird eine Fehlermeldung angezeigt, dass kein Paket vorhanden ist und die Kompilierung gestoppt wird (´ • ω • ̥`).

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

Installieren Sie APR und seine Dienstprogrammbibliothek

APR installiert die Bibliothek in /opt/apr-1.7.0 und APR-Util installiert die Bibliothek in /opt/apt-util-1.6.1

# cd [APR 1.7.Verzeichnis, in dem sich 0 Archivdateien befinden]
# 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.Verzeichnis, in dem sich 1 Archivdatei befindet]
# 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	

Installieren der Apache 2.4-Quellkompilierung

Nun, hier ist die Produktion. Diese Arbeit dauerte eine Weile (wahrscheinlich 30 Minuten auf meinem Hyper-V-PC)

konfigurieren und machen

# cd [Verzeichnis, in dem sich Apache httpd befindet]
# 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

Geben Sie daher als Konfigurationsspezifikation den in der Installation angegebenen Pfad für die Pfade APR und APR-Util an. Hier wurde APR in "/opt/apr-1.7.0" und APR-Util in "/opt/apr-util-1.6.1" installiert und ich habe es verwendet.

Ich habe auch SSL aktiviert.

Ich habe oben alle erforderlichen Pakete installiert und konnte sie ohne Fehler konfigurieren (\ * ´꒳` \ *). Nun die wesentliche Kompilierung und Installation. Wenn Sie dort einen Fehler erhalten, ist Apache bereits voll von Funktionen, sodass es mühsam ist, herauszufinden, wo der Fehler aufgetreten ist (˙꒳ ˙ᐢ).

# make
# make install

Wenn Sie fehlerfrei kompilieren können, ist die Installation abgeschlossen ♪ (\ * ˘︶˘ \ *) ...: \ * ♡

Apache-Einstellungen

Nach der Installation folgt die Einstellungsdatei (˙꒳ ˙꒳). Wenn Sie Apache mit Quellkompilierung installieren, wird Apache selbst in / usr / local / apache2 installiert. Die Konfigurationsdatei wird in / usr / local / apache2 / conf / gespeichert. Konfigurieren Sie daher die Apache-Umgebung darin.

[Apache Grundeinstellungen]
# vi /usr/local/apache2/conf/httpd.conf

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


…
#ServerName www.example.com:80
ServerName localhost:80 ← Fügen Sie diese Zeile direkt unter ↑ hinzu
…
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
    …
    Options Indexes FollowSymLinks
↑ Am Anfang "#Mit "" auskommentieren
   (Lassen Sie keinen unnötigen Zugriff auf Verzeichnisse zu, die nicht als Seiten veröffentlicht wurden)
…
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
Suchen Sie nach den beiden Zeilen oben, und beide sind "#Und lade die so Bibliothek
…
#Include conf/extra/httpd-ssl.conf
↑ "#Und conf/extra/httpd-ssl.Ermöglicht das Lesen von conf
…
[Apache SSL(https)Einstellungen von]
# 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"
…

Hier haben wir entschieden, dass sich der für https erforderliche Schlüsselspeicherort in / usr / local / apache2 / conf / befindet, der mit der Konfigurationsdatei identisch ist.

Erstellung von SSL-Zertifikaten

Ursprünglich wurde das Zertifikat über die Stammzertifizierungsstelle erstellt. Hier wird jedoch der Methode Vorrang eingeräumt, mit der Apache mit https ** kompatibel gemacht werden kann, sodass die Zertifizierungsstelle nicht berührt wird. Wenn Sie darauf zugreifen, erhalten Sie eine Sicherheitswarnung [. .. .. ]]

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

Beim Erstellen eines SSL-Schlüssels gibt es auch einen Dialog zum Eingeben des Profils der Organisation. Sie können das Zertifikat jedoch problemlos erstellen, indem Sie Folgendes eingeben

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=Die Präfektur, in der Sie leben, ist ein Beispiel=Kanagawa>
Locality Name (eg, city) [Default City]:<what entry=Gemeinden, in denen Sie leben, Beispiel=Miura>
Organization Name (eg, company) [Default Company Ltd]:<what entry=Name einer beliebigen Organisation>
Organizational Unit Name (eg, section) []:<what entry=Jede Organisationseinheit>
Common Name (eg, your name or your server's hostname) []:<what entry=Beispiel für einen Domainnamen=kazumi-jam.chips.jp>
Email Address []:<what entry=Beispiel für eine [email protected]>

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<what entry=Vorerst angemessen>
An optional company name []:<what entry=Leer Geben Sie vorerst ein>

Ich möchte es auf leicht verständliche Weise farblich kennzeichnen, daher habe ich im XML-Stil (\ * ˘︶˘ \ *) "Was soll ich eingeben" hinzugefügt. Der XML-Tag-Stil "<what entry = ..." ist , Was "example = ..." einzugeben ist, ist ein Beispiel für die Eingabe. Eigentlich spielt es keine Rolle, ob es ein Leerzeichen gibt.

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

Erstellen Sie nach dem Erstellen von server.csr eine Reihe von Zertifikaten.

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

Ohne die Option "-days" ist sie nur 90 Tage gültig und für andere Zwecke als zum Experimentieren unbrauchbar. Hier wird es also für 10 Jahre als "-days 3650" festgelegt. Trotzdem wurde das Zertifikat selbst nicht von einer Institution ausgestellt, der das Oreore-Zertifikat vertraut ... (\ * ˘ᗜ˘ \ *;)

Nachdem Sie das SSL-Zertifikat erstellt haben, ändern Sie die Berechtigungen so, dass niemand anderes sie berühren kann.

# 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 insgesamt
drwxr-xr-x 2 Wurzel Wurzel 313 24. Juni 13:08 extra
-rw-r--r--1 Wurzel Wurzel 19316 24. Juni 13:07 httpd.conf
-rw-r--r--1 Wurzel Wurzel 13064 24. Juni 13:03 magic
-rw-r--r--1 Wurzel Wurzel 60847 24. Juni 13:03 mime.types
drwxr-xr-x 3 Wurzel Wurzel 37 24. Juni 13:03 original
-rw-------1 Wurzel Wurzel 1379 24. Juni 13:06 server.crt
-rw-------1 Wurzel Wurzel 1119 24. Juni 13:04 server.csr
-rw-------1 Wurzel Wurzel 1675 24. Juni 13:03 server.key

Mit dem Befehl "ls -l" gehören ** 3 Dateien, die sich auf Zertifikatschlüssel wie "server.crt" beziehen (die unteren 3 Zeilen in der obigen Liste), root und die Berechtigungen lauten "rw -------" (600) ”** Bestätigen Sie, dass dies der Fall ist. Es ist eine Sicherheitsverletzung, wenn der Inhalt des privaten Schlüssels für andere Benutzer sichtbar ist. ..

Starten Sie den Apache-Dienst

Erstellen und aktivieren Sie das Startskript für den Apache-Dienst

Sie haben alle notwendigen Umgebungseinstellungen und Schlüssel für Apache. Also möchte ich es starten können. Da das Startskript Systemd ist, erstellen Sie es in / 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

Das Systemd-Skript wird hier nicht im Detail erläutert. Da sich die Apache-Startdatei selbst in / usr / local / apache2 / bin befindet, können Sie Apache starten, indem Sie den Befehl "apachectl" ausführen, um den Apache-Dienst darin zu starten. Und kann gestoppt werden. Im Fall von Apache wird der Prozess des Webservers als Unterprozess ausgeführt (kurz gesagt, wenn er auf einem bestimmten Terminal gestartet und ausgeführt wird, befindet er sich im Status "Ausführen" und andere Vorgänge sind nicht möglich. , Sie können zur Befehlseingabe zurückkehren und andere Operationen so ausführen, wie sie sind. Verstehen Sie?), Geben Sie also Forking für Type an.

Firewall-Einstellungen

Als nächstes werden in den Firewall-Einstellungen ** Ports 80 (http) und 443 (httpd) ** akzeptiert. Als Voraussetzung ** gehören der Server und der Client zum Netzwerk von 192.168.1.0/24 **, sodass der Zugriff von anderen nicht akzeptiert wird. Lassen Sie ihn daher mit der Rich-Regel wie folgt zu.

# 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

Starten und überprüfen Sie den Betrieb

Fangen wir an. Beginnen Sie immer mit Aktivieren Aktivieren und bestätigen Sie, dass der Status "Aktiv" und "Wird ausgeführt" lautet.

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

apachect.png Wenn es wie im obigen Bild aussieht, ist der Start erfolgreich. Geben Sie auf der Windows-Clientseite zur Bestätigung https: // [IP-Adresse des Linux-Servers] / in den Browser ein.

Hier lautet der Linux-Webserver 192.168.1.18. Gehen Sie also zu https://192.168.1.18. Natürlich wird das Zertifikat nicht von einer vertrauenswürdigen Institution ausgestellt, daher wird ein Datenschutzfehler angezeigt. Wählen Sie in diesem Fall "Zugriff wie besehen" aus, um fortzufahren (obwohl es sich in Chrome und Firefox anders verhält).

itwks.png

Erfolgreich! !! (˶˙ᵕ˙˶)

nächstes Mal

Führen Sie PHP ein und veröffentlichen Sie die Grundlagen des Web-App-Servers

Recommended Posts

Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers ―― 1. Einführung in Apache
Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers --2 PHP-Einführung
Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers --3 MySQL 8.0 Einführung
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Erstellen Sie Apache HTTP Server und Wildfly unter Oracle Linux 8
Erstellen Sie einen einfachen WebDAV-Server unter Linux
Erstellen Sie einen Samba-Server unter Arch Linux
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
[Einführung in AWS] Memorandum zum Erstellen eines Webservers auf AWS
Erstellen Sie eine LAMP-Umgebung mit Vagrant (Linux + Apache + MySQL + PHP)
Aufbau eines Linux-Webservers (Ubuntu & Apache)
Führen Sie einen Linux-Server mit GCP aus
Erstellen Sie einen Pypi-Cache-Server auf QNAP
[UE4] Erstellen Sie DedicatedServer unter Windows und Linux
Erstellen Sie einen NFS-Server unter Arch Linux
Installieren und konfigurieren Sie den TigerVNC-Server unter Linux
Starten Sie einen Webserver mit Bottle and Flask (ich habe auch versucht, Apache zu verwenden)
Erstellen Sie Linux in einer Windows-Umgebung. Schritte zum Installieren und Migrieren von Laradock
Installieren Sie Python3 und Django unter Amazon Linux (EC2) und führen Sie den Webserver aus
Effektive und einfache Webserver-Sicherheitsmaßnahmen "Linux"
Starten Sie einen Webserver mit Python und Flask
Lassen Sie uns Django und Apache (httpd) auf dem Mac integrieren! !!
Führen Sie die Kolben-App auf Cloud 9 und Apache Httpd aus
Geben Sie die Lautstärke unter Linux an und spielen Sie den Sound ab
[Linux] [Kernelmodul] Erstellen und laden Sie ein einfaches ladbares Kernelmodul
CTF-Anfänger haben versucht, einen Problemserver (Web) zu erstellen [Problem]
Führen Sie einen Befehl auf dem Webserver aus und zeigen Sie das Ergebnis an
Kompilieren und installieren Sie MySQL-Python für Python2.7 unter Amazon Linux
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
[Linux] Erstellen Sie ein Selbstzertifikat mit Docker und Apache
So starten Sie einen einfachen WEB-Server, der CGI von PHP und Python ausführen kann
Erstellen Sie mit hug einen Web-API-Server mit explosiver Geschwindigkeit
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
So integrieren Sie Apache httpd 2.4 und Tomcat 9 unter Cent OS 8
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Erstellen Sie mit Falcon einen Light-Speed-Web-API-Server
Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver