First, let's get a copy of the distro, off which we will base our new project. For the sake of simplicity we'll call our new project example. After cloning switch right into the directory.
$ git clone https://github.com/bseries/distro.git example
$ cd example
The distro comes with a Vagrantfile, used by the vagrant program to boot up a virtual machine (VM) for development purposes. The VM already contains all necessary tools, a web server and a MariaDB database.
Let's first boot the VM and establish a route so requests to project.test
will go right into the VM.
$ vagrant up
$ vagrant ssh -c "hostname -I"
10.0.2.15 172.28.128.3
$ sudo sh -c 'echo "172.28.128.3 project.test" >> /etc/hosts'
The hostname -I
command often returns multiple IP addresses, use the one that looks the most legit to you (usually its the last one).
Our development machine is now running nicely, let's continue setting up the project. The outside project has been mounted at /var/www/project
inside the VM.
$ vagrant ssh
$ cd /var/www/project
The root of the project contains three important configuration files: Envfile
holds per environment configuration settings, Deployfile
configures the deploy target, Hoifile
used by Hoi for setting up the webserver and database. The Envfile
is well documented.
Currently the configuration files contain placeholders, i.e. __NAME__
. These can be filled in for you automatically as they can be derived easily from the project directory itself. They can also be replaced manually as well.
$ make prefill
Hoi is a host management program that orchestrates other services, so projects can be hosted with the execution of just one command. It automates setting up several aspects of a project i.e. SSL certificates, databases, cron jobs and HTTP auth for staging areas.
Hoi will generate all necessary web server configuration files and an empty database for us.
$ sudo hoictl load
project successfully loaded :)
As a PHP project the B-Series uses composer for managing PHP libraries. Let's install the initial round of dependencies as well as some more B-Series modules.
$ cd app
$ composer install
$ composer require bseries/cms_post
$ composer require bseries/cms_social
$ cd -
Some B-modules contain an assets
directory, which needs to be symlinked into the project's assets
directory, so files in there can be accessed by the web server. This needs to happen after installing the composer dependencies above and everytime after you added a new B-module.
$ make link-assets
ln -s ../app/assets assets/app
ln -s ../app/libraries/base_core/assets assets/base-core
ln -s ../app/libraries/base_media/assets assets/base-media
ln -s ../app/libraries/cms_core/assets assets/cms-core
The B-Series is ready for globalization by default. Internally it uses data from the Unicode Consortium: the CLDR. The globalization data is too extensive to include it with the distro. The following command will download and install it locally.
$ make app/resources/g11n/cldr
In the final two steps we will initialize the database table schema and create the initial admin user for the administration panel.
$ make db-init
$ bin/li3.php users create Admin [email protected] secret admin
Created user with:
name : Admin
email : [email protected]
password : secret
role : admin
The application is now ready for development: https://project.test
Login to the administration panel under: https://project.test/admin/session