Я пытался получить lithium
работает с Nginx безуспешно. Структура каталогов lithium
как это
lithium
|-> app libraries .htaccess
|-> webroot .htacess --other directories
|-> index.php .htaccess --other files
Я скопировал lithium
папку в мою /var/www/
. Путь лития есть /var/www/lithium/
Теперь я настроил правила перезаписи таким образом в моем nginx.conf
server {
listen 80;
server_name localhost;
root /var/www/;
location /lithium {
rewrite ^/$ /app/webroot/ break;
rewrite ^(.*)$ /app/webroot/$1 break;
}
location /lithium/app {
rewrite ^/$ /webroot/ break;
rewrite ^(.*)$ /webroot/$1 break;
}
location /lithium/app/webroot {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?url=$1 break;
}
}
...then my php and other configurations
Но nginx всегда выдает 404
ошибка. Почему так происходит?
Я тоже пробовал это
server {
listen 80;
server_name localhost;
root /var/www/;
location /lithium {
if (!-e $request_filename) {
rewrite ^/lithium/(.+)$ /lithium/app/webroot/$1 last;
break;
}
}
location /lithium/app/webroot {
if (!-e $request_filename) {
rewrite ^/lithium/app/webroot/(.+)$ /lithium/app/webroot/index.php?url=$1 last;
break;
}
}
...then my php and other configurations
Но снова есть 404
ошибка.
редактировать
Так как предложил я изменил корень моего сервера на /var/www/lithium/app/webroot
так что мой nginx conf выглядит так
server {
listen 80;
server_name localhost;
root /var/www/lithium/app/webroot;
access_log /var/log/lithium/access.log;
error_log /var/log/lithium/error.log warn;
index index.php index.html;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$
{
.. ...
......
}
теперь я могу видеть дом лития, но когда я перехожу к тестовой приборной панели лития, которая http://localhost/test
он снова показывает дом лития вместо тестовой панели. Когда я использую apache и перехожу по URL http://localhost/test
это показывает мне test dashboard
. Так что правила перезаписи nginx все еще не совсем верны. root
к lithium's webroot
я не могу получить доступ к другим каталогам в моем /var/www/
Отредактировал Агиан
Это мой полный серверный блок
server {
server_name lithium;
root /var/www/lithium/app/webroot;
access_log /var/log/nginx/lith.access.log;
error_log /var/log/nginx/lith.error.log;
listen 127.0.0.2:80;
rewrite_log on;
# rewrite rules for lithium
location / {
index index.php index.html;
try_files $uri $uri/ /index.php?url=$uri&$args;
}
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;
}
}
Я использую php 5.4.3. как php-fpm. Я пробовал делать то, что упоминалось на официальном сайте лития Вот но я не понимаю эту строку
cp -f sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
какое место sapi
ссылаясь на? Любые идеи?
try_files $uri $uri/ /index.php?$args;
Вы не передаете URI в Lithium - вы добавляете строку запроса, которая пуста. Вероятно, вам понадобится следующее:
try_files $uri $uri/ /index.php?url=$uri&$args;
Предполагая, что Lithium ожидает вызова с index.php?uri=/test
(что подразумевает ваша исходная конфигурация).
редактировать: The Литий вики предлагает верх try_files
строка, что означает, что он проверяет переменные FastCGI, чтобы определить URL-адрес для обслуживания.
Было бы проще просто указать на веб-корневой каталог, используя root /var/www/lithium/app/webroot
.
Или вы можете сделать следующее.
root /var/www
тогда используйте try_files
вместо уродливого if
s:
index index.php index.html;
location ~ \.php$ {
...
}
location lithium/app/webroot/ {
try_files $uri $uri/ /lithium/app/webroot/index.php?$args;
}
location /lithium/app/ {
rewrite ^/lithium/app/(.*)$ /lithium/app/webroot/$1;
}
location /lithium/ {
rewrite ^/lithium/(.*)$ /lithium/app/webroot/$1;
}
location / {
rewrite ^(.*)$ /lithium/app/webroot/$1;
}
Не забудьте защитить другие каталоги.
Я думаю, вы неправильно указываете путь. Попробуйте запустить только базовую конфигурацию nginx: http://lithify.me/docs/manual/configuration/servers/nginx.wiki
Также может быть полезно включение ошибок php. Ошибки конфигурации, такие как установка пути к литиевым библиотекам, не очевидны, если у вас не включены ошибки php.
#include /etc/nginx/fastcgi_params;
Вы не включаете файл конфигурации, который устанавливает большинство переменных FastCGI, переданных в PHP, поэтому Lithium, вероятно, не сможет определить, какой URL-адрес запрашивается. Раскомментируйте эту строку и переместите ее над SCRIPT_FILENAME
строка, чтобы ваш блок выглядел так:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $host;
}