Каков самый простой способ включить PHP на nginx в Ubuntu 12.04?
Лучшее решение - это то, которое требует минимальной работы, в идеале просто установки пакета :)
Каков самый простой способ включить PHP на nginx в Ubuntu 12.04?
Лучшее решение - это то, которое требует минимальной работы, в идеале просто установки пакета :)
Следующий метод поможет вам быстро начать работу с 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.
Прокрутите вниз до того места, где написано 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;
)
РЕДАКТИРОВАТЬ: Как указано в Мэтт Браун возможно, вас заинтересует это более свежее сообщение:
How To Install Linux, Nginx, MySQL, PHP (LEMP stack) in Ubuntu 16.04
То ответ папашу правильно на старой 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 restartsudo 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.
sudo apt install nginx php-fpm
Обратите внимание на версию fpm или проверьте php -v
. 7.3.11-0ubuntu0.19.10.3 (cli) в моем случае.
sudo nano /etc/nginx/sites-available/default
Установите правильный root
папка.
Добавь index.php
к index
директива.
Раскомментируйте обработчик местоположения для php, но оставьте строку "php-cgi" прокомментированной, если вы используете php-fpm. Также убедитесь в правильной версии fpm, чтобы не получить "502 Bad Gateway" на localhost: fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
sudo service nginx restart
Это работает на:
$ nginx -vnginx version: nginx/1.16.1 (Ubuntu)$ uname -aLinux cees-XPS-13-9380 4.15.0-1067-oem #77-Ubuntu SMP Mon Jan 20 09:23:07 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux