Прежде всего: я не эксперт в настройке. Это очень ново для меня, поэтому заранее приношу свои извинения.
На работе у нас есть сервер 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.