Linux nginx postgresql php

Содержание
  1. Запуск PHP приложения на Docker контейнерах (PHP-FPM, Nginx, PostgreSQL)
  2. 1. Установка Docker
  3. 2. Создание образов
  4. DockerFileNginx
  5. DockerFilePostgresql
  6. DockerFile
  7. Создание образов на основе DockerFile’ов
  8. Запуск образов на сервере
  9. Установка NextCloud+Nginx+PHP+PostgreSQL на Linux
  10. Системные требования для NextCloud:
  11. Установка
  12. Установка PostgreSQL
  13. Установка PHP
  14. Установка Web-сервера Nginx
  15. Установка NextCloud
  16. Настройка
  17. Настройка Nginx для NextCloud
  18. Настройка PHP
  19. Настройка PostgreSQL
  20. GNet Solutions » GNU/Linux Administration
  21. Support #692
  22. Install an Nginx, PostgreSQL, PHP 5.6 Web Server on Arch
  23. Prepare the Environment¶
  24. Install Nginx¶
  25. Default Static Website¶
  26. Install PostgreSQL 9.4¶
  27. Create a new user and database¶
  28. Install PHP¶
  29. PHP Website¶
  30. (Extra) Install Phusion Passenger¶
  31. Ruby Website¶
  32. Securing Nginx With SSL¶
  33. Certificate Bundles¶
  34. Установка Nginx и PHP-FPM в Ubuntu 20.04
  35. Установка Nginx на Ubuntu 20.04
  36. 1. Официальные репозитории Ubuntu
  37. 2. Официальные репозитории Nginx
  38. 3. Запуск Nginx
  39. 4. Настройка брандмауэра
  40. 5. Проверка работы Nginx
  41. Установка PHP-FPM в Ubuntu
  42. Подключение Nginx к PHP-FPM
  43. Настройка PHP-FPM для прослушивания на сокете UNIX
  44. Настройка PHP-FPM для прослушивания через сокет TCP/IP
  45. Настройка NGINX для работы PHP-FPM
  46. Удаление Nginx и PHP-FPM с Ubuntu
  47. Выводы

Запуск PHP приложения на Docker контейнерах (PHP-FPM, Nginx, PostgreSQL)

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

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

  1. Веб-сервер
  2. СУБД
  3. PHP приложение

В нашем примере мы будем использовать Nginx, PostgreSQL и PHP-FPM.

1. Установка Docker

Для начала работы, нам потребуется Docker. Скачать его можно на официальном сайте Docker.

2. Создание образов

Docker создает образы на основе DockerFile файлов, в котором описывается функционал. Мы создадим 3 образа для наших составляющих.

DockerFileNginx

В данном DockerFile мы создаем пользователя www-data с группой 82 и устанавливаем Nginx. Последняя строка COPY предполагает, что у вас конфигурация приложения лежит в папке config/website.conf. Она скопируется в /etc/nginx/conf.d/website.conf.

DockerFilePostgresql

В этом образе, мы будем отталкиваться от образа postgres:9.5.2 и выполним команду для определения локали и языка.

DockerFile

Этот образ послужит нам основным образом для нашего приложения. Сначала мы устанавливаем все необходимое для PHP и PHP-FPM. Далее, мы копируем текущую папку приложения в /usr/src/app, где будет распологаться наше приложение. В самом конце мы запускаем PHP-FPM.

Создание образов на основе DockerFile’ов

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

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

Мы создаем образы, прикрепляем их к нашему аккаунту на Docker Hub. Теперь, нам нужно отправить наши образы на репозиторий в Docker Hub. Выполняем следующие команды:

Запуск образов на сервере

Мы почти у цели! Нам осталось загрузить образы из репозитория и запустить их. Загружаем их с помощью следующих команд:

Осталось их запустить. Делается это так же просто.

Вуаля! Наше приложение запущено на Docker контейнерах. И тем не менее, всем читателям-новичкам я бы обязательно ознакомиться с документацией Docker.

Всем желаю успехов в освоении новых технологий!

Источник

Установка NextCloud+Nginx+PHP+PostgreSQL на Linux

Сегодня в статье рассмотрим пример по установке и настройке домашнего облака NextCloud в среде Linux, также установим базу данных PostgreSQL и Web-сервер Nginx с PHP-FPM. Установка будет производиться на чистую Ubuntu Server 20.04 LTS.

Системные требования для NextCloud:

  • База данных: MySQL 5.7+, или MariaDB 10.2, или PostgreSQL 9.5+
  • Веб-сервер: Apache с mod_php или php-fpm или nginx с php-fpm
  • Php: 7.3+
  • ОЗУ: 512Мб+ или 2ГБ+, если использовать пакета Collabora или OnlyOffice

