Создание виртуальных хостов, генерация сертификатов и ключей SSL и включение шлюза CGI в Gentoo Linux
В последнем руководстве по Установке LAMP в Gentoo Linux был описан только базовый процесс установки без дополнительных настроек Apache для лучшего управления вашими доменами.
Это руководство тесно связано с предыдущим руководством по Gentoo LAMP и обсуждает дополнительные настройки для среды LAMP, такие как создание Виртуальных хостов на Apache, создание SSL файлы сертификатов и ключи, включите безопасный протокол SSL для транзакций HTTP и используйте Apache CGI Gateway, чтобы вы могли запускать Perl или Скрипты Bash на вашем веб-сайте.
Требования
- Установите LAMP в Gentoo Linux.
Шаг 1. Создайте виртуальные хосты Apache
В этой теме используется поддельное доменное имя – gentoo.lan – включенное через локальный файл хостов, а файлы веб-сайта обслуживаются из /var/www/gentoo.lan – DocumentRoot без действительной записи 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 в мощную платформу веб-хостинга с тонкой настройкой производительности вашей системы и максимальным контролем над всей вашей средой.