Создание нового проекта

Первым делом нам нужно разобраться с вашей рабочей средой. Я использую одни из самых популярных инструментов:
  • Операционную систему MacOS с менеджером пакетов Homebrew
  • Laravel Valet для локальной разработки
  • Интегрированную среду PhpStorm
  • Веб-сервер Nginx
  • База данных MySQL 8.0
  • Php 7.4 и NodeJS 17
Здесь нет ничего особенного, обычный набор веб-разработчика.
Если вы используете такой же сетап, то поздравляю, вам будет максимально легко следовать моим инструкциям - нужно только установить специальный драйвер для Valet из репозитория vesp-valet-driver, что делается простым копированием файла VespValetDriver.php в ~/.config/valet/Drivers.
Структурно Vesp состоит из 2х больших частей: фронтенда на VueJS и бэкенда на PHP. Обе части разрабатываются (и могут быть использованы) независимо друг от друга и хранятся в разных репозиториях:
Объединяются они в 1 общем пакете, который называется просто Vesp и ставится из Packagist при помощи composer. Давайте создадим наш новый проект VespShop.
composer create-project vesp/vesp ./VespShop
Команда create-project у composer не просто скачивает пакеты, но и запускает скрипты, прописанные в composer.json. В нашем случае они устанавливают зависимости Node.js.
Далее заходим в директорию VespShop и делаем valet link vesp-shop, что создаёт в нашем Valet новый сайт vesp-shop.test.
В нём пока ничего нет, поэтому делаем в той же директории composer node:generate и переходим по локальному адресу http://vesp-shop.test - теперь вы должны увидеть такую картинку:
Давайте разберёмся как это всё работает.

Структура проекта

В корне проекта лежат следующие файлы и директории:
  • .env.dist пример конфигурации проекта
  • .env рабочая конфигурация, которая исопользуется в проекте
  • composer.json наши PHP зависимости и команды управления проектом
  • composer.lock служебный файл Composer с установленными версиями зависимостей
  • core это наш бэкенд со всем PHP кодом: модели, контроллеры, маршруты, консольные скрипты - в общем, вся серверная часть.
  • frontend а это, понятное дело, фронтенд. Причём внутри сразу 2 независимых веб-приложения: админка и публичный веб-сайт
  • www публично доступная директория с одним единственным коннектором для запросов в API и примером правил для .htaccess.
Запущенная нами команда composer node:generate создала в frontend/dist статичные HTML и JS файлы нашего фронтенда. Причём там собрано 2 приложения: admin и site.
Когда вы открываете vesp-shop.test, ваш запрос принимает локальный Nginx, отправляет в Valet, тот смотрим доступные драйвера, запускает драйвер для Vesp, а тот говорит ему, откуда нужно грузить файлы - именно из frontend/dist.
Статичные файл загружаются в браузер и дальше отправляют запросы на сервер через API. Таким образом и происходит всё взаимодействие фронтеда с бэкендом, через разные запросы в API и ответы в формате JSON.
Важно понимать, что в отличие от MODX сервер здесь не генерирует никакой HTML код в момент запроса, весь нужный код уже заранее сгенерирован и загружен пользователем. Теперь он просто выводится в соотвеcтвии со своей логикой и ответами бэкенда.
Публичный сайт по умолчанию никаких запросов пока не делает, просто выводит логотип системы на чёрном фоне. Поэтому давайте посмотрим на админку по адресу http://vesp-shop.test/admin/.
Что бы вы здесь не указывали, получите ошибку. Потому что у нас еще нет никаких данных, мы даже таблицы еще не создали.

Работа с базой данных

Первым делом нам нужно создать базу для нашего проекта.
mysql -e "create database VespShop" -uroot -proot
Как видно, у меня локальный root MySQL с паролем root. Дальше смотрим наш .env файл и меняем настройки:
# имя проекта, будет использовать на фронтенде
APP_NAME="Vesp Shop"

