Проблема с chroot в связке Nginx + PHP-FPM

Автор Sferg, 31 мая 2013, 18:58:06

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Sferg

Здравствуйте, господа.

Имеется совсем хиленькая железка: Intel DN2800MT + 4 Gb DDR3-1066 + 640 Gb HDD SATA2. На эту железку установлен Debian Wheezy. В настоящее время исправно работает в качестве Wi-Fi-роутера (точка доступа) + локальная сеть + FTP + Samba.

Недавно вот захотелось мне в дополнение ко всему поднять ещё и веб-серверок для экспериментов. Остановился на связке Nginx 1.4.1 (собранный) + PHP-FPM 5.4.4 (из штатного репозитория) + MySQL 5.5.31 (тоже из штатного репозитория).

Директория расположения сайтов у меня /home/kursk.dyndns.org/www.

Если разместить в /home/kursk.dyndns.org/www/ файл index.php со строчкой:
phpinfo();

то всё прекрасно открывается. Но если залить тот же phpBB3, то наблюдается белая страница. Если chroot убрать, то всё открывается нормально.

В чём может быть проблема? Уже 2 дня бьюсь. ???

Вот, собственно, мои конфиги для Nginx (с учётом chroot):

/etc/nginx/nginx.conf:

Открыть содержимое (спойлер)
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
timer_resolution 100ms;
worker_rlimit_nofile 8192;
worker_priority -5;
events {
worker_connections 1024;
use epoll;
}
http {
fastcgi_cache_path /tmp/fcgi-cache/ levels=1:2   keys_zone=one:20m;
client_body_buffer_size 1k;
client_header_buffer_size 1k;
client_max_body_size 3m;
large_client_header_buffers 2 2k;
limit_conn_zone $binary_remote_addr zone=slimits:5m;
limit_conn slimits 5;
sendfile on;
sendfile_max_chunk  128k;
postpone_output  1460;
server_names_hash_bucket_size 64;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
directio 10m;
send_timeout 10;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
error_log /var/log/nginx/error.log;
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
access_log  /var/log/nginx/access.log main;
gzip on;
gzip_min_length 1100;
#gzip_disable "msie6";
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_proxied any;
gzip_comp_level 4;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
[свернуть]

/etc/nginx/sites-available:

Открыть содержимое (спойлер)
server {
    listen 80;
    server_name *.kursk.dyndns.org;
    rewrite ^(.*)$ http://kursk.dyndns.org$1 permanent;
}
server {
    listen 80;
    server_name kursk.dyndns.org;
    root /home/kursk.dyndns.org/www;
    access_log /home/kursk.dyndns.org/logs/nginx_access.log;
    error_log /home/kursk.dyndns.org/logs/nginx_error.log;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444;
}
    include /etc/nginx/templates/main;
}
[свернуть]

Разумеется, симлинк на /etc/nginx/sites-enabled сделан.

/etc/nginx/templates/main

Открыть содержимое (спойлер)
index index.htm index.html index.php;
if ($host !~ ^(kursk.dyndns.org)$ ) {
    return 444;
}
location / {
    try_files $uri $uri/ /index.htm /index.html /index.php?q=$uri&$args;
}
location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ {
    access_log off;
    expires max;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_cache_min_uses 3;
fastcgi_cache_valid 200 301 302 304 5m;
fastcgi_cache_key "$request_method|$host|$request_uri";
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_param SCRIPT_FILENAME /$fastcgi_script_name;
}
location ~ /\.ht {
        deny  all;
}
location = /favicon.ico {
        log_not_found off;
        access_log off;
}
location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
}
location /phpmyadmin {
        root /usr/share/;
        index index.php index.html index.htm;
        location ~ ^/phpmyadmin/(.+\.php)$ {
                try_files $uri =404;
                root /usr/share/;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $request_filename;
                include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root /usr/share/;
}
}
location /phpMyAdmin {
        rewrite ^/* /phpmyadmin last;
}
[свернуть]

Далее, в файле /etc/php5/fpm/php.ini добавил строчки:
cgi.fix_pathinfo=0
display_errors=1


И, наконец, конфиг /etc/php5/fpm/pool.d/www.conf

Открыть содержимое (спойлер)
[www]
user = www-data
group = www-data
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 7
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 4
slowlog = /home/kursk.dyndns.org/logs/php_slow.log
request_slowlog_timeout = 3s
chroot = /home/kursk.dyndns.org/www
chdir = /
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
[свернуть]

* устное предупреждение: в следующий раз создавайте тему в тематическом разделе, qupl
С уважением.

Debian 10.2, kernel 5.3.13-1-pve x86_64 (WiFi-роутер)
Intel Pentium J5005, 16Gb DDR4-2400, UHD605, 1Tb HDD + 500Gb Ext. HDD

Debian 10.2, kernel 4.19.0-6 x86_64 (домашний ПК)
Intel Core i7-3770, 16Gb DDR3-1600, HD4000, 250Gb SSD + 2Tb HDD