baks-dev/core
BaksDev Core — базовый модуль для проектов BaksDev (PHP 8.4+): настройка основного домена через .env, примеры systemd-сервисов для messenger:consume, auto-scripts для установки ассетов и очистки кэша. Установка через Composer.
Installation
composer require baks-dev/core
Configure Domain
Add your domain to .env:
HOST=yourdomain.example
Set Up Systemd Worker (Linux only)
Copy the example service file from vendor/baks-dev/core/Resources/systemd to /etc/systemd/system/ (e.g., yourdomain.example-core-messenger@.service).
Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable yourdomain.example-core-messenger@yourdomain.example.service
sudo systemctl start yourdomain.example-core-messenger@yourdomain.example.service
Automate Composer Scripts
Add to composer.json:
"scripts": {
"auto-scripts": {
"baks:assets:install": "symfony-cmd",
"baks:cache:clear": "symfony-cmd"
},
"post-install-cmd": ["@auto-scripts"],
"post-update-cmd": ["@auto-scripts"]
}
First Use Case: Messenger Worker Trigger a test message via Laravel’s queue system or Symfony Messenger CLI:
php bin/console messenger:consume async -vv
HOST in .env to scope services (e.g., yourdomain.example-core-messenger@.service).config/core.php:
'domains' => [
'yourdomain.example' => [
'timezone' => 'Europe/Moscow',
'debug' => env('APP_DEBUG', false),
],
],
config/queue.php:
'connections' => [
'messenger' => [
'driver' => 'messenger',
'queue' => env('MESSENGER_QUEUE', 'default'),
],
],
Publish a message:
use Symfony\Component\Messenger\MessageBusInterface;
$bus->dispatch(new YourMessage());
baks:* scripts in app/Console/Kernel.php:
protected function commands()
{
$this->load(__DIR__.'/../vendor/baks-dev/core/src/Console');
}
php artisan baks:assets:install
@ syntax in systemd service files to accept domain as a parameter:
[Service]
ExecStart=/usr/bin/php /path/to/artisan messenger:consume %i
sudo systemctl daemon-reload
sudo systemctl restart yourdomain.example-core-messenger@yourdomain.example.service
baks:assets:install:
// In a custom command
$this->call('vite:build');
$this->call('baks:assets:install');
Service Provider Bridge:
// app/Providers/CoreServiceProvider.php
public function register()
{
$this->app->singleton(MessageBusInterface::class, function ($app) {
return $app->make('bus.messenger');
});
}
Queue Driver Alias:
// config/queue.php
'aliases' => [
'messenger' => 'symfony',
],
php bin/phpunit --group=core
$this->app->instance(MessageBusInterface::class, $mockBus);
files-cdn)config/files-cdn.php:
'conversions' => [
'webp' => [
'driver' => 'imagick',
'quality' => 80,
],
],
use BaksDev\FilesCdn\Facades\FilesCdn;
$webpPath = FilesCdn::convert('path/to/image.jpg', 'webp');
Systemd Dependency
supervisord in Docker or Kubernetes CronJob for scheduled tasks.
Example Dockerfile:
RUN apt-get update && apt-get install -y supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
PHP Version Conflict
composer.json or use a separate PHP-FPM pool for Symfony components.CLI Tooling Mismatch
baks:* commands use Symfony CLI, not Laravel Artisan.app/Console or use Symfony CLI directly:
./vendor/bin/symfony-cmd baks:assets:install
Domain Configuration Overrides
HOST in .env is global; may conflict with multi-tenant setups.config() with tenant-aware defaults:
config(['core.domain' => tenant()->domain]);
Messenger vs. Laravel Queues
// config/queue.php
'connections' => [
'messenger' => [
'driver' => 'symfony',
'queue' => env('MESSENGER_QUEUE', 'default'),
'bus' => 'bus.messenger',
],
],
Asset Pipeline Conflicts
baks:assets:install may overwrite Laravel Mix/Vite builds.composer.json and create a custom script:
"scripts": {
"dev": "mix",
"prod": "mix --prod"
}
Systemd Worker Logs
journalctl -u yourdomain.example-core-messenger@yourdomain.example.service -f
Messenger Debugging
config/messenger.php:
'transport' => [
'dsn' => env('MESSENGER_TRANSPORT_DSN'),
'options' => [
'debug' => true,
],
],
php bin/console messenger:consume debug -vv
Composer Script Debugging
./vendor/bin/symfony-cmd baks:assets:install --verbose
PHP Errors in Systemd
[Service]
StandardOutput=journal
StandardError=journal
Custom Systemd Templates
vendor/baks-dev/core/Resources/systemd by copying to config/core/systemd/ and overriding paths in config/core.php:
'systemd' => [
'templates_path' => base_path('config/core/systemd'),
],
Messenger Middleware
config/messenger.php:
'middleware' => [
\BaksDev\Core\Messenger\Middleware\YourMiddleware::class,
],
Asset Pipeline Hooks
baks:assets:install by publishing and overriding the command:
php artisan vendor:publish --tag=core-assets
app/Console/Commands/BaksAssetsInstall.php.**
How can I help you explore Laravel packages today?