ค้นหาเว็บไซต์

การสร้างโฮสต์เสมือน สร้างใบรับรอง SSL & คีย์ และเปิดใช้งาน CGI Gateway ใน Gentoo Linux


บทช่วยสอนล่าสุดเกี่ยวกับการติดตั้ง LAMP ใน Gentoo Linux ครอบคลุมกระบวนการติดตั้งขั้นพื้นฐานโดยไม่มีการตั้งค่าเพิ่มเติมสำหรับ Apache เพื่อควบคุมโดเมนของคุณได้ดียิ่งขึ้น

บทช่วยสอนนี้เชื่อมโยงกับบทช่วยสอนก่อนหน้าบน Gentoo LAMP อย่างเคร่งครัด และอภิปรายการการตั้งค่าเพิ่มเติมสำหรับสภาพแวดล้อม LAMP เช่น สร้าง โฮสต์เสมือน บน Apache สร้าง SSL ไฟล์ใบรับรองและคีย์ เปิดใช้งานโปรโตคอล SSL ที่ปลอดภัยในธุรกรรม HTTP และใช้ Apache CGI Gateway เพื่อให้คุณสามารถเรียกใช้ Perl หรือ สคริปต์ ทุบตี บนเว็บไซต์ของคุณ

ความต้องการ

  1. ติดตั้ง LAMP ใน Gentoo Linux

ขั้นตอนที่ 1: สร้างโฮสต์เสมือน Apache

หัวข้อนี้ใช้ชื่อโดเมนปลอม – gentoo.lan – เปิดใช้งานผ่านไฟล์โฮสต์ในเครื่อง โดยมีไฟล์เว็บไซต์ให้บริการจาก /var/www/gentoo.lanDocumentRoot คำสั่ง โดยไม่มีบันทึก DNS ที่ถูกต้อง เพื่อสาธิตวิธีการเปิดใช้งานโฮสต์เสมือนหลายรายการบน Gentoo โดยใช้เว็บเซิร์ฟเวอร์ Apache

1. ในการเริ่มต้น ให้เปิดไฟล์โฮสต์ Gentoo เพื่อแก้ไขและเพิ่มบรรทัดใหม่ด้วยชื่อโดเมนของคุณ

sudo nano /etc/hosts

ในตอนท้ายของไฟล์ให้มีลักษณะเช่นนี้

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. ทดสอบโดเมนปลอมของคุณด้วยคำสั่ง ping และโดเมนควรตอบสนองด้วยที่อยู่ IP

ping -c2 gentoo.lan

3. กระบวนการเปิดใช้งาน Apache Virtual Hosts นั้นค่อนข้างง่าย เพียงเปิดไฟล์โฮสต์เสมือนเริ่มต้นของ Apache ที่อยู่บนเส้นทาง /etc/apache2/vhosts.d/ และก่อนคำสั่ง สุดท้าย ให้ป้อนคำจำกัดความ Virtual Host ใหม่ของคุณที่อยู่ใน คำสั่ง ค

