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 (⑅ • ᴗ • ⑅)
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
--Web Server Programm: Apache 2.4.43 (Quellensammlung) --Client: Windows10 Pro
CentOS8.1
# vi /etc/selinux/config
/etc/selinux/config
SELINUX=disabled
CentOS8.1
# reboot
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.
CentOS8.1
# dnf -y install make cmake tar bzip2
openSUSE15.1
# zypper -n install make cmake tar bzip2
CentOS8.1
# dnf -y install gcc gcc-c++
openSUSE15.1
# zypper -n install gcc gcc-c++
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
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
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
Nun, hier ist die Produktion. Diese Arbeit dauerte eine Weile (wahrscheinlich 30 Minuten auf meinem Hyper-V-PC)
# 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 ♪ (\ * ˘︶˘ \ *) ...: \ * ♡
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.
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. ..
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.
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
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
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).
Erfolgreich! !! (˶˙ᵕ˙˶)
Führen Sie PHP ein und veröffentlichen Sie die Grundlagen des Web-App-Servers
Recommended Posts