# базовый url сайта 
SITE_URL=http://vesp-shop.test/

# url для API запросов, может отличаться от базового
API_URL=http://vesp-shop.test/api/

# Разрешение для кроссдоменных запросов, на локалке обязательно включаем
CORS=1

# Настройки доступа в MySQL
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_PREFIX=app_
DB_DATABASE=VespShop
DB_USERNAME=root
DB_PASSWORD=root
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_general_ci
DB_FOREIGN_KEYS=1

# Настройки для генерации JWT, пока можно не трогать
JWT_SECRET=secret
JWT_EXPIRE=2592000
JWT_MAX=3

# Абсолютные пути к директориям 
UPLOAD_DIR=/Users/bezumkin/Projects/VespShop/upload/
CACHE_DIR=/Users/bezumkin/Projects/VespShop/tmp/
Вы должны указать собственные пути к директориям, их можно узнать командой pwd в MacOS.
После изменения файла .env нам нужно пересобрать фронтенд, потому что изменился адрес отправки API запросов - composer node:generate.
А дальше запускаем новые команды:
composer db:migrate
composer db:seed
Первая команда создаёт таблицы, вторая "засеивает" их начальными данными.
После этого можно заходить в админку с логином и паролем admin.

Заключение

Сегодня мы создали и настроили новый проект на Vesp. Он уже работает, но все страницы и данные пока по-умолчанию. На следующих уроках мы научимся их менять под свои нужды.
Часть с настройкой проекта на локальной машине обычно вызывает самое больше число вопросов, поэтому я жду их в комментариях. Как только разберёмся с этим, дальше всё пойдёт гораздо проще и быстрее.

63 комментария

