Назад | Перейти на главную страницу

Centos / vsFTPD / Nginx / php-fpm - в доступе отказано (внутренняя ошибка сервера 500)

У меня установлена ​​чистая минимальная версия Centos 6.4 (x64) (полностью обновлена).

После настройки ОС я последовал этому относительно простому руководству по настройке FTP: http://www.krizna.com/centos/how-to-configure-ftp-server-on-centos-6/

SELinux is disabled.
anonymous_enable=NO (vsFTPD Config)
chroot_local_user=YES (vsFTPD Config)

вместо создания локального пользователя linux в / ftp / [имя пользователя] (согласно руководству), я решил использовать стандартное расположение / home / [имя пользователя], где [имя пользователя] было сервер (в моей настройке)

Я протестировал свой FTP-сервер, он установлен и работает нормально /. Итак, я вошел на FTP и создал папку с именем «public_html», а затем создал внутри нее файл index.php с <?php phpinfo(); ?> код в нем. (Полный путь: /home/server/public_html/index.php)

Затем я установил nginx и php-fpm и приступил к созданию следующих файлов конфигурации для каждого в этом порядке.

/etc/php-fpm.d/server.conf (пул php-fpm для моего локального сервера nix acc:):

[server]

listen = '/var/run/php-fcgi-server.sock'
listen.allowed_clients = 127.0.0.1
user = server
group = server

pm = static
pm.max_children = 5
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 200

php_admin_value[error_log] = /var/log/php-fpm/server-php-errors.log
php_admin_flag[log_errors] = on
php_admin_flag[display_errors] = on

/etc/nginx/conf.d/dev-minecraft.local.conf (nginx vHost):

upstream serverbackend {
    server unix:/var/run/php-fcgi-server.sock;
}

server {
    listen *:80 default;
    server_name dev-minecraft.local;

    root /home/server/public_html;

    location / {
        index index.html index.php;
        try_files $uri $uri/ @handler;
        expires 30d;
    }

    client_max_body_size 10M;

    location  /. {
        return 404;
    }

    location @handler {
        rewrite / /index.php;
    }

    location ~ .php/ {
        rewrite ^(.*.php)/ $1 last;
    }

    location ~ .php$ {
        if (!-e $request_filename) { rewrite / /index.php last; }
        expires        off;
        fastcgi_pass   serverbackend;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Теперь, если я захожу на сайт без своего браузера: http: //dev-minecraft.local/ Я получаю следующую ошибку: внутренняя ошибка сервера 500

И я вижу следующие ошибки в своем /var/log/nginx/error.log файл:

2013/07/22 12:58:07 [crit] 2039#0: *1 stat() "/home/server/public_html/" failed (13: Permission denied), client: 192.168.1.15, server: dev-minecraft.local, request: "GET / HTTP/1.1", host: "192.168.1.54"
2013/07/22 12:58:07 [crit] 2039#0: *1 stat() "/home/server/public_html/" failed (13: Permission denied), client: 192.168.1.15, server: dev-minecraft.local, request: "GET / HTTP/1.1", host: "192.168.1.54"
2013/07/22 12:58:07 [crit] 2039#0: *1 stat() "/home/server/public_html/index.php" failed (13: Permission denied), client: 192.168.1.15, server: dev-minecraft.local, request: "GET / HTTP/1.1", host: "192.168.1.54"

Есть идеи, что я здесь делаю не так? Одна вещь, которую я заметил в WinSCP (после входа в систему через FTP), владелец / группа файла устанавливает числовой идентификатор (500) вместо имени пользователя учетной записи «сервер». Это причина, по которой nginx / php-fpm не может получить доступ к файлам сайта? Как я могу это исправить?

Разрешения /home/server запретить доступ никому, кроме его владельца. Что это drwx------ средства.

Чтобы решить эту проблему, разрешите другим пользователям спускаться в каталог.

chmod a+x /home/server

Определенно проблема с разрешением. Пользователь php-fpm и пользователь nginx должны иметь доступ для чтения к файлам в вашем каталоге. Также ваша конфигурация nginx немного проблематична. Пожалуйста, попробуйте следующее:

client_max_body_size    10M;
index index.html        index.php;

upstream serverbackend {
    server unix:/var/run/php-fcgi-server.sock;
}

server {
    server_name   dev-minecraft.local;
    root          /home/server/public_html;
    expires       30d;

    location / {

        location ~ \.php$ {
            expires         off;
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass    serverbackend;
        }

        try_files $uri $uri/ =404;
    }
}