Paghimo og Virtual Hosts, Paghimo og SSL Certificates & Keys ug Enable CGI Gateway sa Gentoo Linux


Ang katapusan nga panudlo sa Pag-instalar sa LAMP sa Gentoo Linux nagsakup lang sa batakang proseso sa pag-install nga wala’y dugang nga mga setting nga magamit alang sa Apache aron makontrol ang imong mga domain.

Kini nga panudlo hugot nga konektado sa nauna sa Gentoo LAMP ug naghisgot sa dugang nga mga setting para sa LAMP nga palibot sama sa paghimo og Virtual Hosts sa Apache, pagmugna og SSL Certificate files ug Keys, i-enable ang secure SSL protocol sa HTTP transactions ug gamita ang Apache CGI Gateway para makadagan ka Perl o Bash nga mga script sa imong website.

  1. I-install ang LAMP sa Gentoo Linux

Lakang 1: Paghimo Apache Virtual Hosts

Kini nga hilisgutan naggamit ug peke nga domain name – gentoo.lan – gipagana pinaagi sa local hosts file, nga adunay website files nga gisilbi gikan sa /var/www/gentoo.lanDocumentRoot nga direktiba, nga walay balido nga DNS nga rekord, aron ipakita kung giunsa ang daghang mga Virtual Host mahimo nga magamit sa Gentoo gamit ang Apache web Server.

1. Sa pagsugod, ablihi ang Gentoo hosts file para sa pag-edit ug pagdugang og bag-ong linya sa imong domain name.

$ sudo nano /etc/hosts

Sa katapusan sa file himoa nga kini susama niini.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Sulayi ang imong peke nga domain gamit ang ping nga sugo ug ang domain kinahanglang motubag sa iyang IP address.

$ ping -c2 gentoo.lan

3. Ang proseso sa pagpaaktibo sa Apache Virtual Hosts yano ra. Ablihi lang ang Apache default virtual hosts file nga nahimutang sa /etc/apache2/vhosts.d/ nga dalan ug sa dili pa ang katapusang nga pahayag, isulod ang imong bag-ong Virtual Host nga kahulugan nga gilakip ubos sa mga direktiba. c

Naglangkob sa imong naandan nga mga setting sama sa ServerName ug DocumentRoot nga agianan. Gamita ang mosunod nga template sa file isip usa ka giya alang sa bag-ong Virtual Host ug iapil kini sa 00_default_vhost.conf file (para sa dili SSL nga mga website).

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

Sama sa imong makita pinaagi sa paghanduraw niini nga sulod sa payl, ang payl gikomentohan pag-ayo uban sa mga pagpatin-aw ug gitipigan usab ang localhost kahulugan sa Virtual Host – nga mahimo nimong gamiton isip giya.

4. Human mahuman ang pag-edit sa file gamit ang imong naandan nga Virtual Host, i-restart ang Apache aron ma-apply ang mga setting ug siguroha nga imong gihimo ang DocumentRoot nga direktoryo kung giusab nimo kini nga direktiba ug ang agianan wala maglungtad sa default ( sa kini nga kaso giusab ngadto sa /var/www/gentoo.lan). Naghimo usab ako usa ka gamay nga file sa PHP aron masulayan ang mga pag-configure sa webserver.

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

5. Aron mapamatud-an kini, ablihi ang browser ug itudlo ang imong virtual domain name http://gentoo.lan/info.php.

Gamit kini nga pamaagi mahimo nimong idugang ang daghang mga non-SSL nga mga website nga gusto nimo gamit ang Apache Virtual Hosts, apan alang sa usa ka tinuod nga makina nga nag-atubang sa Internet siguroha nga narehistro nimo ang imong mga domain ug naggamit ka balido nga mga rekord sa DNS server.

Para tangtangon ang usa ka Virtual Host comment lang o papason ang mga direktiba niini nga gilakip ubos sa sa 00_default_vhost.conf file.

Lakang 2: Paghimo og SSL Certificates ug Keys alang sa Virtual Hosts

Ang SSL usa ka cryptographic protocol nga gigamit sa pagbayloay og impormasyon sa usa ka luwas nga channel sa komunikasyon sa Internet o sulod sa mga network gamit ang mga Sertipiko ug simetriko/asymmetric Keys.

6. Aron pasimplehon ang mga Sertipiko ug proseso sa paghimo sa mga yawe gamita ang mosunod nga Bash script nga naglihok isip usa ka sugo ug awtomatik nga nagmugna sa tanan nga imong gikinahanglan sa imong SSL domain name settings.

