设为首页 收藏本站
查看: 2743|回复: 0

[经验分享] mac下配置Apache虚拟域名方案,以及遇到的坑

[复制链接]

尚未签到

发表于 2017-12-25 13:07:26 | 显示全部楼层 |阅读模式
1、 配置Apache虚拟域名
  1.执行    sudo vi /etc/apache2/httpd.conf 开始配置httpd.conf 的文件;
  //配置listen 80端口(默认配置),此处可以修改监听端口,例如Listen 81
DSC0000.png

  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
DSC0001.png

  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  对每一个工程设置好读写权限;
   DSC0002.png

  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>
  

  我访问
DSC0003.png

  log报错:
  

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

  解决办法:
  修改<Directory /srv/lxyproject/wsgi/>中Allow from all为:Require all granted。
  这个问题是因为版本的原因,
  我的httpd版本为:
  

  [iyunv@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查看及修改文件权限以及相关
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427834-1-1.html 上篇帖子: Apache+php+mysql win7 64位安装的几个注意事项 下篇帖子: 解决 apache poi 转换 word(docx) 文件到 html 文件表格没边框的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表