1、 配置Apache虚拟域名

   1.执行    sudo vi /etc/apache2/httpd.conf 开始配置httpd.conf 的文件;

      //配置listen 80端口(默认配置),此处可以修改监听端口,例如Listen 81

      

     2.打开相应 LoadModule

LoadModule userdir_module libexec/apache2/mod_authn_core.so   //默认已经打开
LoadModule php5_module libexec/apache2/mod_authz_host.so //默认已经打开,供基于主机名、IP地址、请求特征的访问控制
LoadModule userdir_module libexec/apache2/mod_userdir.so //允许用户从自己的主目录中提供页面(使用"/~username")
LoadModule php5_module libexec/apache2/libphp5.so //php模块

    3.配置Document路径执行你的工程目录文件(重要)    

DocumentRoot "/Users/mac0011/Desktop/apatcl"
<Directory "/Users/mac0011/Desktop/apatcl">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks Multiviews
MultiviewsMatch Any #
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All #
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
 1.设置AllowOverride None 改为 AllowOverride All;

  2.  Apache2.2版本写法
Order allow,deny
allow from all
Apache2.4版本写法,注意只需要这一句话就可以了
Require all granted 

    

    4.打开虚拟域名配置文件,把#Include /private/etc/apache2/extra/httpd-vhosts.conf中的#去掉

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

      

    5.配置httpd-vhosts.conf文件  执行 sudo vi /etc/apache2/extra/httpd-vhosts.conf

     

NameVirtualHost 127.0.0.1:80

<Directory "/Users/mac0011/Desktop/apatcl">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks Multiviews
MultiviewsMatch Any #
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All #
# Controls who can get stuff from this server.
#
# Order allow,deny
Require all granted
</Directory> <VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/Users/mac0011/Desktop/apatcl"
ServerName hailong.com
ErrorLog "/Users/mac0011/Desktop/apatcl/error_log"
CustomLog "/Users/mac0011/Desktop/apatcl/access_log" common
# <Directory "/Users/mac0011/Desktop/apatcl">
# Options Indexes FollowSymLinks Multiviews
# AllowOverride All
# Require all granted
# </Directory>
</VirtualHost>

1.NameVirtualHost 127.0.0.1:80,使用NameVirtualHost 配置具体的域名ip;  127.0.0.1指本机ip即回调地址;

2.如果配置的多个虚拟域名为同一工程目录下,可以将<Directory></Directory>提出来,放到上面同一配置,也可以单独为每一个虚拟域名 单独配置

3.<Directory></Directory>中添加Require all granted.Apache 2.2版本的参考上面的写法;

    6.配置hosts文件 执行sudo vi /etc/hosts

    

   

    7.重启Apache,sudo apachectl restart

    8.其他:

       httpd -S  可以定位一下,apache配置过程中的出现的配置问题

OK!!至此,完成apache虚拟域名的配置

  

 2、 遇到的坑,关于403拒绝访问的解决方案

    1.apache2.2和apache2.4配置不同处理问题

       Apache2.2版本写法
Order allow,deny
allow from all
  Apache2.4版本写法,注意只需要这一句话就可以了
Require all granted 
本次在配置时遇到的主要问题就是,楼主在apache2.4版本时单纯的把allow from all替换成了 Require all granted,而没有吧 order allow deny给屏蔽掉,导致访问的时候一直出现403的错误;主要还是太粗心了;    2.配置多个虚拟域名时,尽量不要采用通配符 *,使用
NameVirtualHost为这个基于域名的虚拟主机指定IP地址集
  也在/etc/hosts上分别为两个虚拟主机指向了本机IP127.0.0.1,但是第一个虚拟主机总是会覆盖第二个甚至覆盖localhost,效果就是不管访问那个域名最后都会指向dummy-host1.example.com域名的应用,
