установка nginx php fpm php mysql

Настройка веб-сервера Nginx + PHP-FPM + MySQL

Быстрая установка и настройка веб-сервера NginX для работы CS-Cart.

Видео

Сервер и ресурсы

Для инструкции арендован самый простой VPS сервер.

Обычно VPS сервер предоставляется с чистой операционной системой, мы выбрали последнюю версию Ubuntu 14.04 LTS x86 на данный момент.

Технические характеристики сервера:

ОСUbuntu 14.04 LTS x86
Диск2.0 ГБ
Процессор2000 МГц
Память128 МБ

Ресурсов данного сервера достаточно только для теста и эксперимента.

Предупреждение! Настройку сервера для живого интернет-магазина необходимо доверить профессионалам.

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

1. Подключаемся к серверу по SSH

Используем терминал (PuTTY).

2. Обновим список пакетов

Запустите в терминале (PuTTY) команду:

3. Устанавливаем NginX

4. Останавливаем Nginx

Остановим NginX на время настройки простой командой:

5. Узнаем количество процессоров в системе

Количество процессоров нам понадобится для конфигурации NginX:

Запоминаем число процессоров.

6. Установим число процессов Nginx

Найдите на сервере и откройте для редактирования файл:

Установите для неё значение равное числу процессоров. В нашем случае один процессор.

7. Создадим папку для интернет-магазина

8. Конфигурация Nginx

Нам необходимо настроить конфигурацию NginX. Сделаем так, чтобы Nginx понимал наш домен и отправлял его в нужную папку на сервере, а также установим правила для SEO.

Найдите на сервере и откройте файл:

Удалите весь код и вставьте новый. Ниже будет код, в комментариях кратко описано происходящее. Вам нужно заменить домен example.com на ваш домен

9. Перезапускаем nginx

10. Устанавливаем PHP-FPM

11. Установим MySQL

Команда для установки MySQL:

В процессе установки вам потребуется несколько раз ввести пароль. Не потеряйте пароль!

12. Установим PhpMyAdmin

Ещё одной командой установим PhpMyAdmin для удобства работы с базой данных:

Потребуется ввести пароль от MySQL.

Консоль попросит вас выбрать Apache2 или lighttpd во время установки, пропустите данный шаг, просто нажмите ENTER

13. Добавим конфигурацию Nginx для PhpMyAdmin

Сделаем так, чтобы PhpMyAdmin открывался на отдельном поддомене: pma.example.com. Нам необходимо добавить в конфигурацию nginx новый раздел для поддомена.

Откройте на сервере файл:

В конец файла добавьте конфигурацию для поддомена, который будет ссылаться на phpmyadmin. Просто скопируйте код в конец существующей конфигурации, замените example.com на ваш домен:

14. Перезапускаем nginx

Вы уже знаете команду для перезагрузки nginx:

Источник

Установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 с нуля

Установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 с нуля

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

Подготовка

Проверка пользователя

Установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 — это дело хорошее, но давайте для начала разберемся, под каким пользователем мы находимся в командной строке. Это важно с точки зрения соблюдения правил безопасности, ведь нередко можно столкнуться с тем, что сервера взламывают, используя брешь в правах пользователей, брешь в правах доступа к файлам и каталогам, и, наконец, используя некорректно настроенные сервисы, которые, к примеру, могут выполняться от имени пользователей со слишком обширными правами и т. д. Также рекомендую не использовать один и тот же пароль для всего и вся, так как используя его много где, может произойти его утечка (слив) из-за недобросовестности какого-то ресурса, или недостаточных средств защиты данных на нем. Решением в таком случае может являться программа для генерации и надежного хранения надежных паролей, например Keepass, которой уже придется пользоваться постоянно — такова цена безопасности.

Итак, вернемся к вопросу о пользователе в командной строке — если у Вас написано что-то вроде:

То это нужно обязательно поменять. Зачем? Все просто — вы рискуете выполнить команду, которая запустит нечто, что будет иметь полные права доступа к Вашему серверу, так как оно будет запущено от имени root, т. е. корневого пользователя (он же администратор, суперпользователь), которому дозволено буквально все на Вашем сервере. Да, устанавливая различные пакеты придется часто использовать права администратора, но использование этих прав не должно быть по умолчанию, так как если Вы планируете долго работать с сервером, Вы должны понимать, что запуск какого-нибудь npm install (который исполнит код пакета в котором может находиться вирус) от имени суперпользователя — просто вопрос времени, если Вы не введете за правило использовать различных пользователей для различных задач.

