Поиск по сайту:

Создание виртуальных хостов, генерация сертификатов и ключей SSL и включение шлюза CGI в Gentoo Linux


В последнем руководстве по Установке LAMP в Gentoo Linux был описан только базовый процесс установки без дополнительных настроек Apache для лучшего управления вашими доменами.

Это руководство тесно связано с предыдущим руководством по Gentoo LAMP и обсуждает дополнительные настройки для среды LAMP, такие как создание Виртуальных хостов на Apache, создание SSL файлы сертификатов и ключи, включите безопасный протокол SSL для транзакций HTTP и используйте Apache CGI Gateway, чтобы вы могли запускать Perl или Скрипты Bash на вашем веб-сайте.

Требования

  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 довольно прост. Просто откройте файл виртуальных хостов Apache по умолчанию, расположенный по пути /etc/apache2/vhosts.d/, и перед последним оператором введите новое определение виртуального хоста, заключенное в директивы. с

Содержит ваши пользовательские настройки, такие как ServerName и путь DocumentRoot. Используйте следующий шаблон файла в качестве руководства для нового виртуального хоста и включите его в файл 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. После завершения редактирования файла с помощью пользовательского виртуального хоста перезапустите 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, но для реальной машины с выходом в Интернет убедитесь, что ваши домены зарегистрированы и вы используете действительные записи DNS-сервера.

Чтобы удалить виртуальный хост, просто закомментируйте или удалите его директивы, заключенные в в файле 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, и заполните сертификат необходимой информацией, наиболее важной из которых является Общее имя, используйте полное доменное имя вашего сервера.

По умолчанию все ваши сертификаты и ключи хранятся с использованием этого метода: /etc/apache2/ssl/.

8. Теперь пришло время создать SSL-эквивалент виртуального хоста gentoo.lan. Используйте тот же метод, что и для виртуальных хостов без 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. После завершения редактирования файла виртуального хоста перезапустите службу Apache и направьте браузер в свой домен, используя протокол HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Используя эту процедуру, вы можете добавлять веб-сайты SSL с собственными сертификатами и ключами, используя виртуальные хосты Apache. Чтобы удалить виртуальные хосты SSL, закомментируйте или удалите его директивы, заключенные в в файле /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Шаг 3. Включите интерфейс CGI

CGI (Общий интерфейс шлюза) позволяет Apache взаимодействовать с внешними программами, в основном состоящими из сценариев Perl или BASH, которые могут добавлять динамическое содержимое на ваш веб-сайт.

10. Прежде чем включать шлюз CGI, убедитесь, что Apache скомпилирован с поддержкой флагов модулей USE CGI в файле make.conf Portage: 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, и добавьте следующий контент в директивы виртуального хоста.

<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. или сценарии 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. Для SSI (включения на стороне сервера) добавьте оператор +Includes в Параметры и добавьте расширение файла .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 и укажите в браузере следующие 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 в мощную платформу веб-хостинга с тонкой настройкой производительности вашей системы и максимальным контролем над всей вашей средой.