Ịmepụta ndị ọbịa mebere, mepụta Asambodo SSL & igodo wee mee ka ọnụ ụzọ CGI dị na Gentoo Linux.


Nkuzi ikpeazụ na Ịwụnye LAMP na Gentoo Linux kpuchiri usoro nrụnye bụ isi na-enweghị ntọala ndị ọzọ dị maka Apache iji jikwaa ngalaba gị nke ọma.

Nkuzi a jikọtara ya na nke gara aga na Gentoo LAMP wee kparịta ntọala agbakwunyere maka gburugburu LAMP dị ka imepụta Virtual Hosts na Apache, mepụta >SSL faịlụ na igodo, mee ka SSL protocol echekwara na azụmahịa HTTP wee jiri Apache CGI Gateway mee ka ị nwee ike ịgba ọsọ Perl ma ọ bụ Bash scripts n'elu webụsaịtị gị.

  1. Wụnye LAMP na Gentoo Linux

Kwụpụ 1: Mepụta ndị ọbịa Apache Virtual

Isiokwu a na-eji aha ngalaba adịgboroja - gentoo.lan - enyere site na faịlụ ndị ọbịa mpaghara, yana faịlụ webụsaịtị sitere na /var/www/gentoo.lan - DocumentRoot. ntuziaka, na-enweghị ndekọ DNS bara uru, iji gosi ka enwere ike isi mee ka ọtụtụ ndị ọbịa mebere na Gentoo site na iji sava weebụ Apache.

1. Iji malite, mepee faịlụ ndị ọbịa Gentoo maka edezi ma tinye aha ngalaba gị ọhụrụ ahịrị.

$ sudo nano /etc/hosts

Na njedebe nke faịlụ, mee ka ọ dị ka nke a.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Jiri iwu ping nwalee ngalaba adịgboroja gị na ngalaba ahụ kwesịrị iji adreesị IP ya zaghachi.

$ ping -c2 gentoo.lan

3. Usoro nke ịgbalite Apache Virtual Hosts dị nnọọ mfe. Naanị mepee faịlụ ndị ọbịa mebere Apache nke dị na /etc/apache2/vhosts.d/ ụzọ na tupu nkwupụta ikpeazụ, tinye nkọwapụta Virtual Host ọhụrụ gị etinyere n'okpuru ntuziaka. c