Установка

Разобьем установку на части. Установим базу данных PostgreSQL, интерпретатор PHP, далее web-сервер Nginx, ну и последним пунктом наше облако NextCloud:

Установка PostgreSQL

Для установки базы данных в терминале набираем:

Установка PHP

Для установки PHP для начала добавим более новый репозиторий:

После этого устанавливаем PHP и необходимые зависимости для NextCloud.

Предупреждение: в данный момент NextCloud поддерживает PHP версии не выше 7.4

Установка Web-сервера Nginx

Для установки nginx для начала добавим, как и с PHP, более новый репозиторий:

Теперь можно установить наш web-сервер. Устанавливать будем сборку в которую включен модуль для проигрывания потокового видео с нашего сервера (поддержка модуля mp4). Открываем терминал и набираем:

Установка NextCloud

После всех пунктов выше приступим к установки нашего домашнего облака NextCloud. Для этого переходим в директорию /var/www :

Скачиваем последнюю версию NextCloud (на момент написания статьи версия NextCloud была 21.0.0), а также сразу распакуем и изменим права на директорию NextCloud:

Настройка

Как и в пункте с установкой, настройка также будет разбита по пунктам. Давайте приступим.

Настройка Nginx для NextCloud

Приступим к настройке web-сервера nginx. Создадим файл конфигурации для NextCloud, работать наш сервер будет на порту 80. И так начнем:

Заполняем в соответствии с моим листингом:

Адрес https://mynextcloud.ru измените на свой.

Настройка PHP

Настроим PHP для работы с NextCloud. В терминале набираем:

Находим и редактируем следующие строки:

Настройка PostgreSQL

Сперва настроим наш PostgreSQL для прослушивания всех внутренних адресов сервера. Для этого открываем следующий файл:

Находим и редактируем данную строчку к такому виду:

Читайте также:  Можно ли разделить диск с уже установленной windows

Теперь можно создать нашу БД для NextCloud, а также создадим пользователя БД и пароль для него. Подключаемся к postgresql:

Создаем базу данных и пользователя для nextcloud

