Php postgresql extension linux

Установка сервера Linux + (Nginx + Apache) + PostgreSQL + PHP на VirtualBox (Ubuntu Server 16.04.3 LTS)

На просторах интернета не нашел единого рецепта по установке и настройке такого, довольно нестандартного сервера. Решил написать свой рецепт.

Принцип работы следующий:


Статические данные (файлы) отдает Nginx, а динамикой занимается Apache.
Начнем.

Установим VirtualBox

    Запустим установщик VirtualBox.


Настройки оставим по умолчанию.


Установщик временно отключит нас от сети. Жмем «Yes».

  • Начинаем установку.
  • Финиш.

    Подготовим VirtualBox к установке Ubuntu Server 16.04.3 LTS

    1. Загрузим образ ubuntu-16.04.3-server-amd64.iso
    2. Создадим виртуальную машину.


    Имя: default_server
    Тип: Linux
    Версия: Ubuntu (64-bit)
    Объем оперативной памяти: 2048 МБ

    Важно: У меня 8 ГБ оперативной памяти, и в моем случае, двух гигабайт будет достаточно. У вас может быть иначе.


    Размер жесткого диска: 15 ГБ
    Другие параметры оставим по умолчанию.


    Жмем «Создать».

    Сразу настроим сеть.


    Сменим тип подключения с NAT на Сетевой мост.


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

    Установка Ubuntu Server 16.04.3 LTS

      Выберем загрузочный диск с образом Ubuntu Server 16.04.3 LTS.


    Выбираем удобный язык, у меня это русский.


    Жмем «Enter».
    Выбираем «Установить Ubuntu Server».


    Выбираем страну.

    Важно: Читайте подсказку внизу экрана.

    Я не буду определять раскладку клавиатуры, мне это не нужно.


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


    Выбираем регион раскладки.


    Выбираем комбинацию клавиш, для переключения языка. Мне удобно через CTRL+
    SHIFT.


    Введем имя компьютера, под которым он будут известен в сети.


    Вводим имя админа.


    Вводим имя учетной записи админа (Будет использоваться как логин для входа в систему).


    Вводим пароль от учетной записи админа.


    Повторяем пароль.


    Почему бы и нет.


    Выбираем часовой пояс.


    Пусть система автоматически использует весь диск.


    Диск для разметки, выбираем по умолчанию.


    Записываем изменения на диск.


    У нас нету прокси, оставляем поле пустым и продолжаем.


    Пусть система сама устанавливает обновления безопасности.


    Выбираем набор программ, которые будут установлены вместе с системой.
    Нам будет достаточно стандартного набора и OpenSSH Server.


    Установим GRUB главным.


    Отлично, почти готово.


    Нам нужно изъять диск из привода.
    Устройства -> Оптические диски -> Изъять диск из привода


    Теперь жмем продолжить.
    Прекрасно, Ubuntu Server установлена.


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


    Продолжаем.
    Выбираем полное клонирование.


    Жмем клонировать. У меня клонирование длилось две минуты.

    Установим PuTTY, для доступа через SSH

      Запустим установочный файл.


    Настройки оставим по умолчанию.


    Жмем «Install».
    Финиш.

    Подключение через SSH к серверу

      Запустим клон нашей машины, что бы узнать ее ip адрес.
      Напишем команду:
      ifconfig


    На скриншоте я отметил место, где будет написан ваш ip адрес. У меня это: 192.168.0.103 (может смениться, пока писал статью, у меня сменился на 192.168.0.101).
    Теперь можно выйти из учетной записи, написав:
    exit

    Переходим в PuTTY, вводим ip адрес, и имя для сохраняемой сессии.


    Жмем «Save».

    Теперь, при двойном клике по имени сохраненной сессии.


    Мы должны наблюдать следующее:


    Вводим логин, после пароль.
    SSH соединение успешно настроено, теперь можно приступать к настройке (Nginx + Apache) + PostgreSQL + PHP.

    Установка и настройка (Nginx + Apache) + PostgreSQL + PHP

    Перейдем в режим суперпользователя
    sudo su
    Перейдем в корневой каталог
    cd /
    Добавим репозиторий PostgreSQL
    wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O — | sudo apt-key add —

    sh -c ‘echo «deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main» >> /etc/apt/sources.list.d/pgdg.list’
    Добавим репозиторий PHP
    add-apt-repository ppa:ondrej/php
    Сделаем update
    apt-get update
    Сделаем upgrade
    apt-get upgrade
    У меня upgrade длился пять минут.
    У становим python, он нам позже понадобится
    apt-get install python
    Приступим к установке Apache, PHP и PostgreSQL
    apt-get install apache2 php7.2 php7.2-cli php7.2-curl php7.2-fpm php7.2-pgsql postgresql postgresql-contrib postgresql-server-dev-10 libapache2-mod-rpaf build-essential apache2-dev
    По умолчанию, в PostgreSQL нету однобайтовых и беззнаковых чисел, поэтому мы их установим.
    Есть расширение для PostgreSQL, pguint — github.com/petere/pguint
    git clone https://github.com/petere/pguint.git /pguint
    Перейдем в созданный каталог
    cd /pguint
    Теперь нам нужно скомпилировать это расширение (тут понадобится python, который мы установили ранее).
    make

    make install
    Теперь, на сервер PostgreSQL, в нужную базу данных, где хотим использовать беззнаковые и однобайтовые числа, отправим:

    Вернемся в корневой каталог
    cd /
    Установим Nginx, но перед этим остановим Apache, дабы он не занимал порт 80, иначе Nginx не установится.
    service apache2 stop
    Установка Nginx
    apt-get install nginx
    Отлично, теперь остановим и Nginx
    service nginx stop
    Настройка Apache
    a2dismod mpm_event

    a2enconf php7.2-fpm
    Сменим порт Apache
    nano /etc/apache2/ports.conf
    Заменить

    127.0.0.1 — означает то, что к Apache можно обратиться только по локальному адресу.
    8080 — можете поставить любой свободный порт.
    Перейдем в папку с доступными сайтами
    cd /etc/apache2/sites-available
    Создадим конфигурационный файл нашего сайда
    nano domain-name.local.conf
    И привести его к такому виду:

    Посмотрим, что у нас лежит в /var/www
    cd /var/www/

    ls -F
    Папка html, нам более не нужна, удалим ее вместе с содержимым
    rm -R html
    Создадим свою папку, со своим сайтом
    mkdir domain-name.local/
    Перейдем в папку с нашим сайтом
    cd domain-name.local/
    Создадим документ index.pnp
    nano index.php
    В него запишем:

    С этим пока закончили.
    Вернемся в корневой каталог
    cd /
    В apache стоит rpaf 0.6 и он не передаёт/принимает порт от nginx и не работает правильно, как надо. Поэтому его надо обязательно обновить.
    wget -O rpaf_v0.8.4.tar.gz https://github.com/gnif/mod_rpaf/archive/v0.8.4.tar.gz

    tar xvf rpaf_v0.8.4.tar

    cd mod_rpaf-0.8.4/
    Теперь скомпилируем
    make

    make install
    Выходим в корневой каталог
    cd /
    Хорошо, продолжим настройку Apache.
    nano /etc/apache2/apache2.conf
    Заменить

    Приведем в порядок rpaf.conf
    nano /etc/apache2/mods-available/rpaf.conf
    Приведем его к такому виду:

    Включим наш сайт в Apache.
    a2ensite domain-name.local.conf
    И запустим наш Apache.
    service apache2 start
    C Apache закончили.
    Настроим Nginx
    nano /etc/nginx/sites-available/domain-name.local
    Привести к такому виду:

    Теперь создадим символьную ссылку на этот файл
    ln -s /etc/nginx/sites-available/domain-name.local /etc/nginx/sites-enabled/domain-name.local
    Отредактируем /etc/nginx/sites-available/default
    nano /etc/nginx/sites-available/default
    Уберем default_server.
    И вставим перенаправление с www. и ip

    Запускаем Nginx.
    service nginx start
    Отлично, можем проверить как оно работает.
    Но перед этим отредактируем файл хоста C:\Windows\System32\drivers\etc
    Открыть файл hosts через текстовый редактор, и в самый низ вставить:
    192.168.0.101 domain-name.local
    192.168.0.101 www.domain-name.local
    Заменив ip и домен на свои.
    В браузере перейдем по domain-name.local, и если вы делали все по этому рецепту, мы должны увидеть страницу с phpinfo.
    Отлично, дело осталось за малым.
    Настроим PostgreSQL.
    Создадим нового пользователя PostgreSQL
    sudo -u postgres createuser —superuser test-user
    Войдем в СУБД
    sudo -u postgres psql
    И сменим новому пользователю пароль
    \password test-user
    Теперь новому пользователю нужно сменить тип подключения, для этого нам нужно найти pg_hba.conf файл.
    Пишем


    Покидаем СУБД
    \q
    И начинаем редактировать /etc/postgresql/10/main/pg_hba.conf
    nano /etc/postgresql/10/main/pg_hba.conf
    Ищем
    # Database administrative login by Unix domain socket
    Находим следующее:
    # Database administrative login by Unix domain socket
    local all postgres peer
    Приводим к таком виду:
    # Database administrative login by Unix domain socket
    local all postgres peer
    local all test-user md5
    Перезагрузим PostgreSQL
    service postgresql restart
    Теперь войдем в СУБД через нового пользователя
    psql test-user -h 127.0.0.1 -d postgres
    Вводим пароль, и попадаем в СУБД.
    Создадим тестовую базу данных

    И сразу перейдем в нее
    \c test_db
    Подключим расширение pguint

    И создадим тестовую таблицу

    Заполним таблицу тестовыми данными

    Посмотрим содержимое таблицы test_tb

    Теперь попробуем вывести эти данные из php.
    Закрываем соединение с СУБД
    \q
    Откроем /var/www/domain-name.local/index.php
    nano /var/www/domain-name.local/index.php
    И приведем к следующему виду:
    «; ?>

    Теперь проверим, и убедимся, что это работает


    Отлично, мы настроили (Nginx + Apache) + PostgreSQL + PHP и он исправно работает.

    Настроим FTP доступ к сайту

    Установим FTP сервер
    apt-get install vsftpd
    Остановим vsftpd перед настройкой
    service vsftpd stop
    Откроем etc/vsftpd.conf
    nano etc/vsftpd.conf
    Установить/заменить/переключить следующие параметры:

    1. listen=YES
    2. listen_ipv6=NO
    3. local_enable=YES
    4. write_enable=YES
    5. chroot_local_user=YES
    6. pam_service_name=ftp

    Создадим нового пользователя для доступа через FTP
    useradd -d /home/domain-name -s /sbin/nologin domain-name
    Установим для него пароль
    passwd domain-name
    Создадим домашнюю директорию пользователя
    mkdir -p /home/domain-name
    Установим для нее права
    chmod a-w /home/domain-name
    Создадим группу для пользователя
    groupadd ftps
    Добавим пользователя в группу
    usermod -G ftps domain-name
    Поменяем владельца каталога
    chown -R domain-name:ftps /home/domain-name
    Создадим папку нашего сайта
    mkdir /home/domain-name/domain-name.local
    Сменим у нее владельца
    chown -R domain-name:ftps /home/domain-name/domain-name.local
    Смонтируем наши каталоги, откроем файл /etc/fstab
    nano /etc/fstab
    В самый низ вставим
    /var/www/domain-name.local /home/domain-name/domain-name.local none bind 0 0
    Добавим владельца /var/www/domain-name.local
    chown www-data:domain-name /var/www/domain-name.local/ -R
    Назначим права
    find /var/www/domain-name.local -type d -exec chmod 775 <> \;
    find /var/www/domain-name.local -type f -exec chmod 664 <> \;
    И запустим vsftpd
    service vsftpd start
    Проверим, я буду использовать FileZilla.


    Все хорошо, попробуем создать каталог.


    Работает.
    Настроим защищенное FTP соединение.
    Остановим vsftpd
    service vsftpd stop
    Сгенерируем сертификат
    openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
    Тут вводим все, что вшей душе угодно

    Country Name (2 letter code) [AU]:
    State or Province Name (full name) [Some-State]:
    Locality Name (eg, city) []:
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:
    Organizational Unit Name (eg, section) []:
    Common Name (e.g. server FQDN or YOUR name) []:
    Email Address []:

    Откроем etc/vsftpd.conf
    nano etc/vsftpd.conf
    Установим/добавим следующие параметры:

    1. ssl_enable=YES
    2. ssl_tlsv1=YES
    3. ssl_sslv2=NO
    4. ssl_sslv3=NO
    5. rsa_cert_file=/etc/ssl/private/vsftpd.pem
    6. rsa_private_key_file=/etc/ssl/private/vsftpd.key
    7. allow_anon_ssl=NO
    8. force_local_data_ssl=YES
    9. force_local_logins_ssl=YES
    10. ssl_ciphers=HIGH

    Сохраним и запустим vsftpd
    service vsftpd start
    Давайте испытаем

    Ура, все работает, можно приступать к разработке веб приложения.

    Источник

    Читайте также:  Running mysql server windows
  • Оцените статью