Advanced Installation Topics
To fully automate the installation process, options can be passed in the CLI as parameters, rather than adding them interactively.
For Docker installation:
docker compose exec php vendor/bin/pimcore-install --admin-username=admin --admin-password=admin \
--mysql-username=username --mysql-password=password --mysql-database=pimcore \
--mysql-host-socket=127.0.0.1 --mysql-port=3306 \
--no-interaction
For webserver installation:
./vendor/bin/pimcore-install --admin-username=admin --admin-password=admin \
--mysql-username=username --mysql-password=password --mysql-database=pimcore \
--mysql-host-socket=127.0.0.1 --mysql-port=3306 \
--no-interaction
The --no-interaction
flag will prevent any interactive prompts.
To avoid having to pass sensitive data (e.g. DB password) as command line option, you can also set each parameter as env
variable. See ./vendor/bin/pimcore-install
for details. Example:
$ PIMCORE_INSTALL_MYSQL_USERNAME=username PIMCORE_INSTALL_MYSQL_PASSWORD=password ./vendor/bin/pimcore-install \
--admin-username=admin --admin-password=admin \
--mysql-database=pimcore \
--no-interaction
Installing Bundles
Overview of Bundle Lists
When installing, you will interact with two lists of bundles: Recommended Bundles and Required Bundles.
-
Recommended Bundles:
- Displayed to users during interactive mode.
- These are the bundles users can specify when using the
--install-bundles=commaSeparatedBundleList
option.
-
Required Bundles:
- These bundles will automatically be installed in interactive mode, if the user choses to install bundles.
- They are installed whenever the
--install-bundles
option is set.
Default Recommended Bundles
By default, here's what's included in the Recommended Bundles list:
- PimcoreApplicationLoggerBundle
- PimcoreCustomReportsBundle
- PimcoreGlossaryBundle
- PimcoreSeoBundle (for SEO-related topics: Robots.txt, Sitemaps and Redirects)
- PimcoreSimpleBackendSearchBundle (for default search functionality in Backend UI interface)
- PimcoreStaticRoutesBundle
- PimcoreQuillBundle (for default WYSIWYG editor)
- PimcoreUuidBundle
- PimcoreWordExportBundle (for import/export functionality for translations in Word format)
- PimcoreXliffBundle (for import/export functionality for translations in Xliff format)
Automating Bundle Installation
To install specific bundles automatically, use the --install-bundles[=bundleList]
flag. This flag installs and
activates all required bundles and any specified bundles, provided they are part of the recommended bundles list.
Note: The bundles will be automatically added to config/bundles.php
.
./vendor/bin/pimcore-install --admin-username=admin --admin-password=admin \
--mysql-username=username --mysql-password=password --mysql-database=pimcore \
--mysql-host-socket=127.0.0.1 --mysql-port=3306 \
--install-bundles=PimcoreApplicationLoggerBundle,PimcoreCustomReportsBundle \
--no-interaction
Modifying Required Bundles and Bundle Recommendations
The BundleSetupEvent
is triggered under two circumstances:
- To preset the installable (recommended) and automatically installed (required) bundles for the
--install-bundles
option. - To modify a list of recommended bundles in interactive mode. Required bundles are not installed if the user declines to install bundles.
By subscribing or listening to the BundleSetupEvent
, you can add or remove bundles from the required or recommended lists.
For practical examples, refer to the Pimcore Skeleton. It shows how the Admin UI Classic Bundle is integrated.
<?php
namespace App\EventSubscriber;
use Pimcore\Bundle\AdminBundle\PimcoreAdminBundle;
use Pimcore\Bundle\InstallBundle\Event\BundleSetupEvent;
use Pimcore\Bundle\InstallBundle\Event\InstallEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class BundleSetupSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
InstallEvents::EVENT_BUNDLE_SETUP => [
['bundleSetup'],
],
];
}
public function bundleSetup(BundleSetupEvent $event): void
{
// make bundle installable (using --install-bundles) and recommend it in interactive installation
$event->addInstallableBundle('PimcoreAdminBundle', PimcoreAdminBundle::class, true);
// add required bundle
$event->addRequiredBundle('PimcoreAdminBundle', PimcoreAdminBundle::class);
}
}
Make sure to register your listener/subscriber under config/installer.yaml
as described in Preconfiguring the Installer.
services:
# default configuration for services in *this* file
_defaults:
# automatically injects dependencies in your services
autowire: true
# automatically registers your services as commands, event subscribers, etc.
autoconfigure: true
# this means you cannot fetch services directly from the container via $container->get()
# if you need to do this, you can override this setting on individual services
public: false
# ---------------------------------------------------------
# Event Subscribers
# ---------------------------------------------------------
App\EventSubscriber\BundleSetupSubscriber: ~