最后弄了好久才发现要在同一ip上配多个基于域名的虚拟主机需要这样做,必须用NameVirtualHost指令为这个基于域名的虚拟主机指定IP地址集,而且每一个虚拟主机不能使用*通配符,必须指定ip

   

     3.工程目录权限的问题(记住是每一级的目录都要设置)

                  chmod 755或者chmod 777或者chmod o+x  对每一个工程设置好读写权限;

                   

  4、 虚拟目录

    【这个问题我没遇到过,因为我没这样写过,网上资料这么写,可作为参考】

    如果设置的是虚拟目录,那么你需要在httpd.conf中定义一个虚拟目录,而且像极了如下的片段:

    Alias /folder "/usr/local/folder"                       
    <Directory "/usr/local/folder">                         
      Options FollowSymLinks                            
      AllowOverride None                              
      Order deny,allow                               
      Deny from all                                 
      Allow from 127.0.0.1 192.168.1.1                       
    </Directory>   

如果是这一种情况,而且你写得类似我上面的代码,三处folder都是一样一样的,那绝对会是403!怎么解决呢,就是把跟在Alias后面斜杠后面的那串改了,改成什么,不要和虚拟目录的文件夹同名就好,然后我就可以用改过后的虚拟目录访问了,当然,改文件夹也行,只要你不怕麻烦,只要Alias后面的虚拟目录定义字符(红色)和实际文件夹名(黑色)不相同就OK。

   5、selinux的问题

     如果依然是403,那就是selinux在作怪了,于是,你可以把你的目录进行一下selinux权限设置。

      今天我遇到的就是这个问题了。

      #chcon -R -t httpd_sys_content_t /usr/local/site#chcon -R -t httpd_sys_content_t /usr/local/site/test

    网上资料说不过,这一步大多不会发生。但我的问题确实是,可能跟系统有关,具体原理还不是很懂。

  6、wsgi的问题

  我的虚拟主机配置为:

  <VirtualHost *:80>
   WSGIScriptAlias / /srv/lxyproject/wsgi/django.wsgiAlias /static/ /srv/lxyproject/collectedstatic/ServerName 10.1.101.31
#ServerName example.com#ServerAlias www.example.com
   <Directory /srv/lxyproject/collectedstatic>  
    Options Indexes FollowSymLinks
     AllowOverride None
    Require all granted
   </Directory>
   <Directory /srv/lxyproject/wsgi/>
    Allow from all
   </Directory>
    ErrorLog /etc/httpd/logs/lxyproject.error.logLogLevel warn
  </VirtualHost>

  我访问

log报错:

  client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

  解决办法:

  修改<Directory /srv/lxyproject/wsgi/>中Allow from all为:Require all granted

这个问题是因为版本的原因,

  我的httpd版本为:

  [root@yl-web conf.d]# rpm -qa |grep httpdhttpd-devel-2.4.6-31.el7.centos.x86_64httpd-tools-2.4.6-31.el7.centos.x86_64httpd-2.4.6-31.el7.centos.x86_64

  而2.3以下版本用Allow from all,2.3及以上版本为Require all granted。

  <Directory /home/aettool/aet/apache>  <IfVersion < 2.3 >   Order allow,deny   Allow from all  </IfVersion>  <IfVersion >= 2.3>   Require all granted  </IfVersion></Directory>

  参考:http://stackoverflow.com/questions/17766595/403-forbidden-error-with-django-and-mod-wsgi

  7.添加多个类型的文件

    修改前

    <IfModule dir_module>

     DirectoryIndex index.html

    </IfModule>

    修改后:

    <IfModule dir_module>

      DirectoryIndex index.php index.php3 index.html index.htm

    <IfModule dir_module>

 3、 相关参考博客      

  https://wiki.apache.org/httpd/ClientDeniedByServerConfiguration

  http://www.cnblogs.com/AloneSword/archive/2013/03/01/2939564.html

  https://discussions.apple.com/docs/DOC-3083                

  http://www.th7.cn/system/lin/201507/122784.shtml          //apache httpd服务器403 forbidden的问题

  http://blog.csdn.net/yanzi1225627/article/details/45075265  //如何将apache的这个默认目录更改到用户目录下。 

  http://www.cnblogs.com/wenqiangwu/archive/2013/09/12/3317030.html   //linux查看及修改文件权限以及相关

      











