Setting up a production instance of Toaster
A production instance of Toaster is one in which you wish to share the Toaster instance with remote and multiple users. It is also the setup which can cope with heavier loads on the web service. These instructions setup toaster in Build mode where builds and projects are run, viewed and defined by the Toaster web interface.
Requirements
- Build requirements
- Apache webserver
- mod-wsgi for Apache webserver
- Mysql database server
Ubuntu 14.04.3:
$ sudo apt-get install apache2 libapache2-mod-wsgi mysql-server virtualenv libmysqlclient-dev
Fedora 22/RH:
$ sudo dnf install httpd mod_wsgi python-virtualenv gcc mysql-devel
Installation
1. Checkout a copy of Poky into the web server directory. We're going to be using /var/www/toaster.
$ mkdir -p /var/www/toaster
$ cd /var/www/toaster/
$ git clone git://git.yoctoproject.org/poky
$ git checkout jethro # change for any release name required
2. Initialise a virtualenv and install Toaster dependencies. (Use virtualenv to keep the python packages isolated from your system provided packages - not required but recommended, alternative use your OS's package manager to install the packages)
$ cd /var/www/toaster/
$ virtualenv venv
$ source ./venv/bin/activate
$ pip install -r ./poky/bitbake/toaster-requirements.txt
$ pip install mysql
$ pip install MySQL-python
3. Configure toaster edit /var/www/toaster/poky/bitbake/lib/toaster/toastermain/settings.py
Edit the DATABASE settings:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'toaster_data',
'USER': 'toaster',
'PASSWORD': 'yourpasswordhere',
'HOST': 'localhost',
'PORT': '3306',
}
Edit the SECRET_KEY:
SECRET_KEY = 'YOUR SECRET RANDOM KEY HERE'
Edit the STATIC_ROOT:
STATIC_ROOT = '/var/www/toaster/static_files/'
4.' Now add the database and user to your mysql server that we just defined
$ mysql -u root -p
mysql> CREATE DATABASE toaster;
mysql> CREATE USER 'toaster'@'localhost' identified by 'yourpasswordhere';
mysql> GRANT all on toaster_data.* to 'toaster'@'localhost';
mysql> quit
n.b. You may want to decide on fewer privileges to the toaster user.
5. Get toaster to create the database schema, default data and collect up the statically service files
$ cd /var/www/toaster/poky/
$ ./bitbake/lib/toaster/manage.py syncdb --migrate
$ ./bitbake/lib/toaster/manage.py loadconf ./meta-yocto/conf/toasterconf.json
$ ./bitbake/lib/toaster/manage.py lsupdates
$ ./bitbake/lib/toaster/manage.py collectstatic
6. Add a config file for Toaster to your Apache web server's configurations available directory.
Ubuntu/Debian put it here: /etc/apache2/conf-available/toaster.conf
Fedora/RH usually here: /etc/httpd/conf.d/toaster.conf
Alias /static /var/www/toaster/static_files
<Directory /var/www/toaster/static_files>
Order allow,deny
Allow from all
Require all granted
</Directory>
WSGIDaemonProcess toaster_wsgi python-path=/var/www/toaster/poky/bitbake/lib/toaster:/var/www/toaster/venv/lib/python2.7/site-packages
WSGIScriptAlias / "/var/www/toaster/poky/bitbake/lib/toaster/toastermain/wsgi.py"
<Location />
WSGIProcessGroup toastern_wsgi
</Location>
In Ubuntu/Debain you will need to enable the config and module in Apache webserver
$ sudo a2enmod wsgi
$ sudo a2enconf toaster
Restart Apache web server to make sure all new configuration is loaded
Ubuntu/Debian:
$ sudo service apache2 restart
Fedora/RH:
$ sudo service httpd restart
8. Install the build runner service
This service needs to be running in order to dispatch builds the command that needs to be run is:
/var/www/toaster/poky/bitbake/lib/toaster/manage.py runbuilds
Sample script:
#!/bin/sh
# toaster run builds dispatcher
export PYTHONPATH=$PYTHONPATH:/var/www/toaster/poky/bitbake/lib/toaster
cd /var/www/toaster/
source ./venv/bin/activate
./bitbake/lib/toaster/manage.py runbuilds
N.b. You may wish to add a service entry to your OS's init system so that it starts up on start up as well as adding a dedicated user.
Now open up a browser and you can start using Toaster!