在Gentoo Linux中创建虚拟主机,生成SSL证书和密钥并启用CGI网关

本教程讨论了LAMP环境的额外设置,例如在Apache上创建虚拟主机,生成SSL证书,在HTTP上启用SSL协议。

在的Gentoo Linux安装LAMP的最后一个教程只是涵盖了基本的安装过程中没有为Apache提供更好地控制您的域的其他设置。

在Gentoo中创建Apache虚拟主机

在Gentoo中创建Apache虚拟主机

本教程是严格按照在Gentoo LAMP前一个连接,并讨论了诸如在Apache上建立虚拟主机 ,生成SSL证书文件和钥匙,对HTTP交易启用安全SSL协议和使用Apache CGI网关 ,因此您可以运行PerlLAMP环境的额外设置在你的网站或的bash脚本。

要求

  1. 在Gentoo Linux中安装LAMP

第1步:创建Apache虚拟主机

本主题使用假域名- gentoo.lan -通过本地hosts文件中启用,网站文件从/var/www/gentoo.lan服务- DocumentRoot指令,没有一个有效的DNS记录,以证明虚拟主机是如何多次被启用在Gentoo上使用Apache Web Server。

1.首先,打开Gentoo的hosts文件进行编辑,并添加一个新的符合您的域名。

$ 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/路径和前年文件 语句,请在下面输入您的新虚拟主机定义 ... ... 指令。 C

含有像:ServerNameDocumentRoot的路径的自定义设置。 使用下面的文件模板作为一个新的虚拟主机的指南,包括它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>
创建Apache虚拟主机

在Gentoo中创建Apache虚拟主机

正如你可以通过可视化该文件内容看,该文件是用高度评价的解释,也保持本地主机虚拟主机的定义-您可以使用它作为指南。

4.完成编辑文件,您的自定义虚拟主机后,重新启动Apache以应用设置,并确保你的情况下,创建的DocumentRoot目录,你已经改变了这个指令和路径默认情况下不存在(在这种情况下被更改到/ var /www/gentoo.lan)。 我还创建了一个小的PHP文件来测试Web服务器配置。

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

验证PHP配置

验证PHP配置

使用此过程,您可以添加任何数量的非SSL网站,您希望使用Apache虚拟主机,但对于一个真正的面向互联网的机器,确保您的域注册,并使用有效的DNS服务器记录。

要删除虚拟主机只注释掉或删除其指示下...封闭的00_default_vhost.conf文件。

第2步:为虚拟主机生成SSL证书和密钥

SSL是用于通过安全通信通道在互联网或内部使用证书和对称/非对称密钥网络交换信息的加密协议。

6.为了简化证书和密钥的生成过程使用作为一个命令并自动创建所有你需要与你的SSL域名设置以下Bash脚本。

首先使用以下命令创建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
创建Bash脚本以生成SSL

创建Bash脚本以生成SSL

7.在文件被创建后,追加上执行权限并运行它生成SSL密钥和证书。

$ sudo chmod +x /usr/local/bin/apache_gen_ssl
$ sudo apache_gen_ssl
Genereate SSL证书和Keysa

Genereate SSL证书和Keysa

当你第一次运行的话,会要求你输入你的域名 输入您的域名为您生成SSL设置与所需信息填写证书,最重要的一条, 普通名称 ,使用服务器FQDN。

在那里所有的证书和密钥使用此方法托管默认位置是/ etc /的Apache2 / SSL /。

8.现在是时候创建gentoo.lan虚拟主机SSL等价的。 使用相同的方法,非SSL虚拟主机,但这次编辑/etc/apache2/vhosts.d/00_default_ssl_vhosts.conf文件略有变化。

首先打开文件进行编辑并进行以下更改。

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

听443指令添加以下内容。

NameVirtualHost *:443
启用HTTPS端口

启用HTTPS端口

对新的虚拟主机使用以下模板,并附加新的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 ###
创建SSL虚拟主机

创建SSL虚拟主机

虚拟主机定义必须在最后三个语句之前结束。

</IfModule>
</IfDefine>
</IfDefine>
验证虚拟主机

验证虚拟主机

9.编辑完虚拟主机文件后,重新启动Apache服务,并使用HTTPS协议HTTPS直接在浏览器中您的域名://gentoo.lan。

$ sudo /etc/init.d/apache2 restart
验证HTTPS协议

验证HTTPS协议

使用此过程,您可以使用Apache虚拟主机添加具有自己的证书和密钥的SSL网站。 要删除SSL虚拟主机注释掉或删除其指示下...封闭的/etc/apache2/vhosts.d/00_default_ssl_vhosts.conf文件。

第3步:启用CGI接口

CGI( 通用网关接口 ),它允许Apache以与外部程序交互,主要包括在Perl或bash脚本,可以将动态内容添加到您的网站。

10.在启用CGI网关确保Apache与使用CGI模块的标志编译支持波蒂奇make.conf文件:CGI cgid进行 要启用Apache开放源/etc/conf.d/apache2中的文件GCI支持和APACHE2_OPTS行追加CGI模块。

$ 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"
为Apache启用CGI

为Apache启用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>
在虚拟主机中启用CGI

在虚拟主机中启用CGI

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(服务器端包含)追加+包括上的选项语句,然后添加的.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和Apache的CGI网关特等脚本创建你内心以下脚本虚拟主机的DocumentRoot(/var/www/gentoo.lan/)。

Perl脚本
$ 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";
}
Bash脚本
$ 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
验证CGI配置

验证CGI配置

现在,您可以将Gentoo转换为强大的Web托管平台,并对您的系统性能进行精细调整设置,并对整个环境进行最大程度的控制。