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

Проблема с настройкой php-fpm с nginx

Прежде всего: я не эксперт в настройке. Это очень ново для меня, поэтому заранее приношу свои извинения.

На работе у нас есть сервер Centos. Парень, который работал здесь до того, как установил nginx. Нам нужно создать сайт на php, поэтому, очевидно, мне нужно настроить php и заставить его работать с nginx.

Короче говоря, очень длинный рассказ: мне пришлось заменить двоичный файл nginx на новый (потому что старый компилировался без fast-cgi), и мне пришлось перекомпилировать и установить php (потому что в новой версии есть fpm). Затем я борюсь с файлами конфигурации, делая этот nginx.conf (не весь файл)

user php;
location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
     }

и раскомментируйте некоторые параметры в php-fpm (здесь много подробностей, но важно, чтобы группа и пользователь были "php")

Ни разу не смог запустить php-fpm с инструкциями книги

sudo /usr/sbin/php-fpm start

Но посмотрев в сети, я обнаружил это

sudo /usr/local/sbin/php-fpm --fpm-config=/usr/local/etc/php-fpm.conf

Это сработало (я думаю)

Я перезапустил nginx. Но ... с php ничего не происходит ... Мои вызовы php-файлов (через firefox) даже не отображаются в журнале (/opt/nginx/logs/error.log)

Я очень, очень измучен и потерян ... Кто-нибудь может мне помочь, пожалуйста .... :(

заранее спасибо

прежде всего убедитесь, что php-fpm прослушивает порт 9000: netstat -an | grep LISTEN | grep 9000, если он возвращает что-то вроде: tcp 0 0 127.0.0.1:9000 0.0.0.0:* СЛУШАТЬ, тогда php-fpm работает, и вам следует проверить конфигурацию nginx. т.е. проверьте, правильно ли вы определили server_name. он должен быть таким же, как вы вводите его в браузере. Если вы используете другие URL-адреса, кроме localhost, убедитесь, что у вас есть правильная запись DNS для этих URL-адресов. моя конфигурация для php-fpm:

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/somesite/htdocs$fastcgi_script_name;
        fastcgi_param  DOCUMENT_ROOT  /var/www/somesite/htdocs;
        include        /etc/nginx/fastcgi_params;
    }

этот конфиг работает на многих моих сайтах.

    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            include /etc/nginx/fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass localhost:9000;
    }

У меня это работает на nginx 0.8.54. "Fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;" вероятно, единственное, что вам нужно изменить. Он использует директиву root /var/www/example.com/yoursite в конфигурации вашего сервера. Раньше у меня были ошибки, когда я подавал только белую страницу. Обычно ошибки можно увидеть в /var/log/nginx/error.log. Кроме того, вы настроили php-fpm для работы через TCP-порт или сокет? Проверьте свой php-fpm.conf, я думаю, что по умолчанию используется TCP-порт 9000. эта страница nginx.org имеет целый набор конфигураций по умолчанию для различных веб-приложений с открытым исходным кодом (wordpress, drupal и т. д.).

Я считаю, что php-fpm и fastcgi - это два разных способа интеграции nginx и PHP. Я считаю, что нужно использовать тот или иной метод. Это руководство по CentOS должно помочь вам ориентироваться в использовании fastcgi. http://library.linode.com/web-servers/nginx/php-fastcgi/centos-5

Я успешно выполнил аналогичную статью из их библиотеки, чтобы настроить Nginx / fastcgi / PHP на Ubuntu.