Те, у кого в командной строке не то, что я описывал выше (т. е. не пользователь root, а какой-то Ваш пользователь с другим именем) могут пролистать до подзаголовка «Проверка прав пользователя». А у кого именно то, что я описывал — давайте исправлять.

Создание нового пользователя

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

Вводим в терминале (командной строке):

serveruser в команде ниже — это имя будущего пользователя, можете заменить его здесь и в последующих примерах на другое, которое Вам больше нравится.

После чего Вы увидите это:

Вам предлагают ввести пароль для этого нового пользователя — просто введите его (на экране ничего не будет меняться при его вводе) и нажмите Enter. Далее Вам предложат повторить пароль:

Повторите пароль, и нажмите Enter. Далее выведется это:

Теперь Вам предлагается вводить информацию о пользователе, но это совершенно необязательно — можете просто жать Enter, пока ввод данных не завершится:

На последнее сообщение нужно ответить «y» (английская) и нажать Enter. Появится это:

Нам предлагают ввести команду, значит предыдущая выполнилась — пользователь создан.

Теперь необходимо добавить пользователя в группу sudo, участники которой могут выполнять команды с привилегиями администратора. Для этого нужно выполнить такую команду (не забудьте поменять serveruser на имя Вашего пользователя):

Если после выполнения этой команды нам предлагают ввести следующую — значит она выполнилась, и можно приступить к проверке прав нашего пользователя.

Проверка прав пользователя

Теперь мы должны проверить права пользователя. Те, у кого в командной строке был пользователь root, должны залогиниться под только что созданным пользователем, с помощью этой команды (замените serveruser на имя Вашего пользователя):

После чего должно вывестись что-то вроде:

Итак, мы вошли под только что созданным пользователем.

Теперь для всех, и для тех у кого был свой пользователь (не root) и для тех, кто только что создал нового пользователя — введите команду:

Вам предложат ввести пароль Вашего пользователя (введите его):

После ввода правильного пароля пользователя команда выполнится, и положительным результатом будет подобный (т. е. выведется список содержимого каталога /root):

А если прав на чтение этого каталога нет, то будет выведено это:

Ошибка выше означает, что что-то с правами пользователя не так. Если у Вас уже был такой пользователь (т. е. Вы сейчас не создавали нового), то Вам придется либо найти другого пользователя с необходимыми нам правами, либо раздобыть доступ к пользователю root и повторить инструкции выше, создав нового пользователя, или попробовав добавить имеющегося пользователя в группу sudo. В любом случае, если возникнут какие-то трудности, то Вы можете обратиться в сообщения сообщества https://vk.com/webdevdiary, и я попробую Вам помочь.

Итак, установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 — начинаем устанавливать.

Установка Nginx

От имени нашего пользователя (не root) выполним команду для обновления пакетов (вводим пароль нашего пользователя, если попросят):

После чего выведется что-то вроде:

А далее начнем установку Nginx (когда попросят, введите «y» для подтверждения, что Вы хотите установить Nginx):

После выполнения этой команды Nginx установится. Теперь нам нужно проверить настройки файрволла через UFW (Uncomplicated Firewall), для этого введем:

Должен появиться такой список доступных приложений:

На этом этапе нужно убедиться, что у нас есть «Nginx Full», «Nginx HTTP» и «Nginx HTTPS». Далее проверим, разрешены ли эти приложения в файрволле, введем:

Должно вывестись подобное:

Здесь нужно убедиться, что «Nginx HTTP» и «Nginx HTTPS» имеют значение «ALLOW» в колонке «Action». Если у кого-то из них значение «DENY», то нужно выполнить команды:

После этого повторите предыдущие инструкции, чтобы убедиться, что «Nginx HTTP» и «Nginx HTTPS» имеют значение «ALLOW».

Проверка работоспособности Nginx

Если Вы не знаете IP-адрес своего сервера, то узнаем его. Установим curl:

И мы увидим наш IP-адрес. Теперь вобьем его в браузере:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

Если у Вас отобразилось как на картинке выше — то все отлично, Nginx установлен.

У нас продолжается установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04. На очереди — MySQL!

Установка MySQL

Теперь нам необходимо установить MySQL, вводим команду (под тем пользователем, права которого проверяли ранее):

