Ustvarjanje navideznih gostiteljev, generiranje potrdil in ključev SSL ter omogočanje prehoda CGI v Gentoo Linux


Zadnja vadnica o Nameščanju LAMP v Gentoo Linux je pravkar zajela osnovni postopek namestitve brez dodatnih nastavitev, ki so na voljo Apacheju za boljši nadzor nad vašimi domenami.

Ta vadnica je tesno povezana s prejšnjo na Gentoo LAMP in obravnava dodatne nastavitve za okolje LAMP , kot je ustvarjanje navideznih gostiteljev na Apacheju, ustvarjanje Datoteke in ključi SSL , omogočite varni protokol SSL pri transakcijah HTTP in uporabite Apache CGI Gateway , da lahko zaženete Perl ali Bash skripte na vašem spletnem mestu.

  1. Namestite LAMP v Gentoo Linux

1. korak: Ustvarite navidezne gostitelje Apache

Ta tema uporablja ponarejeno domensko ime - gentoo.lan - omogočeno prek datoteke lokalnih gostiteljev, z datotekami spletnih mest, ki se strežejo iz /var/www/gentoo.lan - DocumentRoot brez veljavnega zapisa DNS , ki dokazuje, kako je mogoče v Gentoo s pomočjo spletnega strežnika Apache omogočiti več navideznih gostiteljev.

1. Za začetek odprite datoteko gostitelja Gentoo za urejanje in dodajte novo vrstico z imenom vaše domene.

$ sudo nano /etc/hosts

Na koncu datoteke naj bo videti podobno temu.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Preizkusite svojo ponarejeno domeno z ukazom ping in domena se mora odzvati s svojim naslovom IP.

$ ping -c2 gentoo.lan

3. Postopek aktiviranja navideznih gostiteljev Apache je precej preprost. Preprosto odprite privzeto datoteko navideznih gostiteljev Apache, ki se nahaja na poti /etc/apache2/vhosts.d/ , in pred zadnjim stavkom vnesite novo definicijo navideznega gostitelja, ki je priložena pod direktive. c

Vsebuje vaše nastavitve po meri, kot sta Ime strežnika in DokumentRoot . Naslednjo predlogo datoteke uporabite kot vodnik za novega navideznega gostitelja in jo vključite v datoteko 00_default_vhost.conf (za spletna mesta, ki niso SSL).

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

Kot lahko vidite z vizualizacijo te vsebine datoteke, je datoteka zelo komentirana z razlagami in ohranja tudi definicijo localhost Virtual Host - ki jo lahko uporabite kot vodilo.

4. Po končanem urejanju datoteke s svojim navideznim gostiteljem znova zaženite Apache, da uporabite nastavitve, in se prepričajte, da ste ustvarili imenik DocumentRoot , če ste spremenili to direktivo in pot privzeto ne obstaja (v ta primer je bil spremenjen v /var/www/gentoo.lan ). Ustvaril sem tudi majhno datoteko PHP za preizkušanje konfiguracij spletnega strežnika.

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

5. Če ga želite preveriti, odprite brskalnik in usmerite svoje ime navidezne domene http://gentoo.lan/info.php .

S tem postopkom lahko z navideznimi gostitelji Apache dodate poljubno število spletnih mest, ki niso SSL, vendar za pravi računalnik, obrnjen proti internetu, zagotovite, da imate registrirane domene in uporabljate veljavne zapise strežnika DNS.

Če želite odstraniti navideznega gostitelja, preprosto komentirajte ali izbrišite njegove direktive, priložene pod v datoteki 00_default_vhost.conf .

2. korak: Ustvarite potrdila SSL in ključe za navidezne gostitelje

SSL je kriptografski protokol, ki se uporablja za izmenjavo informacij prek varnega komunikacijskega kanala v internetu ali znotraj omrežij z uporabo potrdil in simetričnih/asimetričnih tipk.

6. Za poenostavitev postopka ustvarjanja potrdil in ključev uporabite naslednji skript Bash, ki deluje kot ukaz in samodejno ustvari vse, kar potrebujete, z nastavitvami imena domene SSL.

