2013-05-28 1 views
1

Я потратил более 6 часов на эту проблему.Конфигурация nginx. Проект Yii в отдельном каталоге [не в корне]

У меня есть сервер nginx/1.2.7 и php-fpm на 127.0.0.1:9000. У меня есть базовый Nginx конфигурации:

server 
{ 
    listen 80; 
    server_name example.org www.example.org; 

    index index.php index.html; 

    access_log /srv/www/example.org/logs/access.log; 
    error_log /srv/www/example.org/logs/error.log; 

    location/
    { 
     root /var/www/html/example.org/public_html; 
     try_files $uri $uri/ /index.php; 

     location ~ \.php$ 
     { 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_param PATH_INFO $fastcgi_script_name; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      include fastcgi_params; 
     } 
    } 

И он отлично работает! Все файлы php работают так, как должны.

Но у меня есть отдельный yii-проект, который необходимо выполнить в другой, кроме основной корневой папки. И я эту конфигурацию добавлен в нижней части:

Где /srv/www/example.org/yiitest - это корень yiitest проекта (с «защитой» папки и другие внутри него).

location /yiitest 
    { 
     root /srv/www/example.org/yiitest; 
     try_files $uri $uri/ /index.php?$args; 

     location ~ \.php$ 
     { 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_param PATH_INFO $fastcgi_script_name; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index index.php; 
      include fastcgi_params; 
     } 
    } 

Но это не сработает. У меня есть «Файл не найден». И максимум, что я могу получить, это: example.org/yiitest/, главная страница работает нормально. И если я перейду к example.org/yiitest/site/contact/, я получу файл не найден. :(

Я не могу понять, как правильно настроить юй-проект в отдельном подкаталоге сервера.

+1

Я перед такой же проблемой. Вы нашли решение? –

ответ

1
  1. создать символическую ссылку

    cd /var/www/html/example.org/public_html 
    ln -s ../yiitest/public yiitest 
    
  2. настроить Nginx

    root /var/www/html/example.org/public_html; 
    
    location/{ 
        ... 
    } 
    
    location /yiitest/ { 
        index index.php; 
    
        # front end 
        if (!-e $request_filename) { 
         rewrite ^(.*)$ /yiitest/index.php last; 
         break; 
        } 
    } 
    
    location ~ \.php$ { 
        fastcgi_pass 127.0.0.1: 9000; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
        fastcgi_param PATH_INFO  $fastcgi_script_name; 
        include fastcgi_params; 
    } 
    
  3. Затем настройте yii framework. Вы должны установить 'basePath' в своей конфигурации:

    <?php 
    return array(
        'basePath' => 'yiitest', 
        ... 
    );