Когда будет запрошено, подтвердите установку вводом (нажатием) Y, и нажмите Enter.

Должно вывестись что-то вроде этого:

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

Во время выполнения скрипта, Вас могут спросить, хотите ли Вы сконфигурировать VALIDATE PASSWORD PLUGIN.

Если этот плагин сконфигурирован, то пароли, не соответствующие указанным критериям, будут отклоняться MySQL с ошибкой. Этот плагин можно и не включать, но всегда следует использовать надежные уникальные пароли, как и говорилось в начале статьи.

Вот так выглядит предложение сконфигурировать VALIDATE PASSWORD PLUGIN:

Введите (нажмите) Y, чтобы начать конфигурацию плагина, или что-то другое, чтобы его не конфигурировать.

Если Вы ответили «yes», то Вас попросят выбрать уровень валидации паролей. 0 — низкие требования к паролям, 1 — средние требования, 2 — высокие требования к паролям (будут выдаваться ошибки, если будут попытки задать пароль без содержания в нем цифр, прописных и строчных букв, специальных символов, или если пароль будет содержать слова из словарей).

Вот так выглядит сообщение о выборе уровня валидации паролей:

Выберите тот уровень, который считаете нужным.

Вне зависимости от того, выбрали ли Вы установку подключаемого модуля VALIDATE PASSWORD или нет, Вам предстоит ввести и подтвердить пароль MySQL root-пользователя.

Пользователь root в MySQL является администратором с полными привилегиями. Несмотря на то, что метод аутентификации по умолчанию не использует пароль, Вы должны определить здесь надежный пароль в качестве дополнительной меры безопасности. Мы поговорим об этом чуть позже.

Если Вы сконфигурировали VALIDATE PASSWORD PLUGIN, Вам будет показана надежность пароля для MySQL-пользователя root, который вы только что ввели, и ваш сервер спросит, хотите ли вы продолжить с этим паролем. Если вас устраивает текущий пароль, введите (нажмите) Y, а затем Enter:

На все оставшиеся вопросы отвечайте Y и жмите Enter. Это приведет к удалению некоторых анонимных пользователей и тестовой базы данных, отключению удаленных входов (входов извне) в систему с правами root и загрузке этих новых правил, чтобы MySQL немедленно учитывал внесенные вами изменения.

Теперь проверим, что мы можем зайти в командную строку MySQL, для этого введем:

Эта команда подключит нас к MySQL-серверу под пользователем root. Должно вывестись подобное:

Чтобы выйти из консоли, введите:

После чего выведется дружелюбное сообщение:

Обратите внимание, что Вам не нужно было вводить пароль для подключения в качестве пользователя root, даже если вы задали его при запуске сценария mysql_secure_installation. Так произошло, так как для root-пользователя MySQL методом аутентификации по умолчанию является unix_socket (вместо пароля). Хоть на первый взгляд это и может показаться проблемой безопасности, но это наоборот делает сервер базы данных более безопасным, поскольку единственными пользователями, которым разрешено входить в систему как root-пользователь MySQL, являются системные пользователи с привилегиями sudo, подключающиеся с консоли или через приложение, работающее с теми же привилегиями. На практике это означает, что вы не сможете использовать MySQL-пользователя root для подключения из вашего PHP-приложения. Установка пароля для учетной записи root в MySQL работает как гарантия на случай, если метод аутентификации по умолчанию будет изменен с unix_socket на пароль.

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

Установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 подошла к финальному шагу — к установке PHP!

Установка PHP8.0-FPM

Так как мы идем в ногу со временем, то давайте установим недавно вышедший PHP 8. Для этого мы должны первым делом добавить репозиторий, а чтобы его добавить, нужно установить software-properties-common, введем:

В процессе Вас должны попросить подтвердить выполнение операций, введите (нажмите) Y, а затем нажмите Enter. Теперь, собственно, добавим сам репозиторий с PHP:

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

Обновим информацию о пакетах после добавления репозитория:

И, наконец, установим PHP:

В процессе Вас должны попросить подтвердить установку, введите (нажмите) Y, а затем нажмите Enter. Дождитесь завершения установки. Последние строчки успешной установки выглядят примерно так:

Ну и давайте проверим, работает ли наш PHP 8, введем:

Если вывелось подобное, то все отлично:

Настройка Nginx для работы с PHP