Najprej začnite z ustvarjanjem skripta Bash z naslednjim ukazom.

$ sudo nano /usr/local/bin/apache_gen_ssl

Dodajte naslednjo vsebino datoteke.

#!/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. Potem ko je datoteka ustvarjena, dodajte izvršna dovoljenja in jo zaženite za generiranje ključev SSL in potrdil.

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

Ko ga prvič zaženete, vas bo pozval, da vnesete ime svoje domene . Vnesite ime svoje domene , za katero generirate nastavitve SSL, in potrdilu napolnite zahtevane podatke, najpomembnejše Skupno ime , uporabite FQDN strežnika.

Privzeto mesto, na katerem s to metodo gostujejo vsa vaša potrdila in ključi, je /etc/apache2/ssl/.

8. Zdaj je čas, da ustvarite gentoo.lan ekvivalent SSL navideznega gostitelja. Uporabite enako metodo kot pri navideznih gostiteljih, ki niso SSL, vendar tokrat z nekoliko sprememb uredite datoteko /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf .

Najprej odprite datoteko za urejanje in naredite naslednje spremembe.

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

Pod direktivo Listen 443 dodajte naslednjo vsebino.

NameVirtualHost *:443

Uporabite naslednjo predlogo za novega navideznega gostitelja in dodajte novo potrditev SSL + pot in imena ključa.

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

Opredelitve navideznih gostiteljev se morajo končati pred temi zadnjimi tremi stavki.

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

9. Po končanem urejanju datoteke Virtual Host znova zaženite storitev Apache in usmerite brskalnik v svojo domeno s protokolom HTTPS https: //gentoo.lan .

$ sudo /etc/init.d/apache2 restart

S tem postopkom lahko s pomočjo navideznih gostiteljev Apache dodate spletna mesta SSL z lastnimi potrdili in ključi. Za odstranitev navideznih gostiteljev SSL komentirajte ali izbrišite njegove direktive, priložene pod v datoteki /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf .

3. korak: omogočite vmesnik CGI

CGI ( Common Gateway Interface ) omogoča Apacheju interakcijo z zunanjimi programi, ki so primarno sestavljeni iz skriptov Perl ali BASH, ki lahko dodajo dinamično vsebino na vaše spletno mesto.

10. Preden omogočite prehod CGI, se prepričajte, da je bil Apache sestavljen z modulom USE CGI , ki podpira datoteko Portage make.conf : cgi cgid . Če želite omogočiti podporo za GCI za Apache, odprite datoteko /etc/conf.d/apache2 in dodajte modul CGI v vrstico APACHE2_OPTS .

$ sudo nano /etc/conf.d/apache2

Zagotovite, da ima ta vrstica podobno vsebino.

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

11. Ko so moduli CGI omogočeni, odprite gostitelja definicije spletnega mesta, za katerega želite omogočiti vmesnik CGI, in dodajte naslednje vsebine v direktive Virtual Host.

<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. Če imate v poti DocumentRoot ( /var/www/gentoo.lan/ ) imenik, ki vsebuje skripte CGI, lahko prav temu imeniku omogočite, da streže dinamične skripte Perl ali Bash.

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. Za SSI (Server Side Includes) dodajte + Vključuje izjavo Možnosti in dodajte pripono datoteke .shtml .

<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. Če želite preizkusiti nekaj preprostih skriptov .cgi in .pl na prehodu Apache CGI, ustvarite naslednje skripte v sebi Virtual Host DocumentRoot (/var/www/gentoo. lan/).

$ sudo nano /var/www/gentoo.lan/env.pl

Dodajte naslednjo vsebino Perla.

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

Dodajte naslednjo vsebino Basha.

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

15. Ko so datoteke ustvarjene, jih naredite izvedljive, znova zaženite demon Apache in usmerite brskalnik na naslednje URL-je.

$ 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

Zdaj lahko Gentoo spremenite v močno platformo za spletno gostovanje z natančnimi nastavitvami za delovanje vašega sistema in največjim nadzorom nad celotnim okoljem.