Использую Valet, но при заходе на локальный домен пишет: Did not get front controller from driver. Please return a front controller to be executed.
Василий Наумкин
Нужно установить драйвер Valet для Vesp
wget https://raw.githubusercontent.com/bezumkin/vesp-valet-driver/main/VespValetDriver.php \
-O ~/.config/valet/Drivers/VespValetDriver.php
А потом перейти в директорию проекта и проверить, что её обслуживает именно он командой valet which, в ответ должно быть
This site is served by [VespValetDriver]
Спасибо! Да, дело оказалось в нём в итоге. Только в моем случае его надо было скопировать в папку ~/.valet/Drivers поскольку конфиги лежали именно там. Видимо от версии еще зависит.
Василий Наумкин
Видимо =)
Кирилл Дворянинов
У меня вообще чему-то пишет при заходе на vesp-shop.test 404 - Not Found
А в папке при команде valet which выдает следующее - This site is served by [BasicValetDriver].
Да и еще при вызове node:generate - [BABEL] Note: The code generator has deoptimised the styling of /Users/kirill/Desktop/Project/VespShop/frontend/node_modules/bootstrap-vue/src/icons/icons.js as it exceeds the max of 500KB.
Василий Наумкин
This site is served by [BasicValetDriver].
Значит драйвер Vesp не установлен. Проверь директорию, может тоже нужно в ~/.valet/Drivers скопировать.
[BABEL] Note: The code generator has deoptimised the styling of
Это просто замечание, не ошибка - можно смело игнорировать.
Valet не использую. С иконками в админке какая-то шляпа.
Конфиг для NGINXа такой
server {
    listen 80;
    server_name vesp-shop.local;
    root /Users/alex/sites/VespShop/www;

    location ~ ^/(api|__clockwork)/ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass  127.0.0.1:9000;
        rewrite .* /api.php;
        break;
    }

    location ~ ^/admin$ {
        return 302 $uri/;
    }

    location ~ ^/admin/ {
        root /Users/alex/sites/VespShop/frontend/dist/;
        try_files $uri /admin/200.html;
    }

    location / {
        root /Users/alex/sites/VespShop/frontend/dist/site/;
        try_files $uri /200.html;
    }
}
Василий Наумкин
Скорее всего это баг стилей fontawesome, после их перехода на 6ю версию.
Пока можно не обращать внимания, я проверю и добавлю исправление в Vesp.
Дмитрий П.
Я решал эту проблему добавляя в index.scss импорт стилей
@import "@fortawesome/fontawesome-svg-core/styles.css";
При чем в dev режиме все нормально, а в production - ломаются стили
Василий Наумкин
Да, именно так это и решается - просто мне надо прописать импорт в Vesp по умолчанию.
Василий Наумкин
Обновил пакет в репозитории, теперь все новые установки будут с этими стилями.
vesp-shop.test "Not found."
Три раза все переустанавливал valet which This site is served by [VespValetDriver].
Василий Наумкин
А что говорит valet links?
Эта команда должна показать домены всех обслуживаемых сайтов.
Василий Наумкин
Слушай, а ты не забыл сделать composer node:generate случайно? А то, может, сайт-то работает - просто открывать нечего?
[BABEL] Note: The code generator has deoptimised the styling of ***/Sites/VespShop/frontend/node_modules/bootstrap-vue/src/icons/icons.js as it exceeds the max of 500KB.
Вот такая ошибка куда вставить babel: { compact: true } который я нагуглил по этой ошибке не разобрался
Василий Наумкин
Это не ошибка, а note - заметка, можно смело игнорировать.
Но спасибо за наводку, добавил в nuxt.config.js по умолчанию:
Config.build = {
  babel: {
    compact: true,
  },
}
заработал Vesp. Ура! И да я пропустил node:generate :)
Василий Наумкин
Отлично!
vesp-shop | | http://vesp-shop.test | /Users/***/Sites/VespShop | php@7.4
Думал может настроил что то не так при установке в окружении, но modx установился все в порядке
Василий Наумкин
Показывает, что типа все ок.
Похоже проблема в DnsMasq
sudo brew services list:
dnsmasq started
а вот если просто brew services list то так: dnsmasq error 19968
Попробую погуглить что не так с этим может быть
Василий Наумкин
Попробуй сам пока разобраться, если никак - спишемся завтра в Телеграмм и настрою тебе всё через AnyDesk удаленно.
Александр Наумов
Василий, добрый день!
У меня локально стоит Ubuntu desktop, а сервер настроен по твоей инструкции
Конфигурация такая: Nginx, MySQL 8.0, Php 7.4, NodeJS 17.
Valet не использую отсюда не могу выполнить команду valet link vesp-shop
Запускаю composer node:generate и получаю ошибку:
Направь, пожалуйста, куда копать?
Василий Наумкин
Это моя ошибка в composer.json, я там указал npm generate, а нужно npm run generate
Александр Наумов
Сейчас вот так:
Василий Наумкин
Ха-ха, вот я криворукий!
Короче, сделай npm install --global yarn, чтобы глобально установить пакетный менеджер yarn и дальше все должно быть ок
Александр Наумов
Василий, спасибо, все круто!
А почему npm не справился, там же написано (yarn generate || npm run generate)?
Василий Наумкин
Да просто я сам не пользуюсь npm, поэтому команды не проверил.
На неделе починю их как положено, спасибо за баг-репорт.
Александр Наумов
Все понял, спасибо!
Александр Наумов
Василий добрый день!
После настройки файла .env запускаю команду composer node:generate и получаю ошибку:
Пишет, что у concurrently нет прав, а у меня в корне не сформировалась папка node_modules - видимо в этом проблема.
Направь, пожалуйста, куда копать?
На данном этапе у меня в корне вот так:
Василий Наумкин
node_modules должно быть внутри frontend, а не в корне.
Попробуй запустить еще раз composer node:install, а потом проверить права на файл frontend/node_modules/.bin/concurrently - возможно в Ubuntu он не делается исполняемым при установке.
Если так, то chmod +x frontend/node_modules/.bin/concurrently должно помочь.
Александр Наумов
Василий, спасибо большое!
Да, в папке .bin у всех файлов не было прав на исполнение.
Команда composer node:install сделала все файлы исполняемыми.
Еще сделал исполняемыми файлы carbon и phinx в папке /core/vendor/bin. Таблица с данными создалась.
Но вот при входе в админку появилась 405 ошибка.
Почитал в Интернете про ошибку, понастраивал nginx конфиг.
Вопрос, может еще где-то нужно сделать файлы исполняемыми или это всего скорее проблема из-за настроек FastCGI?
Василий Наумкин
Я думаю, что проблема в Nginx - там нужно прописать отдельный location для запросов API. Вот мой рабочий конфиг для продакшн-сервера на Ubuntu:
server {
    listen                  80;
    server_name             vesp.pro;
    root                    /home/vesp/www;
    access_log              /var/log/vesp/vesp-access.log;
    error_log               /var/log/vesp/vesp-error.log;
    index                   200.html;
    client_max_body_size    0;
    rewrite_log             on;

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass backend-vesp;
    }

    location ~ ^/(api|__clockwork)/ {
        rewrite ^/(api|__clockwork)/(.*)$ /api.php;
    }

    location ~ ^/(favicons|images)/(.*) {
        access_log off;
        alias /home/vesp/frontend/dist/site/$1/$2;
    }

    location / {
        root /home/vesp/frontend/dist/site/;
        access_log off;
        gzip on;
        gzip_types text/css application/javascript application/x-javascript text/javascript image/svg+xml;
        expires 1y;
        try_files $uri /200.html;
    }
}
Тебе нужно поменять пути и указать свой fastcgi_pass - он создаётся в php-fpm.
Александр Наумов
Спасибо за наводку, и за конфиг! Все, первый урок осилил, вошел в админку!
Только вот страница админки без вот таких настроек не открывалась:
    location ~ ^/admin$ {
        return 302 $uri/;
    }

    location ~ ^/admin/ {
        root /home/big-ok/www/vesp-shop.test/frontend/dist/;
        try_files $uri /admin/200.html;
    }