Создадим директорию для тестового сайта, с помощью которого мы будем проверять корректность установки:

Назначим текущего пользователя владельцем директории (вы же не из под root, верно?):

Отключим дефолтный файл конфигурации Nginx:

Создадим новый конфигурационный файл для Nginx, для этого введем:

Команда выше создаст новый пустой файл. Вставим в него содержимое:

И для сохранения файла, нажмите Ctrl+X, затем введите (нажмите) Y, а затем Enter. Файл сохранен.

Активируем конфигурацию этой командой:

Перезапустим Nginx, чтобы изменения вступили в силу:

Теперь наш тестовый сайт активен, давайте создадим index.php, чтобы проверить его работу. Создадим новый файл:

И вставим в него это:

Сохраним файл. Нажмем знакомые нам Ctrl+X, затем Y, затем Enter.

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

И положительным результатом будет это:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysqlРаботающий Nginx + PHP 8

На скриншоте выше мы видим и нашу надпись «Hello World!», и результат выполнения команды «phpinfo();», из чего мы видим, что PHP работает и он восьмой версии.

Установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 почти завершена! Давайте теперь настроим работу PHP и MySQL.

Настройка работы PHP и MySQL

Установим PHP-модуль для работы с MySQL:

Войдем в командную строку MySQL:

Создадим новую базу данных:

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

«aef@234R345t2iJhfvar» — это пароль пользователя site_for_testing_user.

Дадим пользователю site_for_testing_user права на базу данных site_for_testing_database:

Выйдем из командной строки MySQL:

Теперь давайте войдем в командную строку MySQL под новым MySQL-пользователем:

Вас попросят ввести пароль, введите его. Если Вы не меняли его в примере выше, то он будет такой:

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

Результат будет такой:

Видим нашу базу site_for_testing_database, отлично, давайте добавим в нее таблицу для теста:

Вставим в таблицу строчку для теста:

Проверим, что она записалась:

Если результат такой, то все получилось:

Выйдем из командной строки MySQL:

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

И вставим в него это:

Нажимаем Ctrl+X, затем Y, затем Enter.

Теперь создаем файл для вывода данных из таблицы:

И вставим в него это:

Нажимаем Ctrl+X, затем Y, затем Enter.

Переходим по адресу:

И если там как на картинке ниже, то все работает:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysqlУспешный запрос к MySQL из PHP

Заключение

Вот и всё! Установка Nginx, MySQL 8, PHP8.0-FPM на Ubuntu 20.04 завершена и протестирована! Мы прошли весь путь от только что установленной Ubuntu 20.04, до работающего на ней сайта, использующего PHP и MySQL. Надеюсь, что этот мануал стал для Вас своевременной инструкцией/шпаргалкой для настройки своего сервера.

Источник

NGINX + Apache + MariaDB (MySQL) + PHP + PHP-FPM (fastCGI) + FTP + PHPMyAdmin + Memcached + Postfix на Ubuntu

Данная инструкция позволит настроить веб-сервер для решения большей части задач по размещению сайтов, порталов или веб-приложений. Она подходит для серверов на Ubuntu и других систем на основе deb-пакетов. Для RPM Linux читайте похожую инструкцию по настройке полноценного веб-сервера на CentOS.

Настройка операционной системы

1. Обновляем Ubuntu:

apt-get update && apt-get upgrade

2. Настраиваем время:

apt-get install chrony

timedatectl set-timezone Europe/Moscow

systemctl enable chrony

* первая команда для установки пакета синхронизации времени; вторая задает часовой пояс по московскому времени; третья разрашит автозапуск chrony.

3. По умолчанию, в Ubuntu брандмауэр работает в режиме «разрешить все». Но если мы настроили защиту по максимуму, то для веб-сервера открываем следующие порты:

* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); Подробнее про настройку iptables.

Установка NGINX

apt-get install nginx

Внесем изменение в файл nginx.conf:

http <
.
server_names_hash_bucket_size 64;
.
>

* в данном примере мы сняли комментарий со строчки server_names_hash_bucket_size 64;
* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.

systemctl enable nginx

systemctl restart nginx

* в процессе запуска мы можем увидим ошибку — возможно, в системе работает другой веб-сервер и занимает 80 порт. Как правило, это apache. Чтобы его выключить (на данном этапе он нам не нужен) вводим команду systemctl stop apache2.

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

Если стартовая страница не загружается, проверяем состояние сервиса:

systemctl status nginx

Установка PHP и PHP-FPM

Устанавливаем PHP и PHP-FPM:

apt-get install php php-fpm

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

systemctl enable php7.4-fpm

Настройка связки NGINX + PHP

Открываем файл для настройки виртуального домена по умолчанию:

В секции location или server редактируем параметр index на следующее значение:

.
index index.php index.html index.htm;
.

* в данном случае мы сказали серверу сначала искать индексный файл index.php, затем остальные по списку.

А внутри секции server добавим следующее:

* где /var/www/html — корневой путь хранения скриптов; /run/php/php7.4-fpm.sock — путь до сокетного файла для взаимодействия с php-fpm. Обратите еще раз внимание, что если в нашей системе будет установлена другая версия php, необходимо внести соответствующую корректировку.

Пример файла default:

server <
listen 80 default_server;
listen [::]:80 default_server;

root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;

location / <
index index.php index.html index.htm;
>

Проверяем правильность настроек nginx:

И перезагружаем его:

systemctl restart nginx

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

Проверяем, что путь до сокетного файла такой же, как мы задали в настройках NGINX:

В противном случае меняем его и перезапускаем сервис:

systemctl restart php7.4-fpm

Теперь заходим в каталог хранения настроенного сайта:

Создаем index.php со следующим содержимым:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

* в данном примере используется php версии 7.4.

Установка СУБД

В данной статье мы установим MariaDB. Установка выполняется следующей командой:

apt-get install mariadb-server

Разрешаем автозапуск и запускаем СУБД:

systemctl enable mariadb

Зададим пароль для учетной записи mysql-root:

Входим в SQL-оболочку:

Задаем пароль для пользователя root@localhost:

> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘New_Password’);

* где New_Password — пароль, который мы хотим установить для учетной записи root.

PHP + MariaDB

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

apt-get install php-mysql php-mysqli

После перезагружаем php-fpm:

systemctl restart php7.4-fpm

И открываем наш сайт в браузере. В phpinfo появится новая секция MySQL:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

* несмотря на то, что мы установили mariadb, в заголовке мы видим mysql. Так и должно быть.

Установка phpMyAdmin

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

apt-get install phpmyadmin

* в процессе установки система может потребовать ввод пароля для пользователя phpmyadmin. Его нужно ввести дважды.

Теперь создадим для него отдельный виртуальный домен в NGINX:

И добавим в него следующее содержимое:

location / <
index index.php;
>

* где phpmyadmin.dmosk.local — адрес для виртуального домена, именно этот адрес должен быть введен в адресную строку браузера, чтобы открылся нужный сайт. Поэтому есть нет возможность зарегистрировать домен и имя узла в DNS, можно воспользоваться локальным файлом hosts. /usr/share/phpmyadmin — это каталог, в который по умолчанию устанавливается phpMyAdmin.

После перезапускаем NGINX:

systemctl reload nginx

И открываем в браузере наш домен, в данном примере, http://phpmyadmin.dmosk.local. Откроется форма для авторизации — вводим логин phpmyadmin и пароль, который мы указали при установке phpmyadmin.

Если система вернула ошибку входа из-за неправильного пароля, необходимо задать пароль для учетной записи root@localhost (рассказывается выше в разделе установки MariaDB).

Установка Memcached

Для начала, выполняем установку пакетов:

apt-get install memcached php-memcached

После разрешаем автозапуск и запускаем сервис кэширования:

systemctl enable memcached

systemctl restart php7.4-fpm

Для проверки, что модуль memcached появился в PHP, открываем наш сайт в браузере — в phpinfo должна появиться новая секция:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

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

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

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

apt-get install proftpd

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

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

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

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

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

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

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

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

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

UseIPv6 off
IdentLookups off
PassivePorts 60000 65535

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

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

systemctl enable proftpd

systemctl restart proftpd

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

При необходимости, можно настроить шифрование и хранение пользователей в базе данных. Подробнее в инструкции Установка и настройка ProFTPd на Ubuntu Server.

Apache

Устанавливаем apache и модуль для php:

apt-get install apache2 libapache2-mod-php

Заходим в настройки портов:

И редактируем следующее:

* мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.

Теперь открываем настройку следующего модуля:

И добавляем впереди индексных файлов index.php:

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.

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

Рядом с опциями Directory дописываем:

AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted

SetEnvIf X-Forwarded-Proto https HTTPS=on

