Установка Symfony Mercure на сервере cpanel без VPSPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Установка Symfony Mercure на сервере cpanel без VPS

Сообщение Anonymous »

На самом деле это был вопрос, но я забыл отправить сюда, а затем решил его другим методом.
Я хочу поделиться этим методом, может быть, кому-то он будет полезен.
обычно Другими словами, мы используем Mercure как ./mercure run, используя caddyfile.dev в файле сценария bash с именем launch.sh, через run launch.sh & (я использую dev.caddyfile, я переименован в caddyfile.dev, указанный в документации Mercure, в dev.caddyfile (оба одинаковые)
launch.sh:

Код: Выделить всё

MERCURE_PUBLISHER_JWT_KEY='some_secret_key' \
MERCURE_SUBSCRIBER_JWT_KEY='some_secret_key' \
./mercure run --config dev.Caddyfile
затем мы запускаем launch.sh в терминале, мы работаем на локальном хосте lol
но на хосте cpanel мы можем получить доступ к терминалу и можем запустить launch.sh, но когда мы закройте вкладку браузера, он остановится. вы можете использовать nohup для запуска его в фоновом режиме, но — по крайней мере, насколько я знаю — он остановится в конфигурации вашего хостинга. это была проблема в моей работе. я не могу использовать Меркурий. он должен запускаться в терминале всегда, и у меня нет доступа.
вот решение:
  • установка и настройка Mercure : вы можете прочитать документацию.
  • создание файла launch.sh: мы зарегистрируем его как задание cron.
  • caddyfile.dev или dev.caddyfile что вы хотите переименовать: файл конфигурации
    это мой файл конфигурации:

Код: Выделить всё

{
http_port 8081
https_port 8082
order mercure after encode

{$GLOBAL_OPTIONS}
}

{$CADDY_EXTRA_CONFIG}

{$SERVER_NAME:sanal-tur.com.tr:8081} {
log {
format filter {
# Defaults to console while waiting for https://github.com/caddyserver/caddy/pull/5980
wrap console
fields {
uri query {
replace authorization REDACTED
}
}
}
}

encode zstd gzip

mercure {
# Transport to use (default to Bolt)
transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
# Publisher JWT key
publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
# Subscriber JWT key
subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
# Permissive configuration for the development environment
publish_origins *
demo
anonymous
subscriptions
# Extra directives
{$MERCURE_EXTRA_DIRECTIVES}
cors_origins http://localhost:8000 http://127.0.0.1:8000
}

{$CADDY_SERVER_EXTRA_DIRECTIVES}

redir / /.well-known/mercure/ui/

respond /healthz 200
respond /robots.txt `User-agent: *
Disallow: /`
respond "Not Found" 404
}
Я использую локальный хост cors_origins. cors_origins http://localhost:8000 http://127.0.0.1:8000 и $SERVER_NAME — ваш домен.
  • я создаю задание cron для launch.sh. задание cron выполняет: если есть процесс с именем Mercure, он ничего не делает. в противном случае он запускается с помощью nohup, поэтому он работает всегда. вот код:

    Код: Выделить всё

    pgrep -f launch.sh || nohup /path/to/mercure/launch.sh > /path/to/mercure/mercure.log 2>&1 &
это правда? я решил, но не уверен.

Подробнее здесь: https://stackoverflow.com/questions/790 ... nel-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»