Erstellen von virtuellen Hosts, Generieren von SSL-Zertifikaten und -Schlüsseln und Aktivieren des CGI-Gateways in Gentoo Linux
Das letzte Tutorial zur Installation von LAMP in Gentoo Linux behandelte nur den grundlegenden Installationsprozess ohne zusätzliche Einstellungen, die Apache zur besseren Kontrolle Ihrer Domains zur Verfügung stellte.
Dieses Tutorial ist eng mit dem vorherigen auf Gentoo LAMP verbunden und diskutiert zusätzliche Einstellungen für die LAMP-Umgebung, wie z.B. das Erstellen von virtuellen Hosts auf Apache, das Generieren von SSL-Zertifikatsdateien und Schlüsseln, das Aktivieren des sicheren SSL-Protokolls bei HTTP-Transaktionen und die Verwendung des Apache CGI Gateways, damit Sie Perl- oder Bash-Skripte über Ihre Website ausführen können.
Anforderungen
- Installieren Sie LAMP in Gentoo Linux
Schritt 1: Erstellen von virtuellen Apache-Hosts
Dieses Thema verwendet einen gefälschten Domainnamen – gentoo.lan – der über die lokale Hosts-Datei aktiviert wurde, mit Website-Dateien, die von /var/www/gentoo.lan – DocumentRoot-Direktive bereitgestellt werden, ohne gültigen DNS-Eintrag, um zu demonstrieren, wie mehrere virtuelle Hosts auf Gentoo mit dem Apache-Webserver aktiviert werden können.
1. Um zu beginnen, öffnen Sie die Gentoo hosts-Datei zur Bearbeitung und fügen Sie eine neue Zeile mit Ihrem Domainnamen hinzu.
$ sudo nano /etc/hosts
Lassen Sie es am Ende der Datei ähnlich aussehen.
127.0.0.1 localhost gentoo
192.168.1.13 gentoo.lan2. Testen Sie Ihre gefälschte Domain mit dem Ping-Befehl und die Domain sollte mit ihrer IP-Adresse antworten.
$ ping -c2 gentoo.lan3. Der Prozess der Aktivierung von Apache Virtual Hosts ist recht einfach. Öffnen Sie einfach die Apache-Standarddatei für virtuelle Hosts, die sich im Pfad /etc/apache2/vhosts.d/ befindet, und geben Sie vor der letzten Anweisung Ihre neue Definition des virtuellen Hosts ein, die unter ... Direktiven. c
Enthält Ihre benutzerdefinierten Einstellungen wie ServerName und DocumentRoot-Pfad. Verwenden Sie die folgende Dateivorlage als Leitfaden für einen neuen virtuellen Host und fügen Sie sie in 00_default_vhost.conf-Datei (für Nicht-SSL-Websites) ein.
$ sudo nano /etc/apache2/vhosts.d/00_default_vhost.conf## Another Virtual hosts statemes ending in </VirtualHost> ###
<VirtualHost *:80>
ServerName gentoo.lan
DocumentRoot "/var/www/gentoo.lan"
<Directory "/var/www/gentoo.lan"
Options Indexes FollowSymLinks ExecCGI MultiViews
# AllowOverride controls what directives may be placed in .htaccess files.
AllowOverride All
# Controls who can get stuff from this server file
Order allow,deny
Allow from all
</Directory>
<IfModule mpm_peruser_module>
ServerEnvironment apache apache
</IfModule>
</VirtualHost>
## Another Virtual hosts statemes ###
## LAST STATEMENT which closes virtual hosts file ##
</IfDefine>Wie Sie an der Visualisierung dieses Dateiinhalts sehen können, ist die Datei stark kommentiert mit Erklärungen und behält auch die Definition des localhost Virtual Host bei – die Sie als Leitfaden verwenden können.
4. Nachdem Sie die Bearbeitung der Datei mit Ihrem benutzerdefinierten virtuellen Host abgeschlossen haben, starten Sie Apache neu, um die Einstellungen zu übernehmen, und stellen Sie sicher, dass Sie das DocumentRoot-Verzeichnis erstellen, falls Sie diese Direktive geändert haben und der Pfad standardmäßig nicht existiert (in diesem Fall wurde er in /var/www/gentoo.lan geändert). Ich habe auch eine kleine PHP-Datei erstellt, um Webserver-Konfigurationen zu testen.
$ sudo mkdir /var/www/gentoo.lan
su "echo '<?php phpinfo(); ?>' > /var/www/gentoo.lan/info.php"
sudo /etc/init.d/apache2 restart5. Um dies zu überprüfen, öffnen Sie einen Browser und zeigen Sie auf Ihren virtuellen Domainnamen http://gentoo.lan/info.php.
Mit diesem Verfahren können Sie so viele Nicht-SSL-Websites hinzufügen, wie Sie möchten, indem Sie Apache Virtual Hosts verwenden, aber für einen echten Computer mit Internetzugriff stellen Sie sicher, dass Sie Ihre Domänen registriert haben und gültige DNS-Servereinträge verwenden.
Um einen virtuellen Host zu entfernen, kommentieren Sie einfach seine Anweisungen aus oder löschen Sie sie, die unter ... in der Datei 00_default_vhost.conf enthalten sind.
Schritt 2: Generieren von SSL-Zertifikaten und -Schlüsseln für virtuelle Hosts
SSL ist ein kryptografisches Protokoll, das zum Austausch von Informationen über einen sicheren Kommunikationskanal im Internet oder innerhalb von Netzwerken unter Verwendung von Zertifikaten und symmetrischen/asymmetrischen Schlüsseln verwendet wird.
6. Um den Prozess der Generierung von Zertifikaten und Schlüsseln zu vereinfachen, verwenden Sie das folgende Bash-Skript, das als Befehl fungiert und automatisch alles erstellt, was Sie mit Ihren SSL-Domainnameneinstellungen benötigen.
Beginnen Sie zunächst mit dem Erstellen eines Bash-Skripts mit dem folgenden Befehl.
$ sudo nano /usr/local/bin/apache_gen_sslFügen Sie den folgenden Dateiinhalt hinzu.
#!/bin/bash
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
echo -e "Enter a name for this certificate:\nEx: mydomain.lan"
read cert
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt
echo -e " The certificate $cert has been generated!\nPlease link it to Apache SSL website!"
ls -all /etc/apache2/ssl/
exit 07. Nachdem die Datei erstellt wurde, fügen Sie Ausführungsberechtigungen hinzu und führen Sie sie aus, um SSL-Schlüssel und Zertifikate zu generieren.
$ sudo chmod +x /usr/local/bin/apache_gen_ssl
sudo apache_gen_ssl
Wenn Sie es zum ersten Mal ausführen, werden Sie aufgefordert, Ihren Domainnamen einzugeben. Geben Sie Ihren Domainnamen ein, für den Sie SSL-Einstellungen generieren, und füllen Sie das Zertifikat mit den erforderlichen Informationen aus, der wichtigste, Common Name, verwenden Sie Ihren Server-FQDN.
Der Standardspeicherort, an dem alle Ihre Zertifikate und Schlüssel mit dieser Methode gehostet werden, ist /etc/apache2/ssl/.
8. Jetzt ist es an der Zeit, gentoo.lan Virtual Host SSL-Äquivalent zu erstellen. Verwenden Sie die gleiche Methode wie für virtuelle Hosts ohne SSL, bearbeiten Sie jedoch diesmal die Datei /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf mit geringfügigen Änderungen.
Öffnen Sie zunächst die Datei zur Bearbeitung und nehmen Sie die folgenden Änderungen vor.
$ sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.confFügen Sie unter der Anweisung Listen 443 den folgenden Inhalt hinzu.
NameVirtualHost *:443Verwenden Sie die folgende Vorlage für einen neuen virtuellen Host, und fügen Sie das neue SSL-Zertifikat + Schlüsselpfad und die Namen an.
## Another Virtual hosts statemes ending in </VirtualHost> ###
<VirtualHost *:443>
ServerName gentoo.lan
DocumentRoot "/var/www/gentoo.lan"
ErrorLog /var/log/apache2/gentoo.lan-ssl_error_log
<IfModule log_config_module>
TransferLog /var/log/apache2/gentoo.lan-ssl_access_log
</IfModule>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
## Edit with new generated SSL certificate and key and change path to /etc/apache2/ssl/
SSLCertificateFile /etc/apache2/ssl/gentoo.lan.crt
SSLCertificateKeyFile /etc/apache2/ssl/gentoo.lan.key
<Directory "/var/www/gentoo.lan">
Options Indexes FollowSymLinks ExecCGI MultiViews Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/gentoo.lan ">
SSLOptions +StdEnvVars
</Directory>
<IfModule setenvif_module>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</IfModule>
<IfModule log_config_module>
CustomLog /var/log/apache2/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</IfModule>
</VirtualHost>
## Another Virtual hosts statements ###Definitionen virtueller Hosts müssen vor diesen letzten drei Anweisungen enden.
</IfModule>
</IfDefine>
</IfDefine>9. Nachdem Sie die Bearbeitung der Virtual Host-Datei abgeschlossen haben, starten Sie den Apache-Dienst neu und leiten Sie Ihren Browser über das HTTPS-Protokoll https://gentoo.lan zu Ihrer Domain weiter.
$ sudo /etc/init.d/apache2 restartMit diesem Verfahren können Sie SSL-Websites mit ihren eigenen Zertifikaten und Schlüsseln mithilfe von Apache Virtual Hosts hinzufügen. Um SSL Virtual Hosts zu entfernen, kommentieren Sie die Anweisungen aus, die unter ... in der Datei /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf enthalten sind, oder löschen Sie sie.
Schritt 3: CGI-Schnittstelle aktivieren
Das CGI (Common Gateway Interface) ermöglicht es Apache, mit externen Programmen zu interagieren, die in erster Linie aus Perl- oder BASH-Skripten bestehen, die Ihrer Website einen dynamischen Inhalt hinzufügen können.
10. Bevor Sie das CGI-Gateway aktivieren, stellen Sie sicher, dass Apache mit der Unterstützung von USE CGI-Modulen in der Portage make.conf-Datei kompiliert wurde: cgi cgid. Um die GCI-Unterstützung für Apache zu aktivieren, öffnen Sie die Datei /etc/conf.d/apache2 und hängen Sie das CGI-Modul an APACHE2_OPTS Zeile an.
$ sudo nano /etc/conf.d/apache2Stellen Sie sicher, dass diese Zeile einen ähnlichen Inhalt hat.
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"11. Nachdem CGI-Module aktiviert wurden, öffnen Sie Ihren Website-Definitionshost, für den Sie die CGI-Schnittstelle aktivieren möchten, und fügen Sie den folgenden Inhalt in die Virtual Host-Direktiven ein.
<Directory "/var/www/gentoo.lan">
Options Indexes +ExecCGI MultiViews
AddHandler cgi-script .cgi .pl
DirectoryIndex index.cgi index.php index.html index.pl
AllowOverride All
Order allow,deny
Allow from all
</Directory>12. Wenn Sie ein Verzeichnis in Ihrem DocumentRoot-Pfad (/var/www/gentoo.lan/) haben, das CGI-Skripte enthält, können Sie genau dieses Verzeichnis aktivieren, um dynamische Perl- oder Bash-Skripte bereitzustellen.
ScriptAlias /cgi-bin/ /var/www/gentoo.lan/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
AddHandler cgi-script .cgi .pl
DirectoryIndex index.cgi index.php index.html index.pl
</Location>13. Für SSI (Server Side Includes) fügen Sie die +Includes-Anweisung in den Optionen hinzu und fügen Sie die Dateierweiterung .shtml hinzu.
<Directory "/var/www/gentoo.lan">
Options Indexes +ExecCGI +Includes
AddHandler cgi-script .cgi .pl
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
DirectoryIndex index.shtml index.cgi index.pl index.php index.html
AllowOverride All
Order allow,deny
Allow from all
</Directory>14. Um einige einfache .cgi und .pl Skripte auf dem Apache CGI Gateway zu testen, erstellen Sie die folgenden Skripte in Ihrem Virtual Host DocumentRoot (/var/www/gentoo.lan/).
Perl-Skript
$ sudo nano /var/www/gentoo.lan/env.plFügen Sie den folgenden Perl-Inhalt hinzu.
#!/usr/bin/perl
print "Content-type: text/html\n\n"; foreach my $keys (sort keys %ENV) { print "$keys =
$ENV{$keys}<br/>\n";
}Bash-Skript
$ sudo nano /var/www/gentoo.lan/run.cgiFügen Sie den folgenden Bash-Inhalt hinzu.
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
./env.pl
echo "---------------------------------------------------------------------------------"15. Nachdem die Dateien erstellt wurden, machen Sie sie ausführbar, starten Sie den Apache-Daemon neu und verweisen Sie Ihren Browser auf die folgenden URLs.
$ sudo chmod +x /var/www/gentoo.lan/run.cgi
sudo chmod +x /var/www/gentoo.lan/env.pl
sudo /etc/init.d/apache2 restarthttps://gentoo.lan/run.cgi
OR
https://gentoo.lan/env.plJetzt können Sie Gentoo in eine leistungsstarke Webhosting-Plattform verwandeln, mit Feinabstimmungseinstellungen für Ihre Systemleistung und maximaler Kontrolle über Ihre gesamte Umgebung.













