Vytváření virtuálních hostitelů, generování SSL certifikátů a klíčů a povolení brány CGI v Gentoo Linuxu
Poslední tutoriál o Instalaci LAMP v Gentoo Linux pokryl pouze základní instalační proces bez dalších dostupných nastavení pro Apache pro lepší kontrolu vašich domén.
Tento tutoriál úzce souvisí s předchozím na Gentoo LAMP a pojednává o dalších nastaveních pro prostředí LAMP, jako je vytváření virtuálních hostitelů na Apache, generování SSL Certifikační soubory a klíče, povolte bezpečný protokol SSL pro transakce HTTP a použijte Apache CGI Gateway, abyste mohli spouštět Perl nebo Bash skripty přes váš web.
Požadavky
- Nainstalujte LAMP v Gentoo Linuxu
Krok 1: Vytvořte virtuální hostitele Apache
Toto téma používá falešný název domény – gentoo.lan – povolený prostřednictvím souboru místního hostitele, se soubory webových stránek obsluhovaných z /var/www/gentoo.lan – DocumentRoot direktiva, bez platného DNS záznamu, k demonstraci toho, jak lze na Gentoo povolit více virtuálních hostitelů pomocí webového serveru Apache.
1. Pro začátek otevřete soubor hostitelů Gentoo pro úpravy a přidejte nový řádek s názvem vaší domény.
sudo nano /etc/hosts
Na konci souboru, aby to vypadalo podobně jako toto.
127.0.0.1 localhost gentoo
192.168.1.13 gentoo.lan
2. Otestujte svou falešnou doménu pomocí příkazu ping a doména by měla odpovědět svou IP adresou.
ping -c2 gentoo.lan
3. Proces aktivace virtuálních hostitelů Apache je poměrně jednoduchý. Stačí otevřít výchozí soubor virtuálních hostitelů Apache umístěný na cestě /etc/apache2/vhosts.d/ a před posledním příkazem zadejte svou novou definici virtuálního hostitele přiloženou pod … direktivy. C
Obsahuje vaše vlastní nastavení, jako je ServerName a DocumentRoot cesta. Použijte následující šablonu souboru jako průvodce pro nového virtuálního hostitele a zahrňte ji do souboru 00_default_vhost.conf (pro weby bez 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>
Jak můžete vidět při vizualizaci obsahu tohoto souboru, soubor je vysoce komentován s vysvětlením a také si zachovává definici virtuálního hostitele localhost – kterou můžete použít jako vodítko.
4. Po dokončení úprav souboru s vaším vlastním virtuálním hostitelem restartujte Apache, abyste použili nastavení, a ujistěte se, že jste vytvořili adresář DocumentRoot pro případ, že jste změnili tuto direktivu a cesta se nezměnila 't ve výchozím nastavení neexistuje (v tomto případě bylo změněno na /var/www/gentoo.lan). Vytvořil jsem také malý soubor PHP pro testování konfigurací webového serveru.
sudo mkdir /var/www/gentoo.lan
su "echo '<?php phpinfo(); ?>' > /var/www/gentoo.lan/info.php"
sudo /etc/init.d/apache2 restart
5. Chcete-li to ověřit, otevřete prohlížeč a zadejte název své virtuální domény http://gentoo.lan/info.php.
Pomocí tohoto postupu můžete přidat libovolný počet webů bez SSL pomocí virtuálních hostitelů Apache, ale u skutečného počítače s připojením k internetu se ujistěte, že máte zaregistrované své domény a používáte platné záznamy serveru DNS.
Chcete-li odebrat virtuálního hostitele, stačí jej okomentovat nebo smazat jeho direktivy uzavřené pod … v souboru 00_default_vhost.conf.
Krok 2: Vygenerujte certifikáty SSL a klíče pro virtuální hostitele
SSL je kryptografický protokol používaný k výměně informací přes zabezpečený komunikační kanál na internetu nebo uvnitř sítí pomocí certifikátů a symetrických/asymetrických klíčů.
6. Pro zjednodušení procesu generování certifikátů a klíčů použijte následující skript Bash, který funguje jako příkaz a automaticky vytvoří vše, co potřebujete s nastavením názvu domény SSL.
Nejprve začněte vytvořením skriptu Bash pomocí následujícího příkazu.
sudo nano /usr/local/bin/apache_gen_ssl
Přidejte následující obsah souboru.
#!/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. Po vytvoření souboru připojte k němu oprávnění ke spuštění a spusťte jej, aby se vygenerovaly klíče a certifikáty SSL.
sudo chmod +x /usr/local/bin/apache_gen_ssl
sudo apache_gen_ssl
Při prvním spuštění budete požádáni o zadání názvu vaší domény. Zadejte název své domény, pro kterou generujete nastavení SSL, a vyplňte certifikát požadovanými informacemi, z nichž nejdůležitější je Běžný název, použijte FQDN vašeho serveru.
Výchozí umístění, kde jsou pomocí této metody hostovány všechny vaše certifikáty a klíče, je /etc/apache2/ssl/.
8. Nyní je čas vytvořit ekvivalent SSL virtuálního hostitele gentoo.lan. Použijte stejnou metodu jako pro ne-SSL virtuální hostitele, ale tentokrát upravte soubor /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf s malými změnami.
Nejprve otevřete soubor pro úpravy a proveďte následující změny.
sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf
Do direktivy Listen 443 přidejte následující obsah.
NameVirtualHost *:443
Použijte následující šablonu pro nového virtuálního hostitele a připojte nový certifikát SSL + cestu a názvy klíče.
## 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 ###
Definice virtuálních hostitelů musí končit před těmito posledními třemi příkazy.
</IfModule>
</IfDefine>
</IfDefine>
9. Po dokončení úprav souboru virtuálního hostitele restartujte službu Apache a přesměrujte svůj prohlížeč do vaší domény pomocí protokolu HTTPS https://gentoo.lan.
sudo /etc/init.d/apache2 restart
Pomocí tohoto postupu můžete přidat weby SSL s jejich vlastními certifikáty a klíči pomocí virtuálních hostitelů Apache. Chcete-li odebrat virtuální hostitele SSL, zakomentujte nebo odstraňte jeho direktivy uzavřené pod … v souboru /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.
Krok 3: Povolte rozhraní CGI
CGI (Common Gateway Interface), které umožňuje Apache komunikovat s externími programy, primárně sestávajícími ze skriptů Perl nebo BASH, které mohou přidat dynamický obsah na váš web.
10. Před povolením brány CGI se ujistěte, že Apache byl zkompilován s podporou příznaků modulů USE CGI v souboru Portage make.conf: cgi cgid . Chcete-li povolit podporu GCI pro Apache, otevřete soubor /etc/conf.d/apache2 a připojte modul CGI na řádek APACHE2_OPTS.
sudo nano /etc/conf.d/apache2
Ujistěte se, že tento řádek má podobný obsah.
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"
11. Po aktivaci modulů CGI otevřete hostitele definic webových stránek, u kterého chcete povolit rozhraní CGI, a přidejte do direktiv virtuálního hostitele následující obsah.
<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. Pokud máte v cestě DocumentRoot (/var/www/gentoo.lan/) adresář, který obsahuje skripty CGI, můžete povolit, aby pouze tento adresář poskytoval dynamický Perl nebo Bash skripty.
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. Pro SSI (Server Side Within) připojte k Možnosti prohlášení +Includes a přidejte příponu souboru .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. Chcete-li otestovat některé jednoduché skripty .cgi a .pl na bráně Apache CGI, vytvořte ve svém virtuálním hostiteli DocumentRoot následující skripty ( /var/www/gentoo.lan/).
Perl skript
sudo nano /var/www/gentoo.lan/env.pl
Přidejte následující obsah Perlu.
#!/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.cgi
Přidejte následující obsah Bash.
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
./env.pl
echo "---------------------------------------------------------------------------------"
15. Po vytvoření souborů udělejte z nich spustitelné, restartujte démona Apache a nasměrujte prohlížeč na následující adresy URL.
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
Nyní můžete Gentoo přeměnit na výkonnou webhostingovou platformu s jemným nastavením pro výkon vašeho systému a maximální kontrolu nad celým vaším prostředím.