Настройка VPS для хостинга php проекта (gentoo, nginx, php-fpm, mysql)

Введение.

  • Выбор OS.
  • Nginx+PHP-FPM как альтернатива Apache mod_php.

Установка и настройка.

  • make.conf, use, profile, cборка окружения.
  • Необходимые пакеты.
  • Настройка системы.
  • Настройка php-fpm.
  • Настройка nginx.
  • Примеры конфигов nginx для популярных CMS.
  • Безопасность.
  • Настройка доступа к файлам через sftp.

Оптимизация.

  • OC
  • файловая система.
  • mysql.
  • php и nginx.

Дополнения.

  • Обработка почты с помощью GMail.
  • Собственный почтовый сервер (exim, dovecot).
  • Настройка ftp сервера.
  • Средства мониторинга.

FAQ

 

Статья находится в процессе написания. Coming soon... =)

VPS - Gentoo nginx php-fpm - Введение

Выбор OS.

Так сложилось, что из дистрибутивов Linux я предпочитаю Debian based и Gentoo, ну и FreeBSD. Debian и FreeBSD, в зависимости от роли сервера я использую на выделенных серверах (FreeBSD чаще всего как хранилище, или в коммуникационных задачах, Debian в остальных случаях), Gentoo на VPS. 

В случае VPS, где ресурсы достаточно ограничены, я предпочитаю именно Gentoo, т.к. из-за её гибкой системы portage, можно удобно собирать ПО с нужными оптимизациями и только необходимыми зависимостями, что очень способствует работе при ограниченных ресурсах, Экономится, в частности, весьма ценная на VPS оперативная память. Чаще всего этот выбор возможен, т.к. у подавляющего большинства хостеров, предоставляющих VPS, имеется  пресет Gentoo.

Есть и минус, т.к. вычислительные мощности VPS достаточно скромны, сборка пакетов происходит небыстро. Но это операция после ввода сервера в строй не такая частая, и на мой взгляд экономия ресурсов во время работы этот минус с лихвой перевешивает.

Nginx+PHP-FPM как альтернатива Apache mod_php.

Теперь пара слов, почему выбрана именно связка nginx и php-fpm.

Тут опять основная причина в экономии памяти. Nginx не запускает в отличии от Apache по процессу (или потоку) на клиента, что очень существенно экономит память. Можно конечно было бы использовать схему Nginx (фронэнд) - Apache+ mod_php (бекэнд), но Apache в данной связке, вообще говоря, лишнее звено, т.к. вся его роль сводится к по большому счёту к обработке .htaccess файлов, реврайтам и запуску необходимого количества процессов php. Первое, в случае хостинга своих проектов не сильно нужно - изменения настроек можно сделать или в конфигурации nginx или в самом приложении, со второй проблемой Nginx справляется не хуже Apache, хотя из-за того, что синтаксис реврайтов различен, приходится произвести небольшую работу по их переписыванию. Но опять же, у нас не масс хостинг, и это не такая большая работа.  Запуск же обработчиков php возложен на php-fpm - fastcgi process manager, который раньше был патчем к php, а сейчас вошёл в поставку php из коробки, и вполне применим на продакшен серверах.