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


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

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


126
2018-05-09 22:39


происхождения




ответы:


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

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

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

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

sudo apt-get install nginx

Начать nginx:

sudo service nginx start

Проверьте, что он работает (см. «Добро пожаловать в nginx!»)

sudo service nginx stop

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

index index.html index.htm в index index.php index.html index.htm,

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

listen для ipv4 / ipv6 оба.

Прокрутите вниз до места, где указано «местоположение ~ .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; line с этим, чтобы заставить его работать: fastcgi_pass unix:/var/run/php5-fpm.sock;)


135
2018-05-09 23:07



Как последнее примечание, вы можете сделать 12.04 использовать UNIX-сокет, например 12.10+, путем редактирования /etc/php5/fpm/pool.d/www.conf и изменение линии прослушивания на listen = /var/run/php5-fpm.sock, затем используя строку @ThomasW. упоминается. - Powerlord
@Powerlord. Настройка по умолчанию для NGINX имеет обе строки и объясняет разницу между ними, вместо того, чтобы изменять, как работает PHP, вы можете просто быстрее изменить конфигурационную строку в NGINX, и все работает. - Thomas Ward♦
@ThomasW. Описание настроек обеих линий NGINX по умолчанию также неверно в 12.04. php5-fpm требует первого метода из-за того, как php5-fpm настроен в 12.04. Второй способ не изменился до 12.10. Чтобы заставить php5-fpm работать с nginx как задокументировано, вам нужно изменить fpm's www.conf, как указано в моем предыдущем сообщении. - Powerlord
@Powerlord. Вы правы, это проблема, которая может быть исправлена ​​путем изменения документации в файле конфигурации по умолчанию. Видеть эта ошибка, которую я создал по этой проблеме, У меня еще не было возможности предложить исправление. - Thomas Ward♦
Это не работает для меня на ubuntu 14.04. nginx говорит: «Произошла ошибка, страница, которую вы ищете, не найдена», что делать? - Awal Garg


РЕДАКТИРОВАТЬ: Как указывалось Мэтт Браун вам может быть интересно это последнее сообщение:
Как установить Linux, Nginx, MySQL, PHP (LEMP stack) в 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.


46
2018-03-07 04:39



Спасибо за это. Вот еще одна полезная ссылка: digitalocean.com/community/tutorials/..., Обратите внимание, что если вы хотите установить MySQL, вам также нужно будет запустить apt-get install php5-mysql (в дополнение к установке самого MySQL). - Matt Browne
Для Ubuntu 16 есть новая версия этой статьи: digitalocean.com/community/tutorials/... - Matt Browne