Далее переходим по адресу нашего сервера (локальному или внешнему например: http://mynextcloud.ru ) и видим первоначальную установку NextCloud

Из скриншота видим, что на самом верху нам предлагается придумать учетную запись и пароль администратора nextcloud.

Далее идет поле для выбора каталога с данными. Данное поле отвечает за размещение всех данных пользователей в директории на сервере. Я оставляю без изменений.

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

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

Замечание: В панели администратора в пункте общие сведения Вы можете наблюдать различные ошибки и предупреждения от системы. Как их устранить я писал тут.

На этом наша настройка домашнего облака NextCloud завершается. Всем удачи.

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.

Источник

GNet Solutions » GNU/Linux Administration

Support #692

Install an Nginx, PostgreSQL, PHP 5.6 Web Server on Arch

Description

  • Table of contents
  • Prepare the Environment
  • Install Nginx
    • Default Static Website
  • Install PostgreSQL 9.4
    • Create a new user and database
  • Install PHP
    • PHP Website
  • (Extra) Install Phusion Passenger
    • Ruby Website
  • Securing Nginx With SSL
    • Certificate Bundles
  • Resources

Here is a procedure to install Nginx, PostgreSQL and PHP web server stack on Arch Linux.

Prepare the Environment¶

  • Before installation of the components, make sure everything is up to date using the following command:
  • Install a few dependencies:
  • Add the sudo group
  • Edit the sudoers file:
    • And uncomment the %sudo line to allow users in the sudo group access to sudo:
  • Add a webuser
    • And add webuser to the sudo group:
  • Start and enable ntpd:

Install Nginx¶

  • Install Nginx
  • Start and enable nginx at boot:
  • Create a configuration directory to make managing individual server blocks easier
  • Edit the main nginx config file:
    • And strip down the config file and add the include statement at the end to make it easier to handle various server blocks:

Default Static Website¶

Start by setting up a simple static website, no server-side stuff PHP or Ruby; just plain HTML, CSS, JavaScript, etc.

  • Create a directory for the web site:
  • Add a default site server block:
    • Add the following:

Install PostgreSQL 9.4¶

  • Make sure to enable en_US.UTF-8 in the locale generation file:
    • And regenerate the local locales:
  • Install PostgreSQL:
  • Enable PostgreSQL at boot:
    • NOTE: If the postgresql database is on a btrfs filesystem, make sure to disable Copy-on-Write for the postgresql database folder:
  • Switch to the postgresql user:
    • Initialize the database:
    • Then exit the postgresql user:
  • Start PostgreSQL:
  • Edit the postgres config file:
    • And modify the following:
  • Edit the pg_hba config file:
    • And modify the following:
  • And wrap up by restarting the postgresql server:

Create a new user and database¶

  • Switch to the pgsql user:
    • Create the somepgdb database:
    • Then create the somepguser user:
    • Grant all privileges to somepgdb to somepguser:
    • Exit from the postgresql user

Install PHP¶

  • Install PHP 5.6 and php-fpm:
  • Install PHP extensions and a few modules:
    • NOTE: There are many more PHP modules, to search for more PHP modules run:
  • Enable php-fpm at boot:
  • Edit the php-fpm config:
    • Make the following changes:
  • Start php-fpm:

PHP Website¶

  • Create a directory for the web application:
  • Add a phpapp.example.com server block:
    • Add the following:
  • Add the PHP files for the site and change the ownership to the http user:
  • Restart nginx:

(Extra) Install Phusion Passenger¶

  • Remove the system nginx package:
    • Remove the old nginx configuration directory
  • Install the base-devel package:
  • Import the RVM GPG signing key:
  • Install RVM:
  • Then add the following line to the end of your

    /.bash_login file

    • Now logout and log back in for rvm to take effect
  • Add the http user to the rvm group:
  • See if there are any dependency requirements for your installation by running:
  • Install ruby 2.1.5:
  • Run the following to allow passenger install nginx:
  • Link the new nginx configuration folder in the /etc folder:
    • Don’t forget to remake the conf.d folder in the nginx configuration folder:
  • Edit the main nginx config file:
    • And add the Passenger config parameters:
  • Create a new nginx systemd init script:
    • And add the following:
  • Start and enable nginx at boot::

Ruby Website¶

  • Create a directory for the web application:
  • Add a rubyapp.example.com server block:
    • Add the following:
  • Restart nginx to load the website config:

Securing Nginx With SSL¶

Enabling SSL in Nginx is simple. First add the ssl directive in the server listen option, then add the SSL certificate and key paths.

  • The basic SSL server block should be look similar to the following:
  • Setup the Diffie-Hellman Key Exchange Parameters
  • Generate a strong SSL key and a CSR to send for signing by a CA:
    • If the received SSL certificate requires additional bundle certificates, add them together like so:
  • Setup the default site configuration:
    • Then add or modify the configuration to look similar to the following:
  • Restart nginx to load the new website config:
Читайте также:  Установка active directory windows 10 20h2

Certificate Bundles¶

Some browsers may complain about a certificate signed by a well-known certificate authority, while other browsers may accept the certificate without issues. This occurs because the issuing authority has signed the server certificate using an intermediate certificate that is not present in the certificate base of well-known trusted certificate authorities which is distributed with a particular browser. In this case the authority provides a bundle of chained certificates which should be concatenated to the signed server certificate.

  • The server certificate must appear before the chained certificates in the combined file:
  • The resulting file should be used in the ssl_certificate directive:

Источник

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

Интерпретатор языка программирования PHP может работать в нескольких режимах. Он может быть интегрирован в веб-сервер в виде специального модуля или использоваться как отдельный сервис PHP-FPM. Аббревиатура FPM расшифровывается как FastCGI Process Manager. Это сервис, который запускает несколько процессов, которые могут выполнять PHP скрипты.

PHP-FPM может получать скрипты, которые надо выполнить, с помощью TCP или Unix сокетов. Именно такой способ выполнения скриптов используется в Nginx. В этой статье мы рассмотрим как выполняется установка Nginx с PHP-FPM в Ubuntu.

Установка Nginx на Ubuntu 20.04

Установить Nginx можно двумя способами. Первый способ заключается в установки пакета из официального репозитория Ubuntu. На момент написания статьи (1 августа 2021 года) актуальной версией Nginx присутствующей в репозитории Ubuntu была версия 1.18.0. Данная версия считается устаревшей. Актуальной же версией считается 1.20.1 (по состоянию на 1 августа 2021 года).

1. Официальные репозитории Ubuntu

Если вы хотите установить версию Nginx из репозиториев Ubuntu необходимо выполнить следующие действия. Для начала обновляем списки пакетов при помощи команды:

sudo apt update

Для того, чтобы установить Nginx, достаточно выполнить команду:

sudo apt -y install nginx

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

2. Официальные репозитории Nginx

Второй способ заключается в установке последней версии Nginx из официальных репозиториев, которые предоставляют разработчики Nginx. Если вы хотите использовать данный метод установки, для начала необходимо обновить списки пакетов при помощи команды:

sudo apt update

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

sudo apt -y install curl gnupg2 ca-certificates lsb-release

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

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

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

Для подключения репозитория с основной версией nginx, выполните следующую команду:

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

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

curl -o /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key

Проверьте, верный ли ключ был загружен:

gpg —dry-run —quiet —import —import-options import-show /tmp/nginx_signing.key

Вывод команды должен содержать полный отпечаток ключа 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:

Переместите ключ в каталог доверенных ключей apt:

sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc

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

sudo apt update

sudo apt -y install nginx

Версия Nginx от разработчиков немного отличается от версии из официальных репозиториев. Все дополнительные конфигурационные файлы здесь находятся в папке /etc/nginx/conf.d. Если вы хотите использовать папки sites-available и sites-enabled, то необходимо их создать:

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

Затем добавьте следующую строчку в конец секции http файла /etc/nginx.conf для того чтобы из папки /etc/nginx/sites-enabled загружалась конфигурация сайтов:

sudo vi /etc/nginx/nginx.conf

Затем перезапустите Nginx:

sudo nginx -s reload

3. Запуск Nginx

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

sudo systemctl status nginx

Если в статусе вместо active будет inactive (dead), то сервис необходимо запустить вручную при помощи команды:

sudo systemctl start nginx

Так же обратите внимание, что вы не можете запускать Apache и Nginx на одном порту. В таком случае вы получите ошибку nginx address already in use 80. Для корректной работы Nginx, необходимо будет отключить веб-сервер Apache (если он у вас используется) или изменить его порт с 80 (который используется по умолчанию) на другой свободный порт.

4. Настройка брандмауэра

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

sudo ufw allow in 80/tcp

5. Проверка работы Nginx

После того, как Nginx будет запущен, он будет доступен по адресу сервера, на который он устанавливался. Вы можете проверить, всё ли работает, просто перейдя по адресу сервера, введя его в браузере. Для примера Nginx был установлен на localhost:

Читайте также:  Как удалить файлы старой windows после установки windows 10

Если вы увидите приветственное сообщение как на скриншоте выше это означает что Nginx успешно установлен и запущен.

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

Следующим шагом будет установка интерпретатора языка программирования PHP и всех необходимых модулей для работы с PHP-FPM. Для установки всех необходимых модулей выполните команду:

sudo apt -y install php7.4 php7.4-cli php7.4-fpm php7.4-json php7.4-pdo php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml php-pear php7.4-bcmath

На момент написания статьи (1 августа 2021) актуальной версией PHP в официальных репозиториях Ubuntu считалась версия 7.4. Самая же последняя официальная версия PHP от разработчиков 8.0.9 (по состоянию на 29 июля 2021 года). После установки всех необходимых пакетов проверяем статус PHP-FPM:

systemctl status php7.4-fpm.service

Если в статусе вместо active будет inactive (dead), то сервис необходимо запустить вручную при помощи команды:

sudo systemctl start php7.4-fpm.service

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

Подключение 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 по умолчанию, используя свой любимый текстовый редактор при помощи команды:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

Затем найдите директиву 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. Убедитесь, что выбранный вами порт не используется другим процессом или службой в той же системе.

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

Найдите параметр 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, откроем его для редактирования:

sudo nano /etc/nginx/conf.d/default.conf

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

\.php$ <
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
>

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

\.php$ <
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
>

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

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

sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

После перезапуска служб, подключение считается выполненным успешно. Для дальнейшей настройки PHP-FPM воспользуйтесь статьей по настройке PHP-FPM на Ubuntu 20.04 – Настройка PHP-FPM

Удаление Nginx и PHP-FPM с Ubuntu

Чтобы полностью удалить Nginx и PHP-FPM из системы, достаточно удалить все пакеты, которые вы установили ранее:

sudo apt -y purge nginx php7.4 php7.4-cli php7.4-fpm php7.4-json php7.4-pdo php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml php-pear php7.4-bcmath

Команда purge позволяет удалить не только пакеты, но и их конфигурационные файлы. Если вы хотите оставить конфигурационные файлы, используйте команду remove.

Выводы

В этой статье мы разобрали, как выполняется установка Nginx PHP-FPM в Ubuntu 20.04. Как видите, это не очень сложно и с такой задачей может справиться даже новичок. Если у вас остались вопросы, оставляйте их в комментариях!

Источник

Оцените статью