ЭТАП.2 Установка PostgreSQL и создание БД для проекта.
Для Windows (через официальный инсталлятор)
Шаг 1. Скачай установщик
Переходи на официальный сайт: https://www.postgresql.org/download/windows/
Выбирай последнюю версию (сейчас 16.x или 17.x) и скачивай интерактивный установщик от EDB.
Шаг 2. Запусти установку
- Запусти скачанный
.exeфайл от имени администратора. - Нажми Next.
Шаг 3. Выбери компоненты
Оставь всё по умолчанию:
- ✅ PostgreSQL Server
- ✅ pgAdmin 4 (графическая админка)
- ✅ Stack Builder (для доп. расширений)
- ✅ Command Line Tools
Жми Next.
Шаг 4. Выбери папку установки
Оставь по умолчанию: C:\Program Files\PostgreSQL\18
Жми Next.
Шаг 5. Выбери каталог данных
Оставь по умолчанию: C:\Program Files\PostgreSQL\18\data
Жми Next.
Шаг 6. Задай пароль суперпользователя (postgres)
Очень важно! Запомни этот пароль.
Придумай что-то вроде: root или любой свой посложнее
Запиши его в блокнот, он понадобится для подключения Laravel.
Жми Next.
Шаг 7. Порт
Оставь стандартный: 5432
Жми Next.
Шаг 8. Локаль
Выбери: Russian, Russia (или оставь Default locale)
Жми Next.
Шаг 9. Заверши установку
Нажми Next → Finish.
Через системные переменные (рекомендую) Найди папку с PostgreSQL.
Запомни путь, где лежит psql.exe — например: C:\Program Files\PostgreSQL\18\bin
Открой настройки переменных окружения.
Win + R → введи sysdm.cpl → Enter
Добавь путь в PATH
- В нижнем окне (Системные переменные) найди строку Path.
- Выдели её → нажми Изменить.
- Нажми Создать (или Новая).
- Вставь путь к папке
bin, например:
C:\Program Files\PostgreSQL\18\bin
После установки — проверь через командную строку:
psql --version
Если видишь версию — всё готово! Теперь проверим доступность БД:
pg_isready -h localhost -p 5432
Должно быть: localhost:5432 – accepting connections
Теперь зайдем через терминал в БД:
psql -U postgres -h localhost -p 5432
Введи пароль, который задал. Если появилось postgres=# — всё работает.
PostgreSQL установлена теперь надо создать саму БД для проекта !
Правильная команда для создания БД назовем ее dating_db
psql -U postgres -h localhost -p 5432 -c "CREATE DATABASE dating_db ENCODING='UTF8' LC_COLLATE='Russian_Russia.UTF-8' LC_CTYPE='Russian_Russia.UTF-8' TEMPLATE=template0;"
Пароль тот который мы использовали при установке – root
Проверяем, что база создалась
psql -U postgres -h localhost -p 5432 -l | grep dating_db
Пример как создать еще пользователя для БД. Но нам это пока что не нужно. Мы будем использовать postgres и root
Создаём пользователя laravel_user
psql -U postgres -h localhost -p 5432 -c "CREATE USER laravel_user WITH PASSWORD 'laravel_pass';"
Даём права на базу dating_db
psql -U postgres -h localhost -p 5432 -c "GRANT ALL PRIVILEGES ON DATABASE dating_db TO laravel_user;"
Проверь, что пользователь может подключиться к базе
psql -U laravel_user -h localhost -p 5432 -d dating_db
Введи пароль laravel_pass. Если зашло — всё работает! Выйди через \q.
ЭТАП.3 Подключаем Laravel к базе
Открой созданный проект в редакторе кода (рекомендую VS Code или PhpStorm). Найди файл .env в корне проекта и подключись. Найди блок с настройками БД и измени его:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=dating_db
DB_USERNAME=postgres
DB_PASSWORD=root
Включаем драйвер PostgreSQL
- Открой этот файл
php.iniв любом текстовом редакторе (от имени администратора, если ругнется). - Нажми
Ctrl+Fи ищи строкуpdo_pgsql. - Ты найдешь строчку, которая выглядит так:
;extension=pdo_pgsql - Убери точку с запятой в начале — это символ комментария. Должно стать так:
extension=pdo_pgsql - Теперь нажми
Ctrl+Fи ищи строкуpgsql. - Найди строчку
;extension=pgsqlи тоже убери точку с запятой:extension=pgsql - убери также точку с запятой: ;extension=intl
(Если этих строк вообще нет в файле, просто допиши их в блок расширений (extension)).
ОБЯЗАТЕЛЬНО закрой терминал (PowerShell), в котором у тебя выскочила ошибка, и открой его заново! Терминал кэширует настройки PHP, и если его не перезапустить, он не увидит изменений. Также перезапусти локальный сервер если нужно.
Делаем миграцию
cd server
php artisan migrate
если все хорошо ты увидишь что то вроде:
INFO Preparing database.
Creating migration table ........................................................................................................... 228.52ms DONE
INFO Running migrations.
0001_01_01_000000_create_users_table ............................................................................................... 416.58ms DONE
0001_01_01_000001_create_cache_table ................................................................................................ 16.00ms DONE
0001_01_01_000002_create_jobs_table ................................................................................................ 114.36ms DONE
ГОТОВО ! Мы прошли самую нудную часть — настройку окружения. Теперь Laravel знает, где лежат данные.
Проверка что все хорошо
В php.ini у тебя должно быть включено расширение intl (Internationalization — интернационализация). Laravel использует его для форматирования чисел, дат и валют.
php artisan db:show
должно быть без ошибок что то вроде:
PostgreSQL .................................................................................................................................. 18.4
Connection ................................................................................................................................. pgsql
Database ............................................................................................................................... dating_db
Host ................................................................................................................................... 127.0.0.1
Port ........................................................................................................................................ 5432
Username ................................................................................................................................ postgres
URL ..............................................................................................................................................
Open Connections ............................................................................................................................... 9
Tables ......................................................................................................................................... 9
Total Size ............................................................................................................................. 216.00 KB
Schema / Table .............................................................................................................................. Size
public / cache .......................................................................................................................... 24.00 KB
public / cache_locks .................................................................................................................... 24.00 KB
public / failed_jobs .................................................................................................................... 32.00 KB
public / job_batches .................................................................................................................... 16.00 KB
public / jobs ........................................................................................................................... 24.00 KB
public / migrations ..................................................................................................................... 24.00 KB
public / password_reset_tokens .......................................................................................................... 16.00 KB
public / sessions ....................................................................................................................... 32.00 KB
public / users .......................................................................................................................... 24.00 KB
Если так то все отлично !
Проектирование базы данных для Дейтинга + Геолокация
Сайты знакомств держатся на трех китах: Профили, Геолокация, Совпадения (Свайпы). Стандартной таблицы users из коробки нам не хватит.
Правильный подход: таблица users хранит только логин/пароль и email, а всё остальное (возраст, пол, фото, био) вынесем в таблицу profiles. Зачем? Чтобы не раздувать таблицу юзеров, когда нам понадобится делать сложные выборки.
Шаг 2.1: Установка PostGIS (Геолокация)
- Скачай установщик.
Перейди на официальную страницу загрузки PostGIS для Windows. Тебе нужен файл для PostgreSQL 18 (64-бит). Название файла будет выглядеть примерно так:postgis-bundle-pg18x64-setup-3.6.2-1.exe.- Прямая ссылка на страницу:
download.osgeo.org/postgis/windows/pg18/ - Официальный сайт:
postgis.net
- Прямая ссылка на страницу:
- Запусти установку.
Нам нужно научить PostgreSQL искать людей в радиусе X километров. Для этого нужен модуль PostGIS.
psql -U postgres -h localhost -p 5432 -d dating_db -c "CREATE EXTENSION postgis;"
в консоли после ввода пароля должно появится CREATE EXTENSION значит все ок !