在Gentoo中创建Apache虚拟主机
本教程探讨了LAMP环境的额外设置,比如在Apache上创建虚拟主机、生成SSL证书文件及密钥、针对HTTP事务启用安全SSL协议,以及使用Apache CGI网关,那样你就可以在自己的网站上运行Perl脚本或Bash脚本。
第1步:创建Apache虚拟主机
这个话题使用一个虚假的域名:gentoo.lan,通过本地主机文件来启用,网站文件从/var/www/gentoo.lan来提供――没有有效DNS记录的DocumentRoot命令用来演示如何在使用Apache Web Server的Gentoo上启用多个虚拟主机。
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虚拟主机的过程相当简单。只要打开位于/etc/apache2/vhosts.d/路径的Apache默认虚拟主机文件,在最后一个语句前面,输入你新的虚拟主机定义,该定义在…命令下围起来。
包含你的自定义设置,比如ServerName和DocumentRoot路径。使用下列文件模板作为新虚拟主机的指南,并将它添加到00_default_vhost.conf文件上(用于非SSL网站)。
$sudonano/etc/apache2/vhosts.d/00_default_vhost.conf ##以</VirtualHost>结尾的另一个虚拟主机语句### <VirtualHost*:80> ServerNamegentoo.lan DocumentRoot"/var/www/gentoo.lan" <Directory"/var/www/gentoo.lan" OptionsIndexesFollowSymLinksExecCGIMultiViews #AllowOverride控制什么命令可以放在.htaccess文件中。 AllowOverrideAll #控制谁能从该服务器文件中获得内容 Orderallow,deny Allowfromall </Directory> <IfModulempm_peruser_module> ServerEnvironmentapacheapache </IfModule> </VirtualHost> ##另一个虚拟主机语句### ##结束虚拟主机文件的最后一个语句## </IfDefine>
在Gentoo中创建Apache虚拟主机
你可能从该文件内容图形中看出,文件使用了大量的说明注释,还保留了本地主机虚拟主机的定义――你可以将它用作指南。
4. 使用自定义的虚拟主机完成文件编辑后,重启Apache,让设置生效,并确保你创建了DocumentRoot目录,以防你更改了该指令,路径在默认情况下并不存在(这种情况下路径改成/var/www/gentoo.lan)。我还创建了一个小巧的PHP文件,以测试Web服务器的配置。
$sudomkdir/var/www/gentoo.lan $su"echo'<?phpphpinfo();?>'>/var/www/gentoo.lan/info.php" $sudo/etc/init.d/apache2restart
5. 想进行验证,打开浏览器,将其指向你的虚拟域名http://gentoo.lan/info.php。
验证PHP配置
使用这个方法,你可以使用Apache虚拟主机,想添加几个非SSL网站,就能添加几个;但是就一个真实的面向互联网的机器而言,要确保你的域已注册,并且使用有效的DNS服务器记录。
想删除虚拟主机,只要注释掉或删除00_default_vhost.conf文件中…下围起来的指令。#p#
第2步:为虚拟主机生成SSL证书和密钥
SSL是一种加密协议,用来通过互联网或使用证书以及对称/非对称密钥的网络里面的安全通信通道交换信息。 6. 想简化证书和密钥的生成过程,使用下列Bash脚本,该脚本充当命令,可以自动创建你所需要的带SSL域名设置的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
创建Bash脚本,生成SSL
7. 文件创建完毕后,在其末尾添加执行权限,并运行文件,生成SSL密钥及证书。
$ sudo chmod +x /usr/local/bin/apache_gen_ssl $ sudo apache_gen_ssl
生成SSL证书及密钥
你第一次运行文件时,它会要求你输入域名。输入需要生成SSL设置的域名,并为证书填充必要的信息,最重要的一个信息是Common Name,使用你服务器的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
在Listen 443命令下,添加下列内容。
NameVirtualHost *:443
启用HTTPS端口
针对新的虚拟主机使用下列模板,并在末尾添加新的SSL证书及密钥路径和名称。
##以</VirtualHost>结尾的另一个虚拟主机语句### <VirtualHost*:443> ServerNamegentoo.lan DocumentRoot"/var/www/gentoo.lan" ErrorLog/var/log/apache2/gentoo.lan-ssl_error_log <IfModulelog_config_module> TransferLog/var/log/apache2/gentoo.lan-ssl_access_log </IfModule> SSLEngineon SSLCipherSuiteALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL ##使用新生成的SSL证书和密钥进行编辑,将路径改成/etc/apache2/ssl/ SSLCertificateFile/etc/apache2/ssl/gentoo.lan.crt SSLCertificateKeyFile/etc/apache2/ssl/gentoo.lan.key <Directory"/var/www/gentoo.lan"> OptionsIndexesFollowSymLinksExecCGIMultiViewsIncludes AllowOverrideAll Orderallow,deny Allowfromall </Directory> <FilesMatch"\.(cgi|shtml|phtml|php)$"> SSLOptions+StdEnvVars </FilesMatch> <Directory"/var/www/gentoo.lan"> SSLOptions+StdEnvVars </Directory> <IfModulesetenvif_module> BrowserMatch".*MSIE.*"\ nokeepalivessl-unclean-shutdown\ downgrade-1.0force-response-1.0 </IfModule> <IfModulelog_config_module> CustomLog/var/log/apache2/ssl_request_log\ "%t%h%{SSL_PROTOCOL}x%{SSL_CIPHER}x\"%r\"%b" </IfModule> </VirtualHost> ##另一个虚拟主机语句###
创建SSL虚拟主机
虚拟主机的定义必须在这最后三个语句之前结束。
</IfModule> </IfDefine> </IfDefine>
验证虚拟主机
9. 完成虚拟主机文件的编辑后,重启Apache服务,将浏览器指向使用HTTPS协议的域:https://gentoo.lan。
$ sudo /etc/init.d/apache2 restart
验证HTTPS协议
使用这个方法,就可以使用Apache虚拟主机,为SSL网站添加自己的证书和密钥。想删除SSL虚拟主机,只要注释掉或删除在/etc/apache2/vhosts.d/00_default_ssl_vhosts.conf文件中…下围起来的命令。
第3步:启用CGI接口
CGI(通用网关接口)让Apache可以与外部程序进行联系,它主要由Perl或BASH脚本组成,可以为你的网站添加动态内容。
10. 在启用CGI网关之前,确保Apache已经过编译,Portage make.conf文件:cgi cgid 上支持USE CGI模块。想启用GCI对Apache的支持,打开/etc/conf.d/apache2文件,在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
11. CGI模块启用后,打开你想要启用CGI接口的网站定义主机,并将下列内容添加到虚拟主机命令里面。
<Directory"/var/www/gentoo.lan"> OptionsIndexes+ExecCGIMultiViews AddHandlercgi-script.cgi.pl DirectoryIndexindex.cgiindex.phpindex.htmlindex.pl AllowOverrideAll Orderallow,deny Allowfromall </Directory>
在虚拟主机中启用CGI
12. 如果你在DocumentRoot(/var/www/gentoo.lan/)路径里面有一个目录存放CGI脚本,完全可以启用该目录,提供动态的Perl或Bash脚本。
ScriptAlias/cgi-bin//var/www/gentoo.lan/cgi-bin/ <Location/cgi-bin> Options+ExecCGI AddHandlercgi-script.cgi.pl DirectoryIndexindex.cgiindex.phpindex.htmlindex.pl </Location>
13. 至于SSI(服务器端嵌入),在Options上添加+Includes语句,并添加.shtml文件扩展名。
<Directory"/var/www/gentoo.lan"> OptionsIndexes+ExecCGI+Includes AddHandlercgi-script.cgi.pl AddTypetext/html.shtml AddOutputFilterINCLUDES.shtml DirectoryIndexindex.shtmlindex.cgiindex.plindex.phpindex.html AllowOverrideAll Orderallow,deny Allowfromall </Directory>
14. 想在Aapche CGA网关上测试一些简单的.cgi和.pl脚本,在虚拟主机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配置
现在,你可以将Gentoo变成一个功能强大的Web主机托管平台,可以通过一些设置对系统性能进行微调,并且最大限度地控制你的整个环境。
原文地址: http://www.tecmint.com/create-apache-virtual-hosts-in-gentoo/
转载请注明:IT运维空间 » 安全防护 » 在Gentoo Linux中创建虚拟主机并生成SSL证书及密钥
发表评论