Zoeken op website

Virtuele hosts maken, SSL-certificaten en sleutels genereren en CGI Gateway inschakelen in Gentoo Linux


De laatste tutorial over LAMP installeren in Gentoo Linux behandelde alleen het basisinstallatieproces zonder dat er aanvullende instellingen beschikbaar waren voor Apache om uw domeinen beter te beheren.

Deze tutorial is strikt verbonden met de vorige op Gentoo LAMP en bespreekt extra instellingen voor de LAMP-omgeving, zoals het maken van Virtuele Hosts op Apache, het genereren van SSL certificaatbestanden en sleutels, schakel het beveiligde SSL protocol in voor HTTP-transacties en gebruik Apache CGI Gateway zodat u Perl of Bash-scripts over uw website.

Vereisten

  1. Installeer LAMP in Gentoo Linux

Stap 1: Creëer virtuele Apache-hosts

Dit onderwerp gebruikt een valse domeinnaam – gentoo.lan – ingeschakeld via een lokaal hosts-bestand, waarbij websitebestanden worden aangeboden vanuit /var/www/gentoo.lanDocumentRoot richtlijn, zonder een geldig DNS record, om aan te tonen hoe meerdere virtuele hosts kunnen worden ingeschakeld op Gentoo met behulp van Apache webserver.

1. Om te beginnen opent u het Gentoo hosts-bestand om het te bewerken en voegt u een nieuwe regel toe met uw domeinnaam.

sudo nano /etc/hosts

Laat het aan het einde van het bestand er ongeveer zo uitzien.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Test uw nepdomein met de opdracht ping en het domein zou moeten reageren met zijn IP-adres.

ping -c2 gentoo.lan

3. Het proces voor het activeren van Apache Virtual Hosts is vrij eenvoudig. Open gewoon het standaard virtuele hosts-bestand van Apache dat zich op het pad /etc/apache2/vhosts.d/ bevindt en voer vóór de laatste -instructie uw nieuwe virtuele host-definitie in, ingesloten onder richtlijnen. C

Bevat uw aangepaste instellingen zoals ServerName en DocumentRoot pad. Gebruik de volgende bestandssjabloon als richtlijn voor een nieuwe virtuele host en neem deze op in het bestand 00_default_vhost.conf (voor niet-SSL-websites).

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>

Zoals u kunt zien door de inhoud van dit bestand te visualiseren, is het bestand voorzien van veel commentaar met uitleg en behoudt het ook de localhost Virtual Host-definitie – die u als richtlijn kunt gebruiken.

4. Nadat u klaar bent met het bewerken van het bestand met uw aangepaste virtuele host, start u Apache opnieuw op om de instellingen toe te passen en zorgt u ervoor dat u de map DocumentRoot aanmaakt voor het geval u deze richtlijn hebt gewijzigd en het pad niet 'bestaat standaard niet (in dit geval werd dit gewijzigd in /var/www/gentoo.lan). Ik heb ook een klein PHP-bestand gemaakt om webserverconfiguraties te testen.

sudo mkdir /var/www/gentoo.lan
su "echo '<?php phpinfo(); ?>' > /var/www/gentoo.lan/info.php"
sudo /etc/init.d/apache2 restart

5. Om dit te verifiëren, opent u een browser en wijst u deze naar uw virtuele domeinnaam http://gentoo.lan/info.php.

Met behulp van deze procedure kunt u zoveel niet-SSL-websites toevoegen als u wilt met behulp van Apache Virtual Hosts, maar voor een echte internetgerichte machine moet u ervoor zorgen dat uw domeinen zijn geregistreerd en dat u geldige DNS-serverrecords gebruikt.

Om een virtuele host te verwijderen hoeft u alleen maar commentaar te geven of de richtlijnen te verwijderen die zijn ingesloten onder in het bestand 00_default_vhost.conf.

Stap 2: Genereer SSL-certificaten en sleutels voor virtuele hosts

SSL is een cryptografisch protocol dat wordt gebruikt om informatie uit te wisselen via een beveiligd communicatiekanaal op internet of binnen netwerken met behulp van certificaten en symmetrische/asymmetrische sleutels.

6. Om het proces voor het genereren van certificaten en sleutels te vereenvoudigen, gebruikt u het volgende Bash-script dat als opdracht fungeert en automatisch alles aanmaakt wat u nodig heeft met uw SSL-domeinnaaminstellingen.

Begin eerst met het maken van een Bash-script met behulp van de volgende opdracht.

sudo nano /usr/local/bin/apache_gen_ssl

Voeg de volgende bestandsinhoud toe.