Василий Наумкин
Да, всё верно - я скопировал правила из проекта без админки =)
Очень рад, что ты справился!
Доброй ночи! Локальный адрес сайта открывается, в базе данных таблицы создались, начальные данные "засеяны". Но при попытке зайти в админку получаю 404 ошибку. Содержимое . env-файла
APP_NAME="Vesp Shop" # имя проекта, будет использовать на фронтенде

SITE_URL=http://vesp-shop.test/ # базовый url сайта 
API_URL=http://vesp-shop.test/api/ # url для API запросов, может отличаться от базового

CORS=1 # Разрешение для кроссдоменных запросов, на локалке обязательно включаем

# Настройки доступа в MySQL
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_PREFIX=app_
DB_DATABASE=VespShop
DB_USERNAME=root
DB_PASSWORD=rootroot
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_general_ci
DB_FOREIGN_KEYS=1

# Настройки для генерации JWT, пока можно не трогать
JWT_SECRET=secret
JWT_EXPIRE=2592000
JWT_MAX=3

# Абсолютные пути к директориям 
UPLOAD_DIR=/Volumes/D/goroskop/VespShop/upload/
CACHE_DIR=/Volumes/D/goroskop/VespShop/tmp/
Василий Наумкин
Посмотри в консоли браузера, куда улетают запросы - возможно ты забыл обновить фронтенд после редактирования .env, тогда будет неправильный адрес для API запросов. Нужно запустить composer node:generate еще раз.
Если адрес верный, то попробуй открыть http://vesp-shop.test/api/user/profile, в отает должно быть "Authentication required". Если увидишь тот же Not Found от сервера, значит он неправильно настроен и запросы в API не работают.
Адрес для API запросов верный, при открытии http://vesp-shop.test/api/user/profile - получаю ответ - "Authentication required"
Василий Наумкин
Что-то в консоли адрес совсем неверный - там много непонятного между /api/ и /security/login/
Думаю комментарии из .env нужно убрать, они явно попадают в значения.
SITE_URL=http://vesp-shop.test/ # базовый url сайта 
API_URL=http://vesp-shop.test/api/ # url для API запросов, может отличаться от базового
CORS=1 # Разрешение для кроссдоменных запросов, на локалке обязательно включаем
переделать в
SITE_URL=http://vesp-shop.test/
API_URL=http://vesp-shop.test/api/
CORS=1
И пересобрать фронтенд
Ты прав, спасибо! Убрал комментарии из .env + пересобрал фронтенд и все заработало.
Василий Наумкин
Поправил заметку, чтобы такого не было у других!
У меня такое было Забыл написать, что комментарии тоже убирал ссылка такая и получалась "http://vesp-shop.test/api/ # url для API запросов, может отличаться от базового"
Василий Наумкин
Честно говоря, я не подумал, что кто-то будет заменять оригинальные файлы примерами из заметки =)
Василий, привет! Пытаюсь установить Vesp на сервер с Ubuntu 22.04 и PHP 8.1 который идет по умолчанию.
composer create-project vesp/vesp ~/project --no-dev --remove-vcs
Получаю такую ругань:
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires akrabat/ip-address-middleware ^1.0 -> satisfiable by akrabat/ip-address-middleware[1.0, 1.0.1].
    - akrabat/ip-address-middleware[1.0, ..., 1.0.1] require php ^7.0 -> your php version (8.1.2) does not satisfy that requirement.
  Problem 2
    - Root composer.json requires peppeocchi/php-cron-scheduler ^3.1 -> satisfiable by peppeocchi/php-cron-scheduler[v3.1].
    - peppeocchi/php-cron-scheduler v3.1 requires php ^7.1 -> your php version (8.1.2) does not satisfy that requirement.