Una magsugod pinaagi sa paghimo og Bash script gamit ang mosunod nga sugo.

$ sudo nano /usr/local/bin/apache_gen_ssl

Idugang ang mosunod nga sulod sa file.

#!/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. Human mabuhat ang file, idugang ang pagpatuman sa mga permiso niini ug padagana kini aron makamugna og SSL Keys ug Certificates.

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

Kung gipadagan nimo kini sa unang higayon, hangyoon ka sa pagsulod sa imong domain nga ngalan. Isulod ang imong domain nga ngalan diin imong gimugna ang SSL settings ug pun-i ang Certificate sa gikinahanglang impormasyon, ang pinaka importante, Common Name, gamita ang imong server nga FQDN.

Default nga lokasyon diin ang tanan nimong Sertipiko ug Yawe gi-host gamit kini nga pamaagi mao ang /etc/apache2/ssl/.

8. Karon na ang panahon sa paghimo og gentoo.lan Virtual Host SSL katumbas. Gamita ang parehas nga pamaagi sama sa dili SSL Virtual Hosts apan niining higayona i-edit ang /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf file nga adunay gamay nga pagbag-o.

Una ablihi ang file para sa pag-edit ug himoa ang mosunod nga mga kausaban.

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

Ubos sa Paminaw 443 nga direktiba idugang ang mosunod nga sulod.

NameVirtualHost *:443

Gamita ang mosunod nga template para sa bag-ong Virtual Host ug idugang ang bag-ong SSL Certificate + Key nga dalan ug mga ngalan.

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

Ang mga kahulugan sa Virtual Hosts kinahanglang matapos sa dili pa kining tulo ka pahayag.

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

9. Human mahuman ang pag-edit sa Virtual Host file, i-restart ang serbisyo sa Apache ug idirekta ang imong browser sa imong domain gamit ang HTTPS protocol https://gentoo.lan.

$ sudo /etc/init.d/apache2 restart

Gamit kini nga pamaagi, mahimo nimong idugang ang mga website sa SSL nga adunay kaugalingon nga mga Sertipiko ug Mga Yawe gamit ang Apache Virtual Hosts. Para tangtangon ang SSL Virtual Hosts magkomento o tangtangon ang mga direktiba niini ubos sa sa /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf file.

Lakang 3: I-enable ang CGI Interface

Ang CGI (Common Gateway Interface) kini nagtugot sa Apache nga makig-uban sa mga eksternal nga programa, panguna nga naglangkob sa Perl o BASH nga mga script, nga makadugang sa usa ka dinamikong sulod sa imong website.

10. Sa dili pa i-enable ang CGI gateway siguroa nga ang Apache gihugpong uban sa USE CGI modules nga nagsuporta sa mga flag sa Portage make.conf file: cgi cgid. Aron mahimo ang suporta sa GCI alang sa Apache ablihi ang /etc/conf.d/apache2 file ug idugang ang CGI module sa APACHE2_OPTS nga linya.

$ sudo nano /etc/conf.d/apache2

Siguruha nga kini nga linya adunay parehas nga sulud.

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

11. Human ma-enable ang CGI modules, ablihi ang imong website definition host nga gusto nimo nga ma-enable ang CGI interface ug idugang ang mosunod nga content sulod sa Virtual Host directives.

<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. Kung ikaw adunay direktoryo sa sulod sa imong DocumentRoot (/var/www/gentoo.lan/) nga agianan nga nagkupot sa CGI scripts mahimo nimong palihokon ang kana nga direktoryo nga magsilbi nga dinamikong Perl o Bash nga mga script.

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. Para sa SSI (Server Side Includes) idugang ang +Includes nga pahayag sa Options ug idugang ang .shtml file extension.

<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. Sa pagsulay sa pipila ka yano nga .cgi ug .pl nga mga script sa Apache CGI gateway paghimo sa mosunod nga mga script sa sulod nimo Virtual Host DocumentRoot (/var/www/gentoo. lan/).

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

Idugang ang mosunod nga Perl content.

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

Idugang ang mosunod nga Bash content.

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

15. Human mabuhat ang mga file, himoa kini nga executable, i-restart ang Apache daemon ug itudlo ang imong browser sa mosunod nga mga 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

Karon mahimo nimong mabag-o ang Gentoo nga usa ka kusgan nga platform sa pag-host sa Web nga adunay maayong mga setting sa pag-tune para sa pasundayag sa imong sistema ug labing taas nga kontrol sa imong tibuuk nga palibot.