Nwere ntọala omenala gị dị ka Aha Server na ụzọ DocumentRoot. Jiri ndebiri faịlụ a dị ka ntuziaka maka onye ọbịa mebere ọhụrụ wee tinye ya na faịlụ 00_default_vhost.conf (maka webụsaịtị na-abụghị 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>

Dị ka ị na-ahụ site n'iji anya nke uche nke ọdịnaya faịlụ a, a na-akọwa faịlụ ahụ nke ukwuu na nkọwa ma na-echekwa localhost nkọwa nke ndị ọbịa - nke ị nwere ike iji ya dịka ntuziaka.

4. Mgbe ịmechara faịlụ edezi na omenala Virtual Host, malitegharịa Apache ka itinye ntọala wee hụ na ị mepụtara ndekọ ndekọ DocumentRoot ma ọ bụrụ na ị gbanwee ntuziaka a na ụzọ adịghị adị na ndabara ( na a gbanwere ikpe a ka ọ bụrụ /var/www/gentoo.lan). Emepụtakwara m obere faịlụ PHP iji nwalee nhazi sava weebụ.

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

5. Iji nyochaa ya, mepee ihe nchọgharị wee gosi ya mebere ngalaba aha gị http://gentoo.lan/info.php.

Iji usoro a, ị nwere ike ịgbakwunye ọtụtụ ebe nrụọrụ weebụ na-abụghị SSL dị ka ịchọrọ iji Apache Virtual Hosts, mana maka ezigbo igwe na-eche ihu na Ịntanetị na ị debanyere aha ngalaba gị na ị na-eji ndekọ ihe nkesa DNS dị mma.

Iji wepu onye nnabata mebere, kwupụta ma ọ bụ hichapụ ntuziaka ya agbakwunyere n'okpuru na faịlụ 00_default_vhost.conf.

Kwụpụ 2: Mepụta Asambodo SSL na igodo maka ndị ọbịa mebere

SSL bụ protocol cryptographic a na-eji gbanwe ozi na ọwa nkwukọrịta echekwara na ịntanetị ma ọ bụ n'ime netwọk site na iji Asambodo na igodo symmetric/asymmetric.

6. Iji mee ka Asambodo na usoro ọgbọ igodo dị mfe, jiri edemede Bash na-esonụ nke na-arụ ọrụ dị ka iwu na-akpaghị aka na-emepụta ihe niile ị chọrọ na SSL ngalaba aha ntọala.

Mbụ malite site na ịmepụta script Bash site na iji iwu na-esonụ.

$ sudo nano /usr/local/bin/apache_gen_ssl

Tinye ọdịnaya faịlụ ndị a.

#!/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. Mgbe emechara faịlụ ahụ, tinye ikike na ya wee mee ya ka ịmepụta igodo SSL na Asambodo.

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

Mgbe ị na-agba ya na nke mbụ, ga-ajụ gị ka itinye aha ngalaba gị. Tinye aha ngalaba nke ị na-ewepụta ntọala SSL wee jupụta Asambodo na ozi achọrọ, nke kachasị mkpa, Aha nkịtị, jiri FQDN nkesa gị.

Ebe ndabara ebe a na-akwado Asambodo na igodo gị niile site na iji usoro a bụ /etc/apache2/ssl/.

8. Ugbu a ọ bụ oge ịmepụta gentoo.lan Virtual Host SSL dakọtara. Jiri otu usoro ahụ maka ndị ọbịa ndị ọbịa na-abụghị SSL mana oge a na-edezi /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf faịlụ nwere obere mgbanwe.

Buru ụzọ mepee faịlụ maka edezi wee mee mgbanwe ndị a.

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

N'okpuru Ntị 443 ntuziaka tinye ọdịnaya ndị a.

NameVirtualHost *:443

Jiri ndebiri ndị a maka onye ọbịa mebere ọhụrụ wee tinye Asambodo SSL ọhụrụ + Ụzọ na aha.

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

Nkọwa ndị ọbịa mepere emepe ga-akwụsị tupu nkwupụta atọ ikpeazụ a.

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

9. Mgbe ịmechara faịlụ Virtual Host, malitegharịa ọrụ Apache wee duzie ihe nchọgharị gị na ngalaba gị site na iji HTTPS protocol https://gentoo.lan.

$ sudo /etc/init.d/apache2 restart

Iji usoro a, ị nwere ike tinye ebe nrụọrụ weebụ SSL na Asambodo na igodo nke ha site na iji Apache Virtual Hosts. Iji wepu SSL Virtual Hosts kwupụta ma ọ bụ hichapụ ntuziaka ya agbakwunyere n'okpuru /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf faịlụ.

Kwụpụ 3: Kwado Interface CGI

The CGI (Common Gateway Interface) ọ na-enye Apache ohere ịmekọrịta na mmemme mpụga, nke bụ isi nke gụnyere Perl ma ọ bụ scripts BASH, nke nwere ike itinye ọdịnaya siri ike na weebụsaịtị gị.

10. Tupu ị na-eme ka ọnụ ụzọ ámá CGI hụ na e jikọtara Apache na Jiri CGI modul nkwado ọkọlọtọ na faịlụ Portage make.conf: cgi cgid. Iji mee ka nkwado GCI maka Apache mepee /etc/conf.d/apache2 faịlụ wee tinye modul CGI na APACHE2_OPTS ahịrị.

$ sudo nano /etc/conf.d/apache2

Gbaa mbọ hụ na ahịrị a nwere ọdịnaya yiri ya.

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

11. Mgbe CGI modul na-nyeere, na-emeghe gị website definition ọbịa na ị chọrọ ka CGI interface na tinye ndị na-esonụ ọdịnaya n'ime 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. Ọ bụrụ na ị nwere ndekọ n'ime gị DocumentRoot (/var/www/gentoo.lan/) ụzọ na-ejide CGI scripts ị nwere ike ime ka naanị na ndekọ na-eje ozi dynamic Perl ma ọ bụ 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. N'ihi na SSI (Server Side gụnyere) tinye +Gụnyere nkwupụta na Nhọrọ wee tinye .shtml faịlụ ndọtị.

<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. Iji nwalee ụfọdụ dị mfe .cgi na .pl scripts na Apache CGI ọnụ ụzọ mepụta ndị na-esonụ scripts n'ime gị Virtual Host DocumentRoot (/var/www/gentoo. ala/).

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

Tinye ọdịnaya Perl ndị a.

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

Tinye ọdịnaya Bash ndị a.

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

15. Mgbe emechara faịlụ ndị ahụ, mee ka ha rụọ ọrụ, malitegharịa Apache daemon wee tụọ ihe nchọgharị gị na URL ndị a.

$ 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

Ugbu a, ị nwere ike gbanwee Gentoo ka ọ bụrụ ikpo okwu nnabata Weebụ dị ike yana ntọala nlegharị anya dị mma maka arụmọrụ sistemụ gị yana njikwa kachasị na gburugburu ebe obibi gị niile.