Roadiz Standard Edition CMS
Roadiz is a modern CMS based on a polymorphic node system which can handle many types of services and contents. Its back-office has been developed with a high sense of design and user experience. Roadiz theming system is built to live independently of back-office allowing easy switching and multiple themes for one content basis. For example, it allows you to create one theme for your desktop website and another one for your mobile, using the same node hierarchy. Roadiz is released under MIT license, so you can reuse and distribute its code for personal and commercial projects.
- Standard edition
- Update Roadiz sources
- Maximize performances for production
- Build a docker image with Gitlab Registry
- Roadiz website: http://www.roadiz.io
- Read the Docs documentation can be found at http://docs.roadiz.io
- API documentation can be found at http://api.roadiz.io
- Forum can be found at https://ask.roadiz.io
This is the production-ready edition for Roadiz. It is meant to set up your Apache/Nginx server root
web/ folder, keeping your app sources and themes secure.
# Create a new Roadiz project on develop branch composer create-project roadiz/standard-edition; # Navigate into your project dir cd standard-edition; # Create a new theme for your project bin/roadiz themes:generate --symlink --relative FooBar; # Go to your theme cd themes/FooBarTheme; # Build base theme assets yarn; # or npm install yarn build; # or npm run build
Composer will automatically create a new project based on Roadiz and download every dependency.
Composer script will copy a default configuration file and your entry-points in
web/ folder automatically
.env file in your project root to set up your Docker development environment.
Update Roadiz and your own theme assets
composer update -o --no-dev # Re-install your theme in public folder using relative symlinks (MacOS + Unix) # remove --relative flag on Windows to generate absolute symlinks bin/roadiz themes:assets:install --symlink --relative FooBar;
Develop with Docker
Docker on Linux will provide awesome performances, and a production-like environment without bloating your development machine:
# Copy sample environment variables # and adjust them against your needs. nano .env; # Build PHP image docker-compose build; # Create and start containers docker-compose up -d; # Adapt Makefile with your theme name and NPM/Yarn # This will be useful to generate assets and clear cache # in one command nano Makefile; cd themes/FooBarTheme; # Install NPM dependencies for your front-end dev environment. yarn; # npm install; # Then build assets yarn build; # npm run build
Issue with Solr container
Solr container declares its volume in
.data/solr in your project folder. After first launch this
folder may be created with
root owner causing Solr not to be able to populate it. Just run:
sudo chown -R $USER_UID:$USER_UID .data (replacing
$USER_UID with your local user id).
Develop with PHP internal server
# Edit your Makefile "DEV_DOMAIN" variable to use a dedicated port # to your project and your theme name. nano Makefile; # Launch PHP server make dev-server;
Install your theme assets and execute Roadiz commands
You can directly use
bin/roadiz command through
# Install Rozier back-office assets docker-compose exec -u www-data app bin/roadiz themes:assets:install Rozier # Install your theme assets as relative symlinks docker-compose exec -u www-data app bin/roadiz themes:assets:install --symlink --relative FooBar
Pay attention that PHP is running with www-data user. You must update your
.env file to
reflect your local user UID during image build.
# Type id command in your favorite terminal app id # It should output something like # uid=1000(toto)
So use the same uid in your
.env file before starting and building your docker image.
Update Roadiz sources
composer update to upgrade Roadiz.
You’ll need to execute regular operations if you need to migrate your database.
Maximize performances for production
You can follow the already well-documented article on Performance tuning for Symfony apps.
Optimize class autoloader
composer dump-autoload --optimize --no-dev --classmap-authoritative
Increase PHP cache sizes
; php.ini opcache.max_accelerated_files = 20000 realpath_cache_size=4096K realpath_cache_ttl=600
Build a docker image with Gitlab Registry
You can create a standalone Docker image with your Roadiz project thanks to our
image, a continuous integration tool such as Gitlab CI and a private Docker registry.
All your theme assets will be compiled in a controlled environment, and your production website
will have a minimal downtime at each update.
Make sure you don’t ignore
yarn.lock in your themes not to get dependency errors when your
CI system will compile your theme assets. You may do the same for your project
composer.lock to make sure
you’ll use the same dependencies' version in dev as well as in your CI jobs.
Standard Edition provides a basic configuration set with a
.gitlab-ci.ymlfile to reflect your Gitlab instance configuration and your theme path and your project name.
- Add your theme in Composer
pre-dockerscripts to be able to install your theme assets into
web/during Docker build:
php bin/roadiz themes:assets:install MyTheme
- Add your theme in
.dockerignorefile to include your assets during build, update the following lines to force ignored files into your Docker image:
!themes/BaseTheme/static !themes/BaseTheme/Resources/views/base.html.twig !themes/BaseTheme/Resources/views/partials/*
- Enable Registry and Continuous integration on your repository settings.
- Push your code on your Gitlab instance. An image build should be triggered after a new tag has been pushed and your test and build jobs succeeded.