Какой самый простой способ включить PHP на nginx?

131

Какой самый простой способ включить PHP в nginx в Ubuntu 12.04?

Лучшее решение - это то, которое требует минимальной работы, в идеале просто установка пакета :)

Сорин
источник

Ответы:

141

Следующий метод поможет вам быстро начать работу с Ubuntu 12.04:

Установите зависимости:

sudo apt-get install php5-common php5-cli php5-fpm

Установите nginx:

sudo apt-get install nginx

Запустите nginx:

sudo service nginx start

Проверьте, что он работает (должен увидеть «Welcome to nginx!»)

sudo service nginx stop

В конфигурации вашего сайта nginx (/ etc / nginx / sites-available / default) измените строку в разделе сервера {}

index index.html index.htmк index index.php index.html index.htm.

Раскомментируйте строки в разделе server {}, начиная с

listen для ipv4 / ipv6 оба.

Прокрутите вниз там, где написано "location ~ .php {" и раскомментируйте строки, чтобы это выглядело так:

location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  include fastcgi_params;
}

sudo service php5-fpm restart sudo service nginx restart

Ваш корневой веб-каталог по умолчанию находится по адресу / usr / share / nginx / www (в соответствии с файлом конфигурации). (Видетьroot /usr/share/nginx/www;

(Примечание: Для Ubuntu 12.10 или новее, вам нужно будет заменить fastcgi_pass 127.0.0.1:9000;строку с этим , чтобы заставить его работать: fastcgi_pass unix:/var/run/php5-fpm.sock;)

papashou
источник
1
В качестве позднего примечания вы можете заставить 12.04 использовать сокет UNIX, как это делает 12.10+, отредактировав /etc/php5/fpm/pool.d/www.confи изменив строку прослушивания на listen = /var/run/php5-fpm.sock, а затем используя строку @ThomasW. упоминается.
Powerlord
@Powerlord Настройка по умолчанию для NGINX имеет обе строки и объясняет разницу между ними, вместо того, чтобы менять способ запуска PHP, вы можете просто изменить строку конфигурации в NGINX быстрее, и все работает.
Томас Уорд
@ThomasW. В настройках по умолчанию для NGINX обе строки также неверны в 12.04. php5-fpm требует первого метода из-за того, как php5-fpm настроен в 12.04. Это не изменилось на второй метод до 12.10. Чтобы заставить php5-fpm работать с nginx, как описано, вы должны изменить www.conf для fpm, как упомянуто в моем предыдущем сообщении.
Powerlord
@Powerlord Вы правы, это проблема, которую можно исправить, изменив документацию в файле конфигурации по умолчанию. Смотрите эту ошибку, которую я создал по этому вопросу . У меня еще не было возможности предложить исправление.
Томас Уорд
1
Это не работает для меня на Ubuntu 14.04. nginx говорит: «Произошла ошибка, страница, которую вы ищете, не найдена», что делать?
user3459110
46

РЕДАКТИРОВАТЬ: Как отметил Мэтт Браун, вас может заинтересовать этот более свежий пост:
Как установить Linux, Nginx, MySQL, PHP (стек LEMP) в Ubuntu 16.04


В ответ papashou в корректен на старой Ubuntu 12.04. Начиная с Ubuntu 12.10, конфигурация немного отличается. Вот что я сделал:

устанавливать

sudo apt-get install nginx php5-fpm

Включить PHP

Раскомментируйте следующие строки в файле конфигурации /etc/nginx/sites-available/default

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

Начать (или перезапустить)

sudo service php5-fpm restart
sudo service nginx restart

Контрольная работа nginx

Открытие этой ссылки http://localhostдолжно отображать «Добро пожаловать в nginx!»

Контрольная работа php

Создайте файл php:

  • Целевой путь - это вывод

    awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default
    

    например /usr/share/nginx/www

  • Напишите info.phpфайл с:

    echo '<?php phpinfo(); ?>' | \
        sudo tee /usr/share/nginx/www/info.php
    

    или как однострочник

    echo '<?php phpinfo(); ?>' | \
        sudo tee "$(awk -F' |;' '/^[^#]*root/ {print $2}' /etc/nginx/sites-available/default)/info.php"
    

Открытие http://localhost/info.phpдолжно отобразить страницу с информацией о PHP.

olibre
источник
3
Спасибо за это. Вот еще одна полезная ссылка: digitalocean.com/community/tutorials/… . И обратите внимание, что если вы хотите установить MySQL, вам также нужно будет запустить apt-get install php5-mysql(в дополнение к установке самого MySQL).
Мэтт Браун
1
Есть новая версия вышеупомянутой статьи для Ubuntu 16: digitalocean.com/community/tutorials/…
Мэтт Браун,