Я хочу поделиться этим методом, может быть, кому-то он будет полезен.
обычно Другими словами, мы используем 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
но на хосте 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
}
- я создаю задание 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
Мобильная версия