#!/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 0

7. Nadat het bestand is gemaakt, voegt u er uitvoeringsrechten aan toe en voert u het uit om SSL-sleutels en certificaten te genereren.

sudo chmod +x /usr/local/bin/apache_gen_ssl
sudo apache_gen_ssl

Wanneer u het de eerste keer uitvoert, wordt u gevraagd uw domein naam in te voeren. Voer uw domein naam in waarvoor u SSL-instellingen genereert en vul het certificaat in met de vereiste informatie, de belangrijkste, Common Name, gebruik de FQDN van uw server.

De standaardlocatie waar al uw certificaten en sleutels worden gehost met deze methode is /etc/apache2/ssl/.

8. Nu is het tijd om gentoo.lan Virtual Host SSL-equivalent te creëren. Gebruik dezelfde methode als voor niet-SSL virtuele hosts, maar bewerk deze keer het bestand /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf met kleine wijzigingen.

Open eerst het bestand om het te bewerken en breng de volgende wijzigingen aan.

sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf

Voeg onder de Listen 443-richtlijn de volgende inhoud toe.

NameVirtualHost *:443

Gebruik de volgende sjabloon voor een nieuwe virtuele host en voeg een nieuw SSL-certificaat + sleutelpad en -namen toe.

## 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 ###

Definities van Virtual Hosts moeten vóór deze laatste drie uitspraken eindigen.

</IfModule>
</IfDefine>
</IfDefine>

9. Nadat u klaar bent met het bewerken van het Virtual Host-bestand, start u de Apache-service opnieuw en stuurt u uw browser naar uw domein met behulp van het HTTPS-protocol https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Met behulp van deze procedure kunt u SSL-websites met hun eigen certificaten en sleutels toevoegen met behulp van Apache Virtual Hosts. Om SSL Virtual Hosts te verwijderen, moet u commentaar geven of de richtlijnen verwijderen die zijn ingesloten onder in het bestand /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Stap 3: Schakel de CGI-interface in

Dankzij de CGI (Common Gateway Interface) kan Apache communiceren met externe programma's, voornamelijk bestaande uit Perl- of BASH-scripts, die dynamische inhoud aan uw website kunnen toevoegen.

10. Voordat u de CGI-gateway inschakelt, moet u ervoor zorgen dat Apache is gecompileerd met USE CGI-modules markeren ondersteuning in het Portage make.conf-bestand: cgi cgid . Om GCI-ondersteuning voor Apache in te schakelen, opent u het bestand /etc/conf.d/apache2 en voegt u de CGI-module toe aan de APACHE2_OPTS regel.

sudo nano /etc/conf.d/apache2

Zorg ervoor dat deze regel vergelijkbare inhoud heeft.

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"

11. Nadat de CGI-modules zijn ingeschakeld, opent u de host voor uw websitedefinitie waarvan u de CGI-interface wilt inschakelen en voegt u de volgende inhoud toe binnen de Virtual Host-richtlijnen.

<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. Als u een map in uw DocumentRoot-pad (/var/www/gentoo.lan/) heeft die CGI-scripts bevat, kunt u alleen die map inschakelen voor dynamische Perl of Bash-scripts.

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. Voor SSI (Server Side Included) voegt u de +Includes-instructie toe aan Opties en voegt u de bestandsextensie .shtml toe.

<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. Om enkele eenvoudige .cgi- en .pl-scripts op de Apache CGI-gateway te testen, maakt u de volgende scripts in uw Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

Perl-script
sudo nano /var/www/gentoo.lan/env.pl

Voeg de volgende Perl-inhoud toe.

#!/usr/bin/perl
print "Content-type: text/html\n\n"; foreach my $keys (sort keys %ENV) { print "$keys =
$ENV{$keys}<br/>\n";
}
Bash-script
sudo nano /var/www/gentoo.lan/run.cgi

Voeg de volgende Bash-inhoud toe.

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
              ./env.pl 
echo "---------------------------------------------------------------------------------"

15. Nadat de bestanden zijn gemaakt, maakt u ze uitvoerbaar, start u de Apache-daemon opnieuw en verwijst u uw browser naar de volgende URL's.

sudo chmod +x /var/www/gentoo.lan/run.cgi
sudo chmod +x /var/www/gentoo.lan/env.pl
sudo /etc/init.d/apache2 restart
https://gentoo.lan/run.cgi 

OR

https://gentoo.lan/env.pl

Nu kunt u Gentoo transformeren in een krachtig webhostingplatform met fijnafstemming van de instellingen voor uw systeemprestaties en maximale controle over uw hele omgeving.