* этой настройкой мы при получении заголовка X-Forwarded-Proto со значением https задаем переменную $_SERVER[‘HTTPS’] равную on. Данная настройки критична для функционирования некоторых CMS.

* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.

Разрешаем модуль мультипроцессовой обработки mpm_prefork:

Разрешаем модуль php:

* в данном примере установлен php версии 7.4.

Разрешаем модуль setenvif:

Разрешаем модуль rewrite:

Разрешаем автозапуск Apache и перезапускаем службу:

systemctl enable apache2

systemctl restart apache2

Открываем браузер и вводим в адресную строку http:// :8080. Мы должны увидеть привычную страницу:

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

* в разделе Server API мы должны увидеть Apache.

NGINX + Apache

Ранее мы настроили связку nginx + php-fpm. Теперь настроим nginx + apache. Открываем конфигурационный файл nginx для сайта по умолчанию:

Находим наш настроенный location для php-fpm:

Проверяем и перезапускаем nginx:

systemctl restart nginx

Пробуем открыть в браузере http:// — должна открыться та же страница, что при проверке Apache (с добавлением 8080):

установка nginx php fpm php mysql. Смотреть фото установка nginx php fpm php mysql. Смотреть картинку установка nginx php fpm php mysql. Картинка про установка nginx php fpm php mysql. Фото установка nginx php fpm php mysql

Apache Real IP

Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.

Создаем конфигурационный файл со следующим содержимым:

RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy 127.0.0.1/8

systemctl restart apache2

Postfix

В качестве агента MTA мы будем использовать удобный в настройке и надежный Postfix.

Установка, настройка и запуск

Устанавливаем пакет postfix:

apt-get install postfix

Вносим некоторые изменения в настройки:

* mydomain — домен сервера; myorigin — имя домена, которое будет подставляться всем отправляемым сообщениям без явного указания оного; smtp_generic_maps указывает на карту с общими правилами пересылки.

Открываем карту пересылки:

* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес no-reply@dmosk.local.

Включаем автозапуск почтового сервера и перезапускаем его службу:

systemctl enable postfix

systemctl restart postfix

Корректная отправка

Для того, чтобы сервер мог отправлять сообщения на внешние ящики, необходимо корректно настроить в DNS, как минимум, записи A и PTR.

Для добавления А-записи, необходимо в настройках панели управления нашим доменом создать запись типа. Ее имя и IP-адрес должны соответствовать имени и адресу нашего сервера.

Для создания PTR-записи необходимо написать письмо Интернет-провайдеру, к которому подключен наш сервер. Если наш сервер арендуется у хостинговой компании, необходимо либо написать данное письмо данной хостинговой компании, либо данная возможность может быть предоставлена в панели управления хостинговыми услугами.

Тюнинг веб-сервера

Открываем на редактирование следующий файл:

И правим следующее:

post_max_size = 1G
.
upload_max_filesize = 512M
.
short_open_tag = On
.
date.timezone = «Europe/Moscow»

* где post_max_size — максимальный объем отправляемых на сервер данных; upload_max_filesize — максимально допустимый размер одного загружаемого файла; short_open_tag — разрешение использования короткого способа открытия php (
Define root_domain site1.local
Define root_path /var/www/site1.local

Создаем каталоги для сайта:

Создаем индексный файл со следующим содержимым:

Задаем права на папки:

Проверяем корректность настроек конфигурационных файлов:

systemctl reload nginx

systemctl reload apache2

Открываем сайт в браузере по нашему домену site1.local (он должен быть прописан в DNS или можно его задать в локальном файле hosts того компьютера, с которого мы открываем сайт в браузере). Мы должны увидит фразу «Hello from site1».

2. Создание базы данных

Создаем базу данных для сайта командами:

> CREATE DATABASE site1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

> GRANT ALL PRIVILEGES ON site1.* TO dbuser@localhost IDENTIFIED BY ‘password’ WITH GRANT OPTION;

* данными sql-командами мы создаем базу данных site1 и предоставляем к ней доступ для учетной записи dbuser с паролем password. При желании сделать соединение более безопасным, можно убрать WITH GRANT OPTION.

3. Создание пользователя FTP

Для возможности подключения к сайту по FTP, создаем отдельного пользователя:

* тут мы создадим пользователя site1.local, который будет иметь доступ к каталогу /var/www/$TMP_SITE.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *