Nasıl CakePHP CentOS üzerinde çalışma almak için nginx kuralları yeniden yapılandırmak mı?

4 Cevap php

Merhaba Biri bana yardım edin, ben Gerçek CGI ile Nginx çalıştıran bir Centos sunucu üzerinde kurulum için cakephp ortam çalışıyorum. Ben zaten bu yüzden PHP düzgün yapılandırılmış sunucu ve phpmyadmin sitede çalışan bir wordpress sitesi var.

Benim sorunum pasta çok düzgün styling yani sayfalarını oluşturur ve böylece benim sankondan doğru yazma kuralları kurulum alınamıyor olmasıdır. Ben mümkün olduğu kadar google'dan ve aşağıda listelenen gibi sitelerden ana konsensüs ben yerine aşağıdaki yeniden yazma kuralı olması gerekir olduğunu

location / {
          root   /var/www/sites/somedomain.com/current;
          index  index.php index.html;

          # If the file exists as a static file serve it 
          # directly without running all
          # the other rewrite tests on it
          if (-f $request_filename) { 
            break; 
          }
          if (!-f $request_filename) {
            rewrite ^/(.+)$ /index.php?url=$1 last;
            break;
          }
        }

http://blog.getintheloop.eu/2008/4/17/nginx-engine-x-rewrite-rules-for-cakephp

Sorun, bu yeniden yazma ben yapmak istiyorum ne değildir webroot doğrudan dışarı pasta koşmak farz değildir. Ben şu klasörleri yedekleme, özel ve kamu, log içeren site başına bir klasöre yani her site için standart bir kurulum var. Nginx hizmet etmek dosyaları için arıyor ama ben kek kamu bağlayan bir sembolik bağ ile özel arka / / özel pasta için yüklü Kamu varlık /

bu benim vhost olduğunu

server {
            listen      80;
            server_name app.domain.com;

            access_log /home/public_html/app.domain.com/log/access.log;
            error_log /home/public_html/app.domain.com/log/error.log;

  #configure Cake app to run in a sub-directory
  #Cake install is not in root, but elsewhere and configured
  #in APP/webroot/index.php**

                location /home/public_html/app.domain.com/private/cake {
                index index.php;

    if (!-e $request_filename) {
        rewrite ^/(.+)$ /home/public_html/app.domain.com/private/cake/$1 last;
        break;
    }
}

                location /home/public_html/app.domain.com/private/cake/ {
                index index.php;

    if (!-e $request_filename) {
        rewrite ^/(.+)$ /home/public_html/app.domain.com/public/index.php?url=$1 last;
        break;
        }
}

         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME /home/public_html/app.domain.com/private/cake$fastcgi_script_name;
            include        /etc/nginx/fastcgi_params;
        }

 }

Dediğim gibi şimdi ben pasta ana index.php görebilir ve benim DB bağladıktan ama ben doğru yapılandırmak istiyorsanız başka geçmeden önce bu yüzden bu sayfayı stil olmadan. Ben yanlış ne yapıyorum?

Teşekkürler seanl

4 Cevap

Bir bakışta, senin sorunun sizin app webroot için nginx işaret etmiyor olabilir. Kök kek klasörüne Dağıtma gerçekten herhangi bir web sunucusu altında gitmek için yol değildir.

Aşağıdaki Ben Cake çalışan uygulamaları kullanmak tam bir sunucu-bloktur. Gerçekte ben sadece ilk dört satır var ve daha sonra ayrı bir dosya "cakephp.inc" dan kalan içerir.

Hat üzerine bir not "fastcgi_param SERVER_NAME $ ev sahibi;". Benim apps bazı $ _SERVER ['SERVER_NAME'] kullanmak ve Apache gibi nginx aynı anlamı yok çünkü bu. Youe sunucu birkaç server_name (lar) varsa tanımlanmış nginx her php ilkini geçecek.

server { 
    server_name  cakeapp.example.com;
    root   /var/www/vhosts/cake/app/webroot;
    access_log  /var/log/nginx/cakeapp.access.log;
    error_log   /var/log/nginx/cakeapp.error.log;

    listen       80;
    rewrite_log on;

    # rewrite rules for cakephp
    location / {
        index  index.php index.html;

        # If the file exists as a static file serve it 
        # directly without running all
        # the other rewite tests on it
        if (-f $request_filename) { 
            break; 
        }
        if (!-f $request_filename) {
            rewrite ^/(.+)$ /index.php?url=$1 last;
            break;
        }
    }

    location ~* \favicon.ico$ {
        expires 6m;
    }
    location ~ ^/img/ { 
        expires 7d; 
    } 

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SERVER_NAME $host;
    }

    location ~ /\.ht {
        deny  all;
    }
}

official documentation on this issue, ki ben eserlerini kullandıkları ve teyit şimdi var.

Ben bu çalışma var:

root DIR/app/webroot/;
location / {
    index index.php index.html;
    rewrite ^/$ /index.php?url=/;
    if (!-e $request_filename) {
        rewrite ^(/.*)$ /index.php?url=$1 last;
    }
}

ve sonra php ve malzeme için ders işleyicileri ...

O zaman etrafında olabilir, bu yazının tarih oluyor - CakePHP 1.2 eski bir sürümünü çalıştıran bir CakePHP sitesi kurma konularında bir grup vardı. Geçenlerde blogged bu konuda ve sadece yükseltme önermek veya Cake kütüphanede taze bir sürümünü ve tüm sorunları yükleme gitti.