关于Symfony2+nginx搭建过程总结

最近在试着用nginx+symfony搭建公司的网站,由于nginx不支持pathinfo模式,所以必须修改nginx(我使用的是nginx1.5.1)的配置文件/etc/nginx/config.d/default.conf以使其在逻辑上支持url逻辑路径到物理路径的映射,以下为我的default.conf文件内容:

 1 server {
2 listen 80;
3 server_name localhost;
4 location / {
5 root /usr/share/nginx/html/symfony/web;
6 index index.html index.htm index.php;
7 }
8 location ~ ^(.+\.php)(.*)$ {
9   root /usr/share/nginx/html/symfony/web;
10   fastcgi_index index.php;  
11    fastcgi_split_path_info ^(.+\.php)(.*)$;
12   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
13   fastcgi_param PATH_INFO $fastcgi_path_info;
14    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
15   fastcgi_pass 127.0.0.1:9000;
16   include fastcgi_params;
17 }
18}

  实现url的逻辑映射后,就可以在网页中看到实际效果了(注意图中被圈部分):
  

  但是,如果在prod模式下(即访问192.168.10.133/app.php/下的路径)时,提示出错“no route for get / ",这并不是我们的pathinfo配置出了问题(刚开始从这个方面着手,费老劲了),而是因为symfony2并没有为我们提供prod模式下的内容,我们需要修改symfony/app/routing.yml文件自己给他提供一个逻辑路径映射,如下为我从routing_dev.xml文件中拷过来的一个配置项:  

1 # AcmeDemoBundle routes (to be removed)
2 _acme_demo:
3 resource: "@AcmeDemoBundle/Resources/config/routing.yml"

  这样symfony就会在prod模式下就可以通过url逻辑映射得到src/Acme/DemoBundle/Resources/config/routing.yml文件(其内容如下所示),通过这个文件就可以找到@AcmeDemoBundle/Controller/DemoController.php文件从而显示出如上图所显示的效果了 

1 _demo:
2 resource: "@AcmeDemoBundle/Controller/DemoController.php"
3 type: annotation
4 prefix: /demo    

  但是,实际访问http://192.168.10.133/app.php/demo/hello/bean时,并没有显示出期望的效果,这时候又报了一个错误:
  Cannot import resource "/usr/share/nginx/html/symfony/src/Acme/DemoBundle/Resources/config/config.yml" from "/usr/share/nginx/html/symfony/app/config/config.yml".                                      

  网上搜了下,stackoverflow上给的答案大部分是让你在resource字段前面要缩进四个字符之类的,对我的问题不适用,后来发现在上面出错信息的后面还有一行字说要在AppKernel.php中注册AcmeDemoBundle之类的,于是找到/usr/share/nginx/html/symfony/app/AppKernel.php,发现有如下一句话:  

1 if (in_array($this->getEnvironment(), array('dev','test'))) {
2 $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
3 $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
4 $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
6 $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
7 }

   至此,大功告成,我们只需要修改array('dev','test')为array('dev','test','prod')即可,这样symfony就会在prod模式下也注册AcmeDemoBundle了,实验结果显示如下:
  

  本文系原创,转载请注明出处:http://www.cnblogs.com/beanmoon/p/3181733.html

发散你的思维; stay hungry, stay foolish
 

关于Symfony2+nginx搭建过程总结的更多相关文章

  1. Nginx搭建过程

    https://www.cnblogs.com/gscq073240/articles/6773000.html

  2. 【转】Nginx windows下搭建过程

    Nginx windows下搭建过程 内容列表: 简要介绍 下载安装 配置测试 一.简要介绍 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器, ...

  3. Kubernetes集群搭建过程中遇到的问题

    1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating &quo ...

  4. Nginx搭建flv视频点播服务器

    Nginx搭建flv视频点播服务器 前一段时间使用Nginx搭建的多媒体服务器只能在缓冲过的时间区域内拖放, 而不能拖放到未缓冲的地方. 这就带来了一个问题: 如果视频限速的速率很小, 那么客户端观看 ...

  5. [终极精简版][图解]Nginx搭建flv mp4流媒体服务器

    花了我接近3周,历经了重重问题,今日终于把流媒体服务器搞定,赶紧的写个博文以免忘记... 起初是跟着网上的一些教程来的,但是说的很不全面,一些东西也过时不用了(比如jwplayer老版本).我这次是用 ...

  6. Nginx搭建反向代理服务器

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器   一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受int ...

  7. Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 最近因为项目关系,收朋友之托,想制作秀场网站,但是因为之前一直没有涉及到这 ...

  8. Mac安装nginx配置过程

    mac电脑系统重装了,记录一下安装nginx的过程: 1.打开终端 2.安装Command Line tools xcode-select --install 3.安装brew命令 ruby -e & ...

  9. ftp&nginx搭建图片服务器

    下面使用ftp+nginx搭建一个简单的服务器 ftp用于文件的传输 nginx提供http服务 nginx服务器的安装和配置可以参照之前的教程:nginx安装及其配置详细教程 下面介绍ftp服务的安 ...

随机推荐

  1. $.each()方法详解

    $.each()方法详解 each()函数具有十分强大的遍历功能,可以遍历一维数组.多维数组.Dom.Json等. 在JavaScript中使用$.each可以大大减轻我们的工作量. 1.处理一维数组 ...

  2. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...

  3. SOD框架的数据容器,打造最适合DDD的ORM框架

    SOD框架的数据容器,打造最适合DDD的ORM框架 引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 <领域驱动设计系列(一):为何要领域驱动设计? >文章中有下面一段话,对DD ...

  4. Ubuntu加上一个命令搜索路径/etc/ environment

    编辑~/.bashrc文件,然后在最后加上你想设置的目录就可以了. 这样做之后就可以在终端中执行你想要的程序了,不过如果你使用其它程序在后台调用的话可能还是会调用不到,因为这个设置是针对bash有效的 ...

  5. DataUml Design 课程6-DataUML Design 1.1版本号正式宣布(支持PD数据模型)

    从DataUML Design正式宣布到现在两个月,因为最近忙,出版到现在为止1.1版本号.稍后我们将始终坚持以良好DataUML Design软件,我希望程序员有很多支持. 一.1.1新的和改进的版 ...

  6. 配置serv-u access数据库遇到的一些问题

    配置好access数据库后,需要建个web页面来供用户修改密码,但修改时,提示:odbc被占用无法打开. serv-u一直在保持打开access数据库.我们需要将数据库设置默认打开方式为共享,不锁定. ...

  7. java中dao层的通用层,通过反射机制,操作数据库的增删改,适用的范围是不包含属性类

    这里首先必须注意的是:类的类名.字段必须与数据库中的表名和字段名保持一致,否则无法通过反射机制作出通用层 /** * 学生信息类,数据库中的StuInfo表 * */public class StuI ...

  8. IS_EER分析

    下面我们就来具体分析一下这段代码,看看内核中的巧妙设计思路. 要想明白IS_ERR(),首先理解要内核空间.所有的驱动程序都是运行在内核空间,内核空间虽然很大,但总是有限的,而在这有限的空间中,其最后 ...

  9. SOA、ESB、NServiceBus、云计算

    SOA.ESB.NServiceBus.云计算 总结 SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统 ...

  10. 如果gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧

    如果著名的gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧: 万千合集站 http://www.hejizhan.com/ 里面除了镜像索引了gen.lib.rus.ec上的所有英文 ...