mac下配置Apache虚拟域名方案,以及遇到的坑的更多相关文章

  1. mac下配置Apache虚拟域名方案,以及遇到的坑(转)

      1. 配置Apache虚拟域名 1.执行    sudo vi /etc/apache2/httpd.conf 开始配置httpd.conf 的文件; //配置listen 80端口(默认配置), ...

  2. Mac下配置Apache Httpd的Https/SSL

    Mac下配置Apache Httpd的Https/SSL httpd版本: httpd-2.4.17 jdk版本: jdk1.8.0_65 参考来源: Mac下安装Apache Httpd Mac O ...

  3. 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk

    Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...

  4. 【高可用HA】Apache (3) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_proxy

    Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_proxy httpd版本: httpd-2.4.17 参考来源: Apache (1) -- Mac下安装Apac ...

  5. Mac下配置Apache,PHP

    注:如果觉得终端下编辑太麻烦,也可以直接将文件拖出来手动编辑后在放回原文件夹替换即可 1.启用Apache: 在Mac下打开终端,输入“sudo apachectl start”(不包含引号,下同) ...

  6. Mac下配置Apache服务

    这篇文章主要是针对Mac用户,第一次搭建本地开发环境的同学,已经搭建过的同学可以忽略. Mac自带的Apache还是XAMPP? That is a question. 其实自带的apache也够用了 ...

  7. Mac下配置apache

    一.前言 今天遇到问题,怎么配置apache在Mac上,原来Mac自带apache,只需要自己开启配置一下就行了. 二.步骤: 1.修改apache的http_conf文件 打开finder前往/pr ...

  8. mac下 配置 Apache Php Mysql

    参考 http://www.guomii.com/posts/30136 参考 http://forums.mysql.com/read.php?11,600754,600754 MacOS 10.8 ...

  9. Wamp环境下配置--Apache虚拟主机

    1.首先打开apache的配置文件httpd.conf,并去掉#Include conf/extra/httpd-vhosts.conf前面的#,启用虚拟主机功能 # Virtual hosts In ...

随机推荐

  1. 终端命令行开启和关闭mac隐藏文件

    defaults write com.apple.finder AppleShowAllFiles -bool true 此命令显示隐藏文件defaults write com.apple.finde ...

  2. How to Repair GRUB2 When Ubuntu Won’t Boot

    Ubuntu and many other Linux distributions use the GRUB2 boot loader. If GRUB2 breaks—for example, if ...

  3. jvm系列四、jvm知识点总结

    原文链接:http://www.cnblogs.com/ityouknow/p/6482464.html jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 ...

  4. 【转】C Runtime Library的来历

    由于我看到的文章也是转载且未提供原文链接,所以这里没有提供原文链接! msvcrt.dll(名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy ...

  5. ORA-01017: invalid username/password; logon denied 解决方案

    在SQLPLUS窗口下进行用户登录,出现ORA-01017:invalid username/password:logon denied .如下图: 在网上找了很久,发现一个实用的解决方案,操作如下: ...

  6. centos常用网络管理命令

    网卡配置命令:ifconfig (ip addr , ip link) ifconfig:显示所有活动状态的相关信息    ifconfig Interface:仅显示指定接口的相关信息    ifc ...

  7. 使用console进行 性能测试 和 计算代码运行时间

    原文:http://www.tuicool.com/articles/JrARVjv 对于前端开发人员,在开发过程中经常需要监控某些表达式或变量的值,如果使用用 debugger 会显得过于笨重,最常 ...

  8. 中文多分类 BERT

    直接把自己的工作文档导入的,由于是在外企工作,所以都是英文写的 Steps: git clone https://github.com/google-research/bert prepare dat ...

  9. C#面向对象(封装)

    以上就是面向对象的封装和初始化:

  10. CCF2014123集合竞价(C语言版)

    问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量. 该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种: 1. buy p s 表示一个 ...