在Gentoo Linux中创建虚拟主机并生成SSL证书及密钥

在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网站)。

  1. $ sudo nano /etc/apache2/vhosts.d/00_default_vhost.conf  
  2. ## 以</VirtualHost>结尾的另一个虚拟主机语句###  
  3. <VirtualHost *:80> 
  4.         ServerName gentoo.lan  
  5.         DocumentRoot "/var/www/gentoo.lan"  
  6.                         <Directory "/var/www/gentoo.lan"  
  7.                 Options Indexes FollowSymLinks ExecCGI MultiViews  
  8.          # AllowOverride控制什么命令可以放在.htaccess文件中。    
  9.                         AllowOverride All  
  10.         # 控制谁能从该服务器文件中获得内容  
  11.                         Order allow,deny  
  12.                         Allow from all  
  13.         </Directory> 
  14.         <IfModule mpm_peruser_module> 
  15.                 ServerEnvironment apache apache  
  16.         </IfModule> 
  17. </VirtualHost> 
  18. ## 另一个虚拟主机语句###  
  19. ## 结束虚拟主机文件的最后一个语句##  
  20. </IfDefine> 

 

在Gentoo中创建Apache虚拟主机

你可能从该文件内容图形中看出,文件使用了大量的说明注释,还保留了本地主机虚拟主机的定义――你可以将它用作指南。

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

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

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证书及密钥路径和名称。

  1. ## 以</VirtualHost> 结尾的另一个虚拟主机语句###  
  2. <VirtualHost *:443> 
  3.                 ServerName gentoo.lan  
  4.     DocumentRoot "/var/www/gentoo.lan"  
  5.                 ErrorLog /var/log/apache2/gentoo.lan-ssl_error_log  
  6.                 <IfModule log_config_module> 
  7.                                 TransferLog /var/log/apache2/gentoo.lan-ssl_access_log  
  8.                 </IfModule> 
  9.                 SSLEngine on  
  10.                 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL  
  11. ## 使用新生成的SSL证书和密钥进行编辑,将路径改成/etc/apache2/ssl/  
  12.         SSLCertificateFile /etc/apache2/ssl/gentoo.lan.crt  
  13.         SSLCertificateKeyFile /etc/apache2/ssl/gentoo.lan.key  
  14.                 <Directory "/var/www/gentoo.lan"> 
  15.                                 Options Indexes FollowSymLinks ExecCGI MultiViews Includes  
  16.                                 AllowOverride All  
  17.                     Order allow,deny  
  18.                     Allow from all  
  19.                 </Directory> 
  20.                 <FilesMatch "\.(cgi|shtml|phtml|php)$"> 
  21.                                 SSLOptions +StdEnvVars  
  22.                 </FilesMatch> 
  23.                 <Directory "/var/www/gentoo.lan "> 
  24.                                 SSLOptions +StdEnvVars  
  25.                 </Directory> 
  26.                 <IfModule setenvif_module> 
  27.                                 BrowserMatch ".*MSIE.*" \  
  28.                                                 nokeepalive ssl-unclean-shutdown \  
  29.                                                 downgrade-1.0 force-response-1.0  
  30.                 </IfModule> 
  31.                 <IfModule log_config_module> 
  32.                                 CustomLog /var/log/apache2/ssl_request_log \  
  33.                                                 "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"  
  34.                 </IfModule> 
  35. </VirtualHost> 
  36. ## 另一个虚拟主机语句### 

创建SSL虚拟主机

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

  1. </IfModule> 
  2. </IfDefine> 
  3. </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接口的网站定义主机,并将下列内容添加到虚拟主机命令里面。

 

  1. <Directory "/var/www/gentoo.lan"> 
  2.     Options Indexes +ExecCGI MultiViews  
  3.         AddHandler cgi-script .cgi .pl  
  4.     DirectoryIndex index.cgi index.php index.html index.pl  
  5.         AllowOverride All  
  6.         Order allow,deny  
  7.         Allow from all  
  8. </Directory> 

 

 

在虚拟主机中启用CGI

12. 如果你在DocumentRoot(/var/www/gentoo.lan/)路径里面有一个目录存放CGI脚本,完全可以启用该目录,提供动态的Perl或Bash脚本。

 

  1. ScriptAlias /cgi-bin/ /var/www/gentoo.lan/cgi-bin/  
  2. <Location /cgi-bin> 
  3.                 Options +ExecCGI  
  4. AddHandler cgi-script .cgi .pl  
  5.  DirectoryIndex index.cgi index.php index.html index.pl  
  6. </Location> 

 

 

13. 至于SSI(服务器端嵌入),在Options上添加+Includes语句,并添加.shtml文件扩展名。

 

  1. <Directory "/var/www/gentoo.lan"> 
  2.                 Options Indexes +ExecCGI +Includes  
  3.                 AddHandler cgi-script .cgi .pl  
  4.                 AddType text/html .shtml  
  5. AddOutputFilter INCLUDES .shtml  
  6.         DirectoryIndex index.shtml index.cgi index.pl index.php index.html  
  7.                 AllowOverride All  
  8.                 Order allow,deny  
  9.                 Allow from all  
  10. </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/

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/144127.html<

(0)
运维的头像运维
上一篇2025-03-10 00:42
下一篇 2025-03-10 00:44

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注