Установка nginx + php7-fpm на Ubuntu 16

1 Покупка виртуального хостинга или развертывание виртуальной машины

Все шаги будут выполняться из под Windows и на виртуальной машине под управлением Ubuntu 16.04 на примере хостинга INOVENTICA, вот ссылка на их хостинг
Облачный хостинг INOVENTICA
Плюсом этого хостинга является почасовая оплата и стоимость, а так же датацентр расположен в России.
Как создавать или купить VPS я описывать небуду - это несложно и есть много инструкций в интернете.

2 Подключение к консоли сервера

Заходим в консоль по протаколу SSH все описание будет для работы из под Windows
Если вы знаете как это сделать идем к следующему шагу
Скачиваем putty отсюда запускаем его и подключаемся как указано в инструкции здесь

3 Устанавливаем необходимые компоненты на Ubuntu

Обычно на сервере сразу установлен веб сервер Apache, но он нам будет мешать так как занимает 80 порт, его можно отключить или удалить, для временного отключения выполните команду в консоли:
service apache2 stop
или удалите если уверены что он вам не понадобится:
apt remove apache2
Теперь устанавливаем Nginx для этого выполняем команду:
apt update
apt install nginx
Теперь для установки свежей версии PHP добавим репозиторий выполнив команды:
apt install software-properties-common python-software-properties nano
add-apt-repository ppa:ondrej/php
apt update
Если выдает например такую ошибку:
W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6C
то выполняем команду
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  4F4EA0AAE5267A6C
, где 4F4EA0AAE5267A6C строка из ошибки
теперь устанавливаем PHP 7.2 последний на данный момент
apt install php7.2-fpm
если сайт будет использовать MySQL то еще ставим и его
apt install mysql-server
в процессе установки вас попросят придумать пароль для пользователя базы данные root , укажите его и не забудьте
так же для работы mysql понадобится модуль для php ставим его и перезагружаем php-fpm
apt install php7.2-mysql
service  php7.2-fpm restart
минимальное количество программ установлено, теперь можно переходить к настройкам

4 Настройка веб сервера

Создаем директории для сервера
Наш сервер будет располагаться в папке /srv предположим что у нас есть доменное имя site.ru для которого мы хотим развернуть сайт Домен должен быть привязан к хостингу, как это сделать смотрите здесь Создаем директории для сайта
mkdir -p /srv/site.ru/www
параметр -p позволяет нам создать все поддиректории разом, в директории www у нас будет располагаться файлы доступные из интернета
При установки веб сервер Nginx(или остался от Apache) был создан пользователь c именем www-data от имени которого у нас запущен веб сервер Nginx, поэтому папка с файлами должна иметь доступ на чтение и запись для этого пользователя. здесь.
Теперь сразу создадим главную страницу сайта, создадим файл index.php
echo "<?php phpinfo();?>">/srv/site.ru/www/index.php
и сменим права доступа на все файлы в директории /srv
chown -R www-data:www-data /srv
Теперь небольшой штрих безопасности, отключим параметр cgi.fix_pathinfo в настройках PHP /etc/php/7.2/fpm/php.ini для этого запустим редактор nano командой
nano /etc/php/7.2/fpm/php.ini
найдем строчку с текстом #cgi.fix_pathinfo=1 и поменяем ее на cgi.fix_pathinfo=0 не забыв убрать решетку спереди
Сtrl+x затем Y потом Enter чтобы сохранить изменения или N что бы не сохранять.

5 Настройки Nginx

Создаем файл конфигурации для виртуального сервера
nano /etc/nginx/sites-available/site.ru.conf
копируем в него текст заменяя site.ru на свой домен

server {
	listen       80;
	server_name  site.ru;
	error_log  /srv/site.ru/nginx_error.log;
	location / {
		include fastcgi_params;
		fastcgi_index index.php;
		try_files $uri $uri/ /index.php?page=$uri&$args;
		fastcgi_pass unix:/run/php/php7.2-fpm.sock;
		root /srv/sire.ru/www/;
		gzip on;
		gzip_comp_level 4;
		gzip_proxied any;
		fastcgi_param  SCRIPT_FILENAME  $realpath_root/$fastcgi_script_name;
	}
	# Static files location
	location ~* ^.+\.(jpg|jpeg|gif|png|ico|mp3|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|dat|avi|ppt|txt|tar|mid|midi|wav|bmp|rtf|wmv|mpeg|mpg|tbz|js|woff2|woff|ttf)$ {
		root   /srv/sire.ru/www/;
	}
}
Сохраняем Сtrl+x затем Y потом Enter создаем линк для активации конфигурации и перезапускаем сервер
ln -s /etc/nginx/sites-available/site.ru.conf /etc/nginx/sites-enabled/site.ru.conf
service nginx restart
Если вы не ошиблись то все должно запуститься без проблем.
Готово, теперь сайт должен работать, в этом можно убедиться зайти по адресу http://ваш домен.ru/ Далее реклама: Облачный хостинг INOVENTICA

Для Ubuntu 14 чтобы установить php 7.2 нужно выполнить эти команды

sudo apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list
назад в раздел linux

Пт 02 Мар 2018.