Und nun werde ich Euch zeigen, wie ich CakePHP 2.1.2 mit nginx versöhnte:
Jedoch muss ich dafür nichts wiederholfen, also guckt erstmal hier,
bei mir jedoch ohne spawn-cgi:
http://kevin.vanzonneveld.net/techblog/article/cakephp_and_nginx/
Ich werde nun den Code durchgehen und erklären, was ich gelernt habe bzw. was Ihr vielleicht machen müsstet:
Obig wird der absolute Pfad zum Wurzelverzeichnis von nginx gelegt.
Dieses ist bei CakePHP in cakephp/app/webroot.
Ich nutze hierfür immer nano in der Shell:
nano /etc/nginx/conf.d/default.conf
Mein Pfad unter Fedora sieht nun so aus:
root /usr/share/nginx/html/cakephp/app/webroot;
Der Rest ist geblieben, und ich wählte bewusst den default-Ordner von nginx, weil ich mir die Option offen halte möchte, Apache wieder laufen zu lassen.
Es macht nicht viel Sinn, weil ich so physikalisch zwei Ordner mit cakephp habe, aber diese Daten sind klein und ich trenne die beiden Server lieber, um für spätere Stolpersteine und Vergleiche vorzusorgen.
Die wesentlichen Daten sind ja sowieso in einer Datenbank gespeichert, worauf von beiden zugegriffen werden kann.
CakePHP kann aber nun eben auch über die URL angesprochen werden,
so beschreibt Ammelbruger et al ein Beispiel mit folgender ULR:
http://localhost/cakejobs/jobs
Hier ist webroot=cakejobs aber der Ordner jobs existiert nicht, wird aber normalerweise von htaccess umgeleitet.
Dies muss man nun nginx auch beibringen, also dass jede nicht vorhandene ULR als Argument an CakePHP weitergereicht wird:
Die nächste Veränderung zur Standardkonfiguration ist im nächsten Block zu sehen, der für das fastcgi sorgt:
Dort ist nämlich kein root mehr, sondern einfach die URL samt Port, wo der PHP-FastCGI-Parser lauert.
Ich hatte eine Weile gebraucht, um jene Seite zu finden;
und nach einigen Versuchen kopierte ich einfach deren Zeilen und ersetzte meine default.conf damit bis es dann klappte.
Wähle ich nun localhost an, springt mir CakePHP entgegen,
dass dann nur noch eingerichtet werden muss.
Ciao
Jedoch muss ich dafür nichts wiederholfen, also guckt erstmal hier,
bei mir jedoch ohne spawn-cgi:
http://kevin.vanzonneveld.net/techblog/article/cakephp_and_nginx/
Ich werde nun den Code durchgehen und erklären, was ich gelernt habe bzw. was Ihr vielleicht machen müsstet:
root /var/www/example.com/app/webroot;
index index.php index.html index.htm;
Obig wird der absolute Pfad zum Wurzelverzeichnis von nginx gelegt.
Dieses ist bei CakePHP in cakephp/app/webroot.
Ich nutze hierfür immer nano in der Shell:
nano /etc/nginx/conf.d/default.conf
Mein Pfad unter Fedora sieht nun so aus:
root /usr/share/nginx/html/cakephp/app/webroot;
Der Rest ist geblieben, und ich wählte bewusst den default-Ordner von nginx, weil ich mir die Option offen halte möchte, Apache wieder laufen zu lassen.
Es macht nicht viel Sinn, weil ich so physikalisch zwei Ordner mit cakephp habe, aber diese Daten sind klein und ich trenne die beiden Server lieber, um für spätere Stolpersteine und Vergleiche vorzusorgen.
Die wesentlichen Daten sind ja sowieso in einer Datenbank gespeichert, worauf von beiden zugegriffen werden kann.
CakePHP kann aber nun eben auch über die URL angesprochen werden,
so beschreibt Ammelbruger et al ein Beispiel mit folgender ULR:
http://localhost/cakejobs/jobs
Hier ist webroot=cakejobs aber der Ordner jobs existiert nicht, wird aber normalerweise von htaccess umgeleitet.
Dies muss man nun nginx auch beibringen, also dass jede nicht vorhandene ULR als Argument an CakePHP weitergereicht wird:
# Not found this on disk?
# Feed to CakePHP for further processing!
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.php?url=$1 last;
break;
}
Die nächste Veränderung zur Standardkonfiguration ist im nächsten Block zu sehen, der für das fastcgi sorgt:
location ~ \.php$ {
# fastcgi_pass unix:/tmp/php-fastcgi.sock;
fastcgi_pass 127.0.0.1:9000;
Dort ist nämlich kein root mehr, sondern einfach die URL samt Port, wo der PHP-FastCGI-Parser lauert.
Ich hatte eine Weile gebraucht, um jene Seite zu finden;
und nach einigen Versuchen kopierte ich einfach deren Zeilen und ersetzte meine default.conf damit bis es dann klappte.
Wähle ich nun localhost an, springt mir CakePHP entgegen,
dass dann nur noch eingerichtet werden muss.
Ciao
Kommentare
Kommentar veröffentlichen