使用 Apache 虚拟主机在 ubuntu 13.10 上设置 zf2

Posted

技术标签:

【中文标题】使用 Apache 虚拟主机在 ubuntu 13.10 上设置 zf2【英文标题】:zf2 setup on ubuntu 13.10 with Apache virtual host 【发布时间】:2014-03-21 05:26:01 【问题描述】:

我在 ubuntu 13.10 中配置 Zend 应用程序 (ZF2)。请按照以下步骤操作:

    将代码放入/var/www/,名称为zfapp

虚拟主机配置:

 <VirtualHost *:80> 
  ServerName zfapp.com DocumentRoot /var/www/zfapp/ 

  <Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
  </Directory> 

  ErrorLog /var/log/apache2/error.log 

   # Possible values include: debug, info, notice, warn, error, crit, 
   # alert, emerg. 
   LogLevel warn 
   CustomLog /var/log/apache2/access.log combined 

</VirtualHost>

    /etc/hosts为它创建虚拟主机

    127.0.0.1 zfapp.com

    /etc/apache2/sites-available/zfapp.cof中添加文件

    sudo a2enmod rewrite

    sudo a2ensite zfapp.conf

    sudo service apache2 restart

但是,当我浏览网站时 (zfapp.com/api/user/auth);它给出了以下错误:

未找到 在此服务器上找不到请求的 Url /api/user/auth

我有一个 javascript MVC 项目,我在其中使用 php 作为服务器端语言。

项目目录结构如下:

项目目录 javascriptMVC 文件夹-> 模型/控制器 jsfiles api 文件夹 -> Zend 项目

我创建了一个符号链接 api,它指向 javascriptMVC 目录内的api/public,我在 AJAX 调用 PHP 服务器时使用了它。喜欢/api/user/auth。相同的结构适用于旧的 Ubuntu 机器。

我认为这与 Apache 配置有关;还是我必须设置任何别名?

【问题讨论】:

你能打zfapp.com吗? 显示您的路线配置。 溃败?你的意思是等/主机? 我在 /etc/apache2/sites-available/zfapp.conf 中有 zfapp.conf 文件 ServerName zfapp.com DocumentRoot /var/www/zfapp/ 选项FollowSymLinks AllowOverride All ErrorLog /var/log/apache2/error.log # 可能的值包括:debug、info、notice、warn、error、crit、#alert、emerg。 LogLevel warn CustomLog /var/log/apache2/access.log 结合 【参考方案1】:

没有代码,很难诊断...

可能是url重写的问题:

你启用了 mod_rewrite 吗?

你设置AllowOverride All了吗?

【讨论】:

YES,使用 (sudo a2enmod rewrite) 启用它 也许是新的 Apache:13.10 附带 apache 2.4。你需要Require all granted "没有代码,很难诊断" 然后不要;这不是答案;而是两个应该是cmets的问题。【参考方案2】:

@Bilal 可能表示你的 ZF2 路由配置:http://framework.zend.com/manual/2.0/en/modules/zend.mvc.routing.html

【讨论】:

【参考方案3】:

谢谢大家,

我找到了问题。

在 apache 2.4.6 和 ubuntu 13.10 中,我们需要更新 apache2.conf 改变

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

并创建类似这样的虚拟主机文件,

<VirtualHost zfapp.com:80>
    ServerName zfapp.com

    DocumentRoot /var/www/zfapp/index

    <Directory /var/www/zfapp/index>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

    ErrorLog /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

我从以下位置找到了解决方案: https://askubuntu.com/questions/423514/how-to-enable-mod-rewrite-for-virtual-host

顺便说一句,谢谢@Bilal,@jmleroux

【讨论】:

如果你仍然有这个配置的 500 错误,就像我一样,尝试启用模块重写:sudo a2enmod rewrite

以上是关于使用 Apache 虚拟主机在 ubuntu 13.10 上设置 zf2的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Apache 2.4/ubuntu 13.10 及更高版本设置虚拟主机?

ubuntu 13.10 和 apache 2.4.6 上的虚拟主机

升级到 Ubuntu 13.10 后 Apache 不使用 DocumentRoot(使用显示“它可以工作!”的默认页面)

升级到 Ubuntu 13.10 后,Apache 上的 laravel 项目出现 403 错误

无法使用 Apache 2.4 创建虚拟主机

VirtualHost 始终在 Ubuntu 14.04 上使用 Apache 返回默认主机