ประกอบด้วยการตั้งค่าที่คุณกำหนดเอง เช่น เส้นทาง ServerName และ DocumentRoot ใช้เทมเพลตไฟล์ต่อไปนี้เป็นแนวทางสำหรับ Virtual Host ใหม่และรวมไว้ ในไฟล์ 00_default_vhost.conf (สำหรับเว็บไซต์ที่ไม่ใช่ 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>

ดังที่คุณเห็นได้จากการแสดงเนื้อหาของไฟล์นี้ ไฟล์ดังกล่าวได้รับการแสดงความคิดเห็นอย่างมากพร้อมคำอธิบาย และยังเก็บคำจำกัดความของ localhost โฮสต์เสมือนไว้ ซึ่งคุณสามารถใช้เป็นแนวทางได้

4. หลังจากแก้ไขไฟล์ด้วย Virtual Host ที่คุณกำหนดเองเสร็จแล้ว ให้รีสตาร์ท Apache เพื่อใช้การตั้งค่า และตรวจสอบให้แน่ใจว่าคุณได้สร้างไดเร็กทอรี DocumentRoot ในกรณีที่คุณเปลี่ยนคำสั่งนี้และเส้นทางไม่ ไม่มีอยู่ตามค่าเริ่มต้น (ในกรณีนี้เปลี่ยนเป็น /var/www/gentoo.lan) ฉันยังสร้างไฟล์ PHP ขนาดเล็กเพื่อทดสอบการกำหนดค่าเว็บเซิร์ฟเวอร์ด้วย

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

5. หากต้องการยืนยัน ให้เปิดเบราว์เซอร์แล้วชี้ไปที่ชื่อโดเมนเสมือนของคุณ http://gentoo.lan/info.php

การใช้ขั้นตอนนี้คุณสามารถเพิ่มเว็บไซต์ที่ไม่ใช่ SSL ได้มากเท่าที่คุณต้องการโดยใช้ Apache Virtual Hosts แต่สำหรับเครื่องที่เชื่อมต่อกับอินเทอร์เน็ตจริง ตรวจสอบให้แน่ใจว่าคุณได้ลงทะเบียนโดเมนของคุณแล้ว และคุณใช้บันทึกเซิร์ฟเวอร์ DNS ที่ถูกต้อง

หากต้องการลบ Virtual Host เพียงใส่เครื่องหมายความคิดเห็นหรือลบคำสั่งที่อยู่ใน ในไฟล์ 00_default_vhost.conf

ขั้นตอนที่ 2: สร้างใบรับรอง SSL และคีย์สำหรับโฮสต์เสมือน

SSL เป็นโปรโตคอลการเข้ารหัสที่ใช้ในการแลกเปลี่ยนข้อมูลผ่านช่องทางการสื่อสารที่ปลอดภัยในอินเทอร์เน็ตหรือภายในเครือข่ายโดยใช้ใบรับรองและคีย์สมมาตร/ไม่สมมาตร

6. เพื่อลดความซับซ้อนของกระบวนการสร้างใบรับรองและคีย์ ให้ใช้สคริปต์ Bash ต่อไปนี้ซึ่งทำหน้าที่เป็นคำสั่งและสร้างทุกสิ่งที่คุณต้องการโดยอัตโนมัติด้วยการตั้งค่าชื่อโดเมน SSL ของคุณ

ขั้นแรกให้เริ่มต้นด้วยการสร้างสคริปต์ Bash โดยใช้คำสั่งต่อไปนี้

sudo nano /usr/local/bin/apache_gen_ssl

เพิ่มเนื้อหาไฟล์ต่อไปนี้

#!/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. หลังจากสร้างไฟล์แล้ว ให้เพิ่มสิทธิ์ดำเนินการต่อท้ายไฟล์นั้นและเรียกใช้เพื่อสร้างคีย์ SSL และใบรับรอง

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

เมื่อคุณเรียกใช้ในครั้งแรก ระบบจะขอให้คุณป้อนชื่อ โดเมน ของคุณ ป้อนชื่อ โดเมน ของคุณที่คุณสร้างการตั้งค่า SSL และกรอกใบรับรองด้วยข้อมูลที่จำเป็น ชื่อที่สำคัญที่สุด ชื่อทั่วไป ใช้เซิร์ฟเวอร์ FQDN ของคุณ

ตำแหน่งเริ่มต้นที่โฮสต์ใบรับรองและคีย์ทั้งหมดของคุณโดยใช้วิธีนี้คือ /etc/apache2/ssl/

8. ตอนนี้ก็ถึงเวลาสร้าง gentoo.lan Virtual Host SSL ที่เทียบเท่ากัน ใช้วิธีการเดียวกันกับโฮสต์เสมือนที่ไม่ใช่ SSL แต่คราวนี้แก้ไขไฟล์ /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf โดยมีการเปลี่ยนแปลงเล็กน้อย

ขั้นแรกให้เปิดไฟล์เพื่อแก้ไขและทำการเปลี่ยนแปลงต่อไปนี้

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

ภายใต้คำสั่ง Listen 443 ให้เพิ่มเนื้อหาต่อไปนี้

NameVirtualHost *:443

ใช้เทมเพลตต่อไปนี้สำหรับโฮสต์เสมือนใหม่และต่อท้ายใบรับรอง SSL + เส้นทางคีย์และชื่อใหม่

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

ข้อกำหนดโฮสต์เสมือนต้องสิ้นสุดก่อนคำสั่งสามรายการสุดท้ายนี้

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

9. หลังจากแก้ไขไฟล์ Virtual Host เสร็จแล้ว ให้เริ่มบริการ Apache ใหม่ และนำเบราว์เซอร์ของคุณไปยังโดเมนของคุณโดยใช้โปรโตคอล HTTPS https://gentoo.lan

sudo /etc/init.d/apache2 restart

เมื่อใช้ขั้นตอนนี้ คุณสามารถเพิ่มเว็บไซต์ SSL ด้วยใบรับรองและคีย์ของตนเองได้โดยใช้ Apache Virtual Hosts หากต้องการลบ SSL Virtual Hosts ให้ใส่ความคิดเห็นหรือลบคำสั่งที่อยู่ในไฟล์ ในไฟล์ /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf

ขั้นตอนที่ 3: เปิดใช้งานอินเทอร์เฟซ CGI

CGI (อินเทอร์เฟซเกตเวย์ทั่วไป) ช่วยให้ Apache โต้ตอบกับโปรแกรมภายนอกได้ ซึ่งโปรแกรมหลักประกอบด้วยสคริปต์ Perl หรือ BASH ซึ่งสามารถเพิ่มเนื้อหาแบบไดนามิกลงในเว็บไซต์ของคุณได้

10. ก่อนที่จะเปิดใช้งานเกตเวย์ CGI ตรวจสอบให้แน่ใจว่า Apache ได้รับการคอมไพล์ด้วยโมดูล USE CGI ที่สนับสนุนแฟล็กบนไฟล์ Portage make.conf: cgi cgid . หากต้องการเปิดใช้งานการรองรับ GCI สำหรับ Apache ให้เปิดไฟล์ /etc/conf.d/apache2 และเพิ่มโมดูล CGI ต่อท้ายบรรทัด APACHE2_OPTS

sudo nano /etc/conf.d/apache2

ตรวจสอบให้แน่ใจว่าบรรทัดนี้มีเนื้อหาคล้ายกัน

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

11. หลังจากเปิดใช้งานโมดูล CGI แล้ว ให้เปิดโฮสต์ข้อกำหนดเว็บไซต์ของคุณที่คุณต้องการเปิดใช้งานอินเทอร์เฟซ CGI และเพิ่มเนื้อหาต่อไปนี้ภายในคำสั่ง 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. หากคุณมีไดเรกทอรีภายในเส้นทาง DocumentRoot (/var/www/gentoo.lan/) ของคุณที่เก็บสคริปต์ CGI คุณสามารถเปิดใช้งานเพียงไดเรกทอรีนั้นเพื่อให้บริการ Perl แบบไดนามิก หรือสคริปต์ทุบตี

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. สำหรับ SSI (รวมฝั่งเซิร์ฟเวอร์) ให้ผนวกคำสั่ง +รวม ใน ตัวเลือก และเพิ่มนามสกุลไฟล์ .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. เพื่อทดสอบสคริปต์ .cgi และ .pl ง่ายๆ บนเกตเวย์ Apache CGI ให้สร้างสคริปต์ต่อไปนี้ภายใน Virtual Host DocumentRoot ( /var/www/gentoo.lan/)

สคริปต์เพิร์ล
sudo nano /var/www/gentoo.lan/env.pl

เพิ่มเนื้อหา Perl ต่อไปนี้

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

เพิ่มเนื้อหา Bash ต่อไปนี้

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

15. หลังจากสร้างไฟล์แล้ว ให้สามารถเรียกใช้งานได้ รีสตาร์ท Apache daemon และชี้เบราว์เซอร์ของคุณไปที่ 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

ตอนนี้คุณสามารถเปลี่ยน Gentoo ให้เป็นแพลตฟอร์มเว็บโฮสติ้งที่ทรงพลังด้วยการตั้งค่าที่ปรับแต่งอย่างละเอียดสำหรับประสิทธิภาพของระบบและการควบคุมสภาพแวดล้อมทั้งหมดของคุณสูงสุด