Обновление php на хостинге

Введение

Немного расскажу своими словами о том, как работает модуль ngx_http_proxy_module. Именно он реализует весь функционал, о котором пойдет речь. Допустим, у вас в локальной или виртуальной сети есть какие-то сервисы, не имеющие прямого доступа из интернета. А вы хотите таковой иметь. Можно пробрасывать нужные порты на шлюзе, можно что-то еще придумывать. А можно сделать проще всего — настроить единую точку входа на все свои сервисы в виде nginx сервера и с него проксировать различные запросы к нужным серверам.

Расскажу на конкретных примерах, где я это использую. Для наглядности и простоты буду прям по порядку перечислять эти варианты:

  1. Ранее я рассказывал о настройке чат серверов — matrix и mattermost. В этих статьях я как раз рассказывал о том, как проксировать запросы в чат с помощью nginx. Прошелся по теме вскользь, не останавливаясь подробно. Суть в том, что вы настраиваете на любом виртуальном сервере эти чаты, помещаете их в закрытые периметры сети без лишних доступов и просто проксируете запросы на эти сервера. Они идут через nginx, который у вас смотрит во внешний интернет и принимает все входящие соединения.
  2. Допустим, у вас есть большой сервер с множеством контейнеров, например докера. На нем работает множество различных сервисов. Вы устанавливаете еще один контейнер с чистым nginx, на нем настраиваете проксирование запросов на эти контейнеры. Сами контейнеры мапите только к локальному интерфейсу сервера. Таким образом, они будут полностью закрыты извне, и при этом вы можете гибко управлять доступом.
  3. Еще один популярный пример. Допустим, у вас есть сервер с гипервизором proxmox или любым другим. Вы настраиваете на одной из виртуальных машин шлюз, создаете локальную сеть только из виртуальных машин без доступа в нее извне. Делаете в этой локальной сети для всех виртуальных машин шлюз по-умолчанию в виде вашей виртуальной машины со шлюзом. На виртуальных серверах в локальной сети размещаете различные сервисы и не заморачиваетесь с настройками фаервола на них. Вся их сеть все равно не доступна из интернета. А доступ к сервисам проксируете с помощью nginx, установленным на шлюз или на отдельной виртуальной машине с проброшенными на нее портами.
  4. Мой личный пример. У меня дома есть сервер synology. Я хочу организовать к нему простой доступ по https из браузера по доменному имени. Нет ничего проще. Настраиваю на сервере nginx получение бесплатного сертификата , настраиваю проксирование запросов на мой домашний ip, там на шлюзе делаю проброс внутрь локалки на synology сервер. При этом я могу фаерволом ограничить доступ к серверу только одним ip, на котором работает nginx. В итоге на самом synology вообще ничего не надо делать. Он и знать не знает, что к нему заходят по https, по стандартному порту 443.
  5. Допустим, у вас большой проект, разбитый на составные части, которые живут на разных серверах. К примеру, на отдельном сервере живет форум, по пути /forum от основного домена. Вы просто берете и настраиваете проксирование всех запросов по адресу /forum на отдельный сервер. Точно так же можно без проблем все картинки перенести на другой сервер и проксировать к ним запросы. То есть вы можете создать любой location и переадресовывать запросы к нему на другие сервера.

Надеюсь в общем и целом понятно, о чем идет речь. Вариантов использования много. Я привел самые распространенные, которые пришли в голову и которые использую сам. Из плюсов, которые считаю наиболее полезными именно из своих кейсов, отмечу 2:

  • Без проблем можете настроить https доступ к сервисам, при этом совершенно не трогая эти сервисы. Вы получаете и используете сертификаты на nginx сервере, используете https соединение с ним, а сам nginx уже передает информацию на сервера со службами, которые могут работать по обычному http и знать не знают о https.
  • Вы очень легко можете менять адреса, куда проксируете запросы. Допустим у вас есть сайт, его запросы проксируются на отдельный сервер. Вы подготовили обновление или переезд сайта. Отладили все на новом сервере. Теперь вам достаточно на сервере nginx изменить адрес старого сервера на новый, куда будут перенаправляться запросы. И все. Если что-то пойдет не так, можете оперативно вернуть все обратно.

С теорией закончил. Перейдем теперь к примерам настройки. В своих примерах я буду использовать следующие обозначения:

blog.zeroxzed.ru доменное имя тестового сайта
nginx_srv имя внешнего сервера с установленным nginx
blog_srv локальный сервер с сайтом, куда проксируем соединения
94.142.141.246 внешний ip nginx_srv
192.168.13.31 ip адрес blog_srv
77.37.224.139 ip адрес клиента, с которого я буду заходить на сайт

Настройка дистрибутива, добавление репозиториев и обновление списка пакетов.

Начать установку любого нового сервера нужно с добавления репозиториев и обновления списков пакетов, поэтому добавим несколько репозиториев где версии ПО актуальнее чем в системных:

sudo apt install curl wget ca-certificates lsb-release

устанавливаем базовый набор ПО

sudo add-apt-repository ppa:ondrej/php

Добавляем репозиторий с php, подтверждаем добавление

sudo echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \  | sudo tee /etc/apt/sources.list.d/nginx.list 

curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add

Добавляем репозиторий nginx

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo percona-release setup ps57

Добавляем репозиторий Percona для установки mysql

И обновим систему:

sudo apt update && sudo apt upgrade

На все вопросы от ОС отвечаем yes. 

ВАЖНО!! — На уже работающих давно серверах процедура обновления системы не только чаще всего не требуется, но еще и может быть опасной

Описание команд раздела.

sudo — запуск следующей команды от привилегированного пользователя (root), если говорить по аналогии с Windows — запуск от имени администратора;

apt — пакетный менеджер в Ubuntu, используется для установки пакетов, наиболее часто используемые команды:

install — установка пакета;

update — обновить список пакетов из репозиториев на наличие обновлений или при добавлении новых репозиториев;

upgrade — обновить все пакеты помеченные для обновления;

add-apt-repository — добавление репозитория в систему, можно заменить другой конструкцией, о которой ниже:

sudo echo «deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx» \  | sudo tee /etc/apt/sources.list.d/nginx.list 

curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add  — тут тоже добавление репозитория, но другим путём: сначала записываем ссылку на репозиторий и версию  операционной системы (echo «ссылка `команда для получения версии ОС` ПО которое нас интересует”) в файл /etc/apt/sources.list.d/nginx.list при помощи команды tee (запись вывода команды в файл), затем получаем ключ подписи репозитория командой curl и добавляем его в систему apt-key add 

 |  — это pipe, т.н труба, для передачи вывода команд между другими командами. Самый простой пример использования pipe —  ps waxuf | grep nginx — вывод списка запущенных процессов через ps и выбор из этого вывода процессов от пользователя или с именем nginx;

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb — gpkg -i аналог apt install , но для пакетов загруженных на систему локально, например через команду wget;

sudo percona-release setup ps57  — это уже особенности репозитория percona, включение для установки репозитория с percona-server 5.7 — расширенным аналогом mysql 5.7

How to Install PHP on Ubuntu 18.04

10 Октября 2020
|

Ubuntu

Большинство популярных фреймворков и приложений PHP, включая WordPress , Laravel , Drupal и Nextcloud , совместимы с PHP 7.2.

Установка PHP 7.2 с Apache 

Если вы используете Apache в качестве веб-сервера для установки PHP и модуля Apache PHP, выполните следующую команду:

   После установки пакетов перезапустите службу Apache:

Установка PHP 7.2 с Nginx 

В отличие от Apache, Nginx не имеет встроенной поддержки обработки файлов PHP, поэтому нам нужно установить отдельное приложение, такое как PHP FPM («менеджер процессов fastCGI»), которое будет обрабатывать файлы PHP.

Чтобы установить пакеты PHP и PHP FPM, выполните следующую команду:

   После установки пакетов вы можете проверить статус службы PHP FPM с помощью:

   Теперь вы можете отредактировать блок сервера Nginx и добавить следующие строки, чтобы Nginx мог обрабатывать файлы PHP:

Не забудьте перезапустить службу Nginx, чтобы новая конфигурация вступила в силу:

Установка расширений PHP 

Чтобы расширить основные функции PHP, вы можете установить некоторые дополнительные расширения. Расширения PHP доступны в виде пакетов и могут быть легко установлены с помощью:

Например, если вы хотите установить расширения MySQL и GD PHP, вы должны выполнить следующую команду:

После установки нового расширения PHP не забудьте перезапустить Apache или службу PHP FPM, в зависимости от ваших настроек.

Тестирование обработки PHP 

Чтобы проверить, правильно ли настроен ваш веб-сервер для обработки PHP, создайте новый файл с именем info.php внутри
каталога со следующим кодом:

/var/www/html/info.php

Сохраните файл, откройте нужный браузер и посетите

Функция будет печатать информацию о конфигурации PHP , как показано на рисунке ниже:

Установка PHP 7.3 в Ubuntu 18.04 

PHP 7.3 — это последняя стабильная версия PHP. Выполните следующие действия, чтобы установить PHP 7.3 в Ubuntu 18.04.

  1. Начните с включения репозитория Ondrej PHP:

  2. Установите PHP 7.3 и некоторые из наиболее распространенных модулей PHP:

  3. Чтобы проверить установку, выполните следующую команду, которая распечатает версию PHP:

Установка PHP 7.1 в Ubuntu 18.04 

Используйте PHP 7.1 только в том случае, если вы собираетесь устанавливать приложения, несовместимые с PHP 7.2.

Чтобы установить PHP 7.1, выполните следующие действия:

  1. Включите репозиторий Ondrej PHP, набрав:

  2. Установите PHP 7.1 и несколько наиболее распространенных модулей PHP:

  3. Проверьте установку, набрав:

Вы успешно установили PHP на свой сервер Ubuntu 18.04. Вы также можете прочитать о том, как установить и настроить проект PHP с помощью Composer .

Настройка php 7.1

Настройка php будет заключаться в следующем:

  • Устранение уязвимостей
  • Увеличение размера загружаемого файла
  • Увеличение времени работы скрипта
  • Настройка opcache

Открываем php.ini

sudo nano /etc/php/7.1/fpm/php.ini

ищем строчку

;cgi.fix_pathinfo = 1

раскомментируем строчку и поставим за место единицы 0

cgi.fix_pathinfo = 0

Увеличим размер загружаемых файлов. Находим post_max_size и приводим к виду

post_max_size = 100M

Увеличим время обработки скрипта, ищем max_execution_time выставив 300 секунд — обычно нужно для работы с большими таблицами mysql

max_execution_time = 300

Далее ищем opcache. Приводим данные директивы к такому виду:

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=64
opcache.interned_strings_buffer=4
opcache.max_accelerated_files=7963
opcache.revalidate_freq=20

Сохраняем файл. Перезапускаем php7.1-fpm

service php7.1-fpm restart

Устанавливаем MySQL сервер и phpmyadmin

sudo apt install mysql-server-5.7

Во время установки нас попросит задать пароль для администратора mysql сервера. Выполните просьбу.
Все готово. Теперь установим менеджер работы с базами данных

sudo apt install phpmyadmin

При установке скорее всего попросит выбрать вебсервер, выберите любой, если попросит задать пароль для базы задайте.
Теперь сделаем символьную ссылку на директорию где у нас будет лежать сайт

ln -s /usr/share/phpmyadmin /var/www/html/my.site.ru

Зайти в менеджер базых можно будет по адресу

my.site.ru/phpmyadmin/

В будущем можно создать свой конффигурационный файл nginx для менеджера баз данных phpmyaadmin, и перенести его на поддомен типа mysql.my.site.ru, и поставить серверную авторизацию.

Ротация логов виртуальных хостов

Последний штрих в настройке web сервера — ротация логов виртуальных хостов. Если этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером лог файла.

У нас уже будет файл конфигурации logrotate для nginx, который был создан во время установки — /etc/logrotate.d/nginx. Приведем его к следующему виду:

/var/log/nginx/*log
/web/sites/p1m2a.zeroxzed.ru/log/*log {

    create 0644 nginx nginx
    size=1M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

/web/sites/hl.zeroxzed.ru/log/*log {

    create 0644 hl.zeroxzed.ru hl.zeroxzed.ru
    size=1M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Это просто пример конфигурации. Все параметры вы можете поменять по своему усмотрению. Примеров конфигурации logrotate в интернете много.

На этом все. Я рассмотрел все основные моменты, которые необходимы для установки и настройки производительного web сервера на основе nginx и php-fpm последних версий. При этом рассказал о некоторых вещах, которые повышают удобство и гибкость эксплуатации сервера.

Установка производных переменных окружения

Скрипт в строках 55-61 выставляет следующие переменные окружения, либо в некоторое жестко заданное значение, либо с применением значения, полученного из переменных, установленных в предыдущем разделе:

  • — сообщает приложениям, что они запускаются в скрипте и нет возможности взаимодействия с пользователем.
  • — версия приложения WordPress CLI.
  • — контрольная сумма исполняемого файла WordPress CLI 2.4.0 (версия указывается в переменной ). Скрипт на 162 строке использует это значение для проверки, что был скачан корректный файл WordPress CLI.
  • — максимальный размер файла, который может быть закачан в WordPress. Эта настройка используется в нескольких местах, так что проще задавать ее в одном месте.
  • — hostname системы, извлекаемый из переменной WORDPRESS_URL. Используется для получения соответствующих TLS/SSL сертификатов от Let’s Encrypt, а также для внутренней проверки WordPress.
  • — путь к каталогу с настройками NGINX, включая основной файл .
  • — путь к сертификатам Let’s Encrypt для сайта WordPress, получаемый из переменной .

Install PHP 7.1 on Ubuntu

Use the following set of commands to add PPA for PHP 7 in your Ubuntu system and install PHP 7.1 version.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.1

Now use the following command to check installed php version on your system.

php -v 

PHP 7.1.27-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Mar  7 2019 20:02:25) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.27-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Шаг 1. Установите HTTP-сервер Nginx

Для работы Moodle требуется веб-сервер, а Nginx — один из самых популярных веб-серверов с открытым исходным кодом, доступных сегодня.

Чтобы установить Nginx в Ubuntu, выполните следующие команды:

После установки Nginx приведенные ниже команды можно использовать для остановки , запуска и включения службы Nginx, которая всегда запускается с загрузкой сервера.

Чтобы проверить, установлен ли и работает ли Nginx, откройте свой веб-браузер и перейдите к IP-адресу или имени хоста сервера.

http://localhost

Если вы видите указанную выше страницу в своем браузере, значит, Nginx работает должным образом.

Подключение Nginx к PHP-FPM

Чтобы принимать запросы FastCGI от Nginx, PHP-FPM может прослушивать сокет TCP/IP или UNIX сокет. Сокеты UNIX являются средством межпроцессного взаимодействия, которое обеспечивает эффективный обмен данными между процессами, работающими в одной и той же операционной системе, в то время как сокеты TCP/IP позволяют процессам обмениваться данными по сети.

В отличие от сокета TCP/IP, который идентифицирует сервер по IP-адресу и порту (например, 127.0.0.1:9000), вы можете привязать сервер к сокету UNIX, используя путь к файлу (например, /run/php-fpm/www.sock), который виден в файловой системе.

Сокет UNIX — это особый тип файла — к нему применяются разрешения на доступ к файлам и каталогам (как в случае с любым другим типом файла UNIX), и его можно использовать для ограничения того, какие процессы на хосте могут читать и записывать в файл, (и, таким образом, общаться с внутренним сервером).

Таким образом, сокет UNIX является безопасным, поскольку его могут использовать только процессы на локальном хосте. Сокет TCP/IP может быть доступен из Интернета, и это может представлять угрозу безопасности, если не будут приняты дополнительные меры безопасности, такие как настройка брандмауэра.

Настройка PHP-FPM для прослушивания на сокете UNIX

Чтобы настроить PHP-FPM на прослушивание сокета UNIX, откройте файл конфигурации пула PHP-FPM по умолчанию, используя свой любимый текстовый редактор при помощи команды:

Затем найдите директиву listen и задайте для нее путь к файлу сокета UNIX следующим образом — listen = /run/php/php7.4-fpm.sock

Если вы используете сокет UNIX, вам также необходимо установить соответствующие разрешения на чтение/запись для файла, чтобы разрешить подключения с веб-сервера NGINX. По умолчанию Nginx работает как пользователь www-data в Ubuntu.

Найдите параметры listen.owner и listen.group и задайте им значение www-data. Также установите режим на 0660, для параметра listen.mode.

Настройка PHP-FPM для прослушивания через сокет TCP/IP

Хотя сокет UNIX быстрее сокета TCP/IP, он менее масштабируем, поскольку он может поддерживать межпроцессное взаимодействие только в одной и той же ОС. Если Nginx и внутренний сервер приложений (PHP-FPM) работают в разных системах, вам придется настроить php-fpm для прослушивания сокетов TCP/IP для удаленного подключения.

В файле конфигурации пула php-fpm установите адрес прослушивания, например: 127.0.0.1:9000. Убедитесь, что выбранный вами порт не используется другим процессом или службой в той же системе.

Найдите параметр listen и пропишите адрес — 127.0.0.1:9000:

Сохраните изменения и закройте файл. Установка Nginx php fpm практически завершена.

Настройка Nginx для работы php-fpm

После того, как вы настроили адрес, который прослушивает PHP-FPM, вам нужно настроить Nginx для запроса прокси к нему через этот адрес, используя параметр конфигурации fastcgi_pass, который располагается в файле конфигурации блока виртуального хоста.

Для примера, возьмем файл конфигурации стандартной странички сайта nginx которая открывается при первом запуске nginx, расположенный по следующему пути — /etc/nginx/conf.d/default.conf, откроем его для редактирования:

Если вы настроили PHP-FPM для прослушивания на сокете UNIX, найдите блок местоположения для обработки файлов .php и установите следующие параметры для fastcgi:

Если используется TCP/IP сокет, замените значение в параметре fastcgi_pass на IP-адрес и порт сервера, на котором работает PHP-FPM FastCGI:

После внесения изменений в конфигурации Nginx проверьте правильность синтаксиса при помощи команды:

Далее вам необходимо перезапустить службы, чтобы применить изменения, используя для этого команды:

После перезапуска служб, подключение считается выполненным успешно. Можно создать файл index.php со следующим содержимым:

Затем можно попытаться открыть эту страницу в браузере. Для этого в адресную строку надо ввести http://localhost/index.php. Если всё было настроено верно, перед вами откроется такая страница:

Для дальнейшей настройки PHP-FPM воспользуйтесь статьей по настройке PHP-FPM на Ubuntu 20.04 – Настройка PHP-FPM

Основные файлы конфигурации и журналов NGINX

/etc/nginx этот файл содержит все конфигурационные файлы NGINX.

/etc/nginx/sites-available этот файл содержит дынные серверных блоков, в которых хранят сведения о конфигурации. Требуется это  для обслуживания одного или нескольких веб-сайтов.

/etc/nginx/sites-enabled данный файл содержит конфигурации одного или нескольких включенных веб-сайтов.

/etc/nginx/nginx. conf  это основной конфигурационный файл, который считывает директивы конфигурации в других файлах.

/var / log/nginx / access. log этот файл хранит данные о всех посещениях вашего сайта

/var/log/nginx/error. log этот файл предназначен для хранения ошибок NGINX

Добавление PPA для пакетов PHP7

Персональные архивы пакетов (PPA) представляют собой пакеты, которые обычно создаются и распространяются в репозиториях, специальных серверах-хранилищах для таких файлов. launchpad.net – сервис, созданный для поддержки и развития подобных свободных проектов. Именно там вы можете найти бета-версии, модифицированные сборки и ретроподдержки для более старых версий операционной системы.

$ sudo add-apt-repository ppa:ondrej/php

После того, как на экране высветилось описание пакета PPA, нажмите Enter.

Примечание.
Если в вашей локали установлена не UTF-8 кодировка, тогда при установке PPA может возникнуть ошибка, связанная с обработкой букв имени автора. В качестве временного решения вы можете установить language-pack-en-base, и, когда локали сгенерированы, заместить настройки локали системы в то время, как добавляется PPA:

$ sudo apt-get install -y language-pack-en-base
$ sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

После того, как пакет PPA установлен, вам необходимо обновить кэш локального пакета. Это нужно для того, чтобы локальный пакет включал содержание PPA:

$ sudo apt-get update

После того, как вы получили доступ к пакетам PHP 7.0, можно заменить уже установленную версию PHP.

Установка PHP в Ubuntu

Предполагается, что у вас уже установлен какой-нибудь PHP версии 7.x. Если нет, то давайте это исправим:

apt-get update && apt-get upgrade
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php7.2
apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml

1
2
3
4
5
6

apt-get update&&apt-get upgrade

apt-get install software-properties-common

add-apt-repository ppaondrejphp

apt-get update

apt-get install php7.2

apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml

Теперь, например устанавливаем версию 5.6:

sudo apt install php5.6

1 sudo apt install php5.6

После всех этих команд на вашей машине установлены 7.2 и 5.6 версии. Выведем список всех установленных версий в меню, которое позволит выбрать нужную версию:

sudo update-alternatives —config php

1 sudo update-alternatives—config php

После этого вы увидите примерно такое:

There are 2 choices for the alternative php (providing /usr/bin/php).

Selection Path Priority Status

————————————————————

* 0 /usr/bin/php7.2 72 auto mode

1 /usr/bin/php5.6 56 manual mode

2 /usr/bin/php7.2 72 manual mode

Press <enter> to keep the current choice, or type selection number:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

There are2choices forthe alternative php(providingusrbinphp).

Selection    Path             Priority   Status

————————————————————

*usrbinphp7.272auto mode

1usrbinphp5.656manual mode

2usrbinphp7.272manual mode

Press<enter>tokeep the current choice*,ortype selection number

В коде выше можно выбрать например пункт — 1 и тогда версия переключится на 5.6. Проверить это можно следующей командой:

php -v

1 php-v

Которая вернет примерно такое сообщение:

PHP 5.6.38+deb.sury.org+2 (cli)

Copyright (c) 1997-2016 The PHP Group

Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

1
2
3
4
5
6
7

PHP5.6.38+deb.sury.org+2(cli)

Copyright(c)1997-2016The PHP Group

Zend Engine v2.6.0,Copyright(c)1998-2016Zend Technologies

with Zend OPcache v7.0.6-dev,Copyright(c)1999-2016,by Zend Technologies

Таким образом, теперь вы можете легко менять свои версии даже легче чем в Open Server

Обновление пути сокета у веб-серверов Nginx

Nginx использует сокет домена Unix для того, чтобы взаимодействовать с PHP-FPM. По умолчанию установленная версия PHP 7 будет использовать тот путь, который ей указали сокеты:

PHP 5: /var/run/php5-fpm.sock
PHP 7: /var/run/php/php7.0-fpm.sock

Откройте конфигурационный файл сайта default, используя nano (или другой редактор на ваше усмотрение):

$ sudo nano /etc/nginx/sites-enabled/default

Ваша конфигурация может отличаться от написанной. Ищите блок, начинающийся с location ~ \.php$ {, и строчку, которая выглядит таким образом:

fastcgi_pass unix:/var/run/php5-fpm.sock; 

Измените ее на:

unix:/var/run/php/php7.0-fpm.sock

После этого вам нужно выйти, а затем сохранить файл. Если вы работаете в редакторе nano, то просто нажмите Ctrl-X для выхода, y для подтверждения и Enter для того, чтобы подтвердить перезапись имени файла.
Повторите этот процесс для всех остальных виртуальных серверов, расположенных в /etc/nginx/sites-enabled, которым необходимо поддерживать PHP.

Далее перезапустите nginx:

$ sudo service nginx restart

Установка и настройка FTP-сервера

Мы настроим ProFTPd, так как он позволит использовать виртуальных пользователей с uid пользователя www-data.

Для его установки вводим следующую команду:

apt-get install proftpd

Смотрим uid пользователя www-data:

id www-data

* в Ubuntu это, как правило, 33.

Создаем виртуального пользователя:

ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=ftpwww —uid=33 —gid=33 —home=/var/www —shell=/usr/sbin/nologin

* где /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; ftpwww — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи (www-data); /var/www — домашний каталог пользователя; /usr/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.

Открываем основной конфигурационный файл:

vi /etc/proftpd/proftpd.conf

Снимаем комментарий или редактируем опцию:

DefaultRoot                     ~

* данная опция говорит о том, что корневой директорией для пользователя будет домашняя директория. Это нужно, чтобы FTP-пользователи не могли выйти за пределы дозволенного и видеть на сервере сайты друг друга.

Создаем дополнительный конфигурационный файл для proftpd:

vi /etc/proftpd/conf.d/custom.conf

Со следующим содержимым:

UseIPv6 off
IdentLookups off
PassivePorts 40900 40999
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

* где 40900 — 40999 — диапазон динамических портов для пассивного режима.

Разрешаем автозапуск FTP-серверу и запускаем его:

systemctl enable proftpd

systemctl restart proftpd

Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: