虚拟主机允许Apache的Weberver基于IP地址,主机名或使用端口号提供不同的内容。 网站,提供 网站 -本指南将通过在/ etc / httpd的/路径,这将让所有的启用和禁用网站的文件配置上创建两个目录,使用Debian的类似的方法对红帽企业版Linux / CentOS 7.0启用和管理虚拟主机-启用和两种类型的脚本作为命令,一个能够和其他禁用指定的虚拟主机- a2ensite和a2dissite。 这种方法有一些优势,因为你做了必须搞乱httpd配置文件,每个虚拟主机都有自己的配置文件,可以在单个位置找到 - 启用的主机只是符号链接 - 这使得启用,禁用,创建或删除它们很容易管理。
使用启用/禁用选项的Apache虚拟主机
要求
在RHEL / CentOS 7中创建和管理Apache虚拟主机
1.首先,通过输入上的/ etc / httpd的/路径入手,创建启用站点的网站,提供目录和编辑Apache的httpd.conf文件,应用新启用的网站位置。
# cd /etc/httpd/ # mkdir sites-available sites-enabled # nano conf/httpd.conf
创建Apache Vhost目录
2.在httpd.conf文件在文件的底部,这将使Apache的读取和解析位于/所有文件添加以下指令行等/的httpd / /在扩展的.conf结束启用的站点- 。
IncludeOptional sites-enabled/*.conf
启用Apache目录
3.在下一步创建使用描述性名称的网站上可用的位置创建一个新的虚拟主机-在这种情况下,我用rheltest.lan.conf -并使用以下文件作为模板。
# nano /etc/httpd/sites-available/rheltest.lan.conf
使用此配置作为指南。
<VirtualHost *:80> ServerName rheltest.lan DocumentRoot "/var/www/rheltest.lan" <Directory "/var/www/rheltest.lan"> Options Indexes FollowSymLinks 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> ErrorLog /var/log/httpd/rheltest.lan-error.log CustomLog /var/log/httpd/rheltest.lan-access.log combined </VirtualHost>
创建Apache Vhosts
4.如果从默认的/ var / www / html等其他路径的虚拟主机上更改DocumentRoot的位置,请确保您还创建此路径。
# mkdir -p /var/www/rheltest.lan
注 :也保证服务器名称主机是有效的DNS记录或添加到您的本地机器的hosts文件,从那里你计划访问该网站。
5.现在是时候一个可执行文件系统路径上创建a2ensite和a2dissite的bash脚本-在这种情况下是/ usr / local / bin目录/ -但
您可以使用$ PATH系统变量输出的任何可执行文件的路径。
创建a2ensite脚本
使用您选择的编辑器创建以下文件。
# nano /usr/local/bin/a2ensite
将以下脚本添加到它。
#!/bin/bash if test -d /etc/httpd/sites-available && test -d /etc/httpd/sites-enabled ; then echo "-----------------------------------------------" else mkdir /etc/httpd/sites-available mkdir /etc/httpd/sites-enabled fi avail=/etc/httpd/sites-available/$1.conf enabled=/etc/httpd/sites-enabled/ site=`ls /etc/httpd/sites-available/` if [ "$#" != "1" ]; then echo "Use script: a2ensite virtual_site" echo -e "\nAvailable virtual hosts:\n$site" exit 0 else if test -e $avail; then sudo ln -s $avail $enabled else echo -e "$avail virtual host does not exist! Please create one!\n$site" exit 0 fi if test -e $enabled/$1.conf; then echo "Success!! Now restart Apache server: sudo systemctl restart httpd" else echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site" exit 0 fi fi
创建a2ensite脚本
创建a2dissite脚本
使用您选择的编辑器创建以下文件。
# nano /usr/local/bin/a2dissite
将以下整个脚本添加到文件。
#!/bin/bash avail=/etc/httpd/sites-enabled/$1.conf enabled=/etc/httpd/sites-enabled site=`ls /etc/httpd/sites-enabled/` if [ "$#" != "1" ]; then echo "Use script: a2dissite virtual_site" echo -e "\nAvailable virtual hosts: \n$site" exit 0 else if test -e $avail; then sudo rm $avail else echo -e "$avail virtual host does not exist! Exiting!" exit 0 fi if test -e $enabled/$1.conf; then echo "Error!! Could not remove $avail virtual host!" else echo -e "Success! $avail has been removed!\nPlease restart Apache: sudo systemctl restart httpd" exit 0 fi fi
创建a2dissite脚本
这两个脚本文件已经建立6后,确保它们是可执行文件,开始使用它们来启用或通过附加虚拟主机名作为参数的命令禁用虚拟主机。
# chmod +x /usr/local/bin/a2* # a2ensite vhost_name # a2disite vhost_name
7.要测试它,使前面创建的虚拟主机,重新启动Apache服务直接浏览到新的虚拟主机-在这种情况下,HTTP://rheltest.lan。
# a2ensite rheltest.lan # systemctl restart httpd
启用Apache Virtualhost
验证Apache Virtualhost
而已! 现在,作为系统命令来管理RHEL / CentOS 7.0Apache虚拟主机文件,您可以使用a2eniste和a2disite的bash脚本。