Поправь пожалуйста версии.
Василий Наумкин
Поправил, спасибо!
Дмитрий
Блин, все оказалось несколько сложнее чем ожидалось. Пользуюсь Windows и именно с этого проблемы начались. Docker не установился должным образом, провозился день с ним, психанул удалил. Laravel Valet это для Маков. Решил попробовать старый добрый Open Server. Не запускался ни один из скриптов composera. После нескольких часов поиска понял, что нужно в composer.json слэши на обратные слэши поменять. Далее, так как нет специального драйвера Valet, запустил проект командой composer node:dev. Сайт открылся по адресу http://192.168.88.180:4100/. Админка открылась по адресу http://192.168.88.180:4000/admin/ Теперь проблема, при заходе в админку, ошибка 500, стал ругаться CORS. Поскольку в настройках .env API_URL стоит http://vespshop/api/. Окей, API_URL ставлю http://192.168.88.180:4000/api/ , запускаю команду composer node:generate. Пытаюсь опять зайти в админку, вылетает ошибка gin.vue:32 URIError: URI malformed at decodeURIComponent () at Storage.getCookie (runtime.mjs:292:1) at Storage.getUniversal (runtime.mjs:140:1) at Storage.syncUniversal (runtime.mjs:151:1) at Token._syncToken (runtime.mjs:1019:1) at Token.sync (runtime.mjs:971:1) at LocalScheme.check (runtime.mjs:1148:1) at LocalScheme.fetchUser (runtime.mjs:1208:1) at LocalScheme.login (runtime.mjs:1199:1)
Что делать не пойму. Идти макбук покупать? Может посоветуете для винды чего-нибудь помимо докера
Василий Наумкин
ошибка gin.vue:32
Это что за файл такой, откуда взялся?
Ошибка говорит, что в нём вызывается команда decodeURIComponent с неправильными параметрами. Надо найти и поправить.
Идти макбук покупать? Может посоветуете для винды чего-нибудь помимо докера
Могу посоветовать обычную виртуалку с GNU/Linux.
Дмитрий
Не правильно вставил, две буквы затерлись, там файл login.vue:32
А вообще как решается проблема с CORS на продакшене. Допустим я положил бекенд на один хост, а фронтенд на другой? Он же не даст общаться через APi
Василий Наумкин
Нет никакой проблемы с CORS, эти заголовки разрешаются или запрещаются в файле .env соответствующей переменной.
Судя по ошибке в login.vue у тебя как раз с этим файлом проблемы, видимо там указан неправильный адрес для запросов в API, поэтому его и не получается обработать.
Дмитрий
Почему тогда такой запрос не проходит ? В .env стоит API_URL=http://vespshop/api/ CORS=1
Василий Наумкин
У тебя указан домен первого уровня, без домена второго уровня.
Попробуй просто открыть из браузера http://vespshop/api/ и посмотреть, что получится. Я думаю, что твой браузер просто не надёт такого сайта.
Дмитрий П.
Что делать не пойму. Идти макбук покупать? Может посоветуете для винды чего-нибудь помимо докера
Попробуй WSL с Ubuntu. У меня под win10 все работает как и на обычной ubuntu. Только файлы проекта лучше размещать внутри wsl, а не на примонтированных виндовых дисках (у них скорость чтения очень маленькая).
Дмитрий
Попробую, спасибо
Что делать не пойму. Идти макбук покупать? Может посоветуете для винды чего-нибудь помимо докера
Я сначала пробовал на винде WSL с Ubuntu, но там не все у меня получалось как Вася пишет. В итоге повесил VESP на свой VPS с Ubuntu 20.04 и там все работает, правда после того как хостеры мне PHP-FPM помогли настроить). Но к докеру на WSL с Ubuntu потом вернусь, нужно будет все же научиться на локалке работать.
на локалке windows использую virtual box, можно смонтировать любое окружение и работать точно так же как и на выделенном сервере
Можно и так. Главное - варианты есть, если хочешь ковырять VESP). Virtual Box я использовал на десктопной Убунте, чтобы ставить некроссплатформенный виндовский софт. И у меня остались от этого не очень хорошие воспоминания - страшно медленно все работало и это ужасное маленькое окошко. Может сейчас и по-другому. Лично мне Докер на WSL показался намного удобнее , я просто запутался там с открытием страниц с разными портами и параметрами - на домене все потом устаканилось.
Далее заходим в директорию VespShop и делаем valet link vesp-shop, что создаёт в нашем Valet новый сайт vesp-shop.test.
Я пытаюсь поставить проект на windows 10 под Openserver. Есть ли какое то действие, чтобы сделать подобное.... Или это не обязательно и для windows использовать просто домен http://vespshop/ ? И еще такой вопрос - где находится корень сайта в этом приложении? C:\OSPanel\domains\VespShop или C:\OSPanel\domains\VespShop\www Я записал в .env так SITE_URL=http://vespshop/ API_URL=http://vespshop/api/ Но где эта папка api? В корне сайта ее нет...
Василий Наумкин
Увы, не могу ничем помочь - ни разу в жизни не пользовался OpenServer.
Но где эта папка api? В корне сайта ее нет...
Её и не должно быть - это виртуальный адрес. Все запросы должны перенапрвляться на www/api.php, а там уже сработает роутинг.
# composer db:migrate
Composer could not detect the root package (vesp/vesp) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version
> cd core && vendor/bin/phinx migrate
'vendor' is not recognized as an internal or external command,
operable program or batch file.
Script cd core && vendor/bin/phinx migrate handling the db:migrate event returned with error code 1
Подскажите пожалуйста почему не срабатывает миграция? База данных создана, пользователь и пароль в .env прописаны правильные.... Что ему нужно?
Василий Наумкин
Полагаю, что на Windows такие пути и команды просто не работают.
Я понял, спасибо за ответы. Попробую на VPS собрать и запустить.
Блин... не получается:( Создаю проект командой composer create-project vesp/vesp site.ru Все отрабатывается нормально. Захожу в директорию site.ru там выполняю composer node:generate Тоже все отрабатывается нормально. Прописываю в .env SITE_URL=http://site.ru/ API_URL=http://site.ru/api/ и данные для базы данных. Выполняю в консоли composer db:migrate и composer db:seed - все отрабатывает нормально. Главная страница открылась, при попытке войти в админку выдает Ошибка 500: Ошибка сервера.
Я подозреваю, что неправильно составил конфиг Nginx. Вот мой конфиг.
server {
    listen @@@@@@@: 80;
    server_name             site.ru;   
    ssl_certificate "/@@@@@@@/site.ru_le2.crtca";
    ssl_certificate_key "/@@@@@@@@/site.ru_le2.key";
    ssl_ciphers @@@@@@@:!NULL:!RC4;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    root                    /@@@@@@/site.ru/www;
    access_log              /var/log/vesp/vesp-access.log;
    error_log               /var/log/vesp/vesp-error.log;
    index                   200.html;
    client_max_body_size    0;
    rewrite_log             on;
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_pass 127.0.0.1:9000;
    }
    location ~ ^/(api|__clockwork)/ {
        rewrite ^/(api|__clockwork)/(.*)$ /api.php;
    }
    location ~ ^/(favicons|images)/(.*) {
        access_log off;
        alias /@@@@@@/site.ru/frontend/dist/site/$1/$2;
    }

   location ~ ^/admin$ {
        return 302 $uri/;
    }
    location ~ ^/admin/ {
        root /@@@@@@@/site.ru/frontend/dist/;
        try_files $uri /admin/200.html;
    }

    location / {
        root /@@@@@@@/site.ru/frontend/dist/site/;
        access_log off;
        gzip on;
        gzip_types text/css application/javascript application/x-javascript text/javascript image/svg+xml;
        expires 1y;
        try_files $uri /200.html;
    }
}
Вообще VPS сконфигурирован как связка apache+nginx. Может что то нужно в apache добавить? Или этот валет нужен? Я так понял он только для локальной на макбуке.... Кто хорошо разбирается - помогите пожалуйста настрить нормально конфиг.
Василий Наумкин
Ошибка 500
Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи.
Вообще VPS сконфигурирован как связка apache+nginx
Тогда непонятно, почему в конфиге Nginx указан php-fpm:
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_pass 127.0.0.1:9000;
    }
В общем, нужно смотреть логи Nginx, PHP и Apache2 в поисках конкретной проблемы, чтобы её решать.
bezumkin.ru
Личный сайт Василия Наумкина
Прямой эфир
inna
06.11.2024, 15:47:13
Да. Все работает. Спасибо.
Ivan CR
24.10.2024, 15:20:54
С днем рождения!!! Класс, что в твоей жизни есть такие интересные достижения.
Василий Наумкин
01.07.2024, 11:56:41
Да, верно, именно так. А в контроллере, скорее всего, ловить данные методом post.
Василий Наумкин
26.06.2024, 09:38:15
О, точно, вылезает если не залогинен. Спасибо, исправил!
Василий Наумкин
09.04.2024, 04:45:01
> Ошибка 500 Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи. ...
Василий Наумкин
20.03.2024, 21:21:52
Volledig!
Андрей
14.03.2024, 13:47:10
Василий! Как всегда очень круто! Моё почтение!
russel gal
09.03.2024, 20:17:18
> А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал...
Александр Наумов
27.01.2024, 03:06:18
Василий, спасибо! Извини, тупанул.
Василий Наумкин
22.01.2024, 07:43:20
Давай-давай!