Installing Zamboni¶
We’re going to use all the hottest tools to set up a nice environment. Skip steps at your own peril. Here we go!
Need help?¶
Come talk to us on irc://irc.mozilla.org/marketplace if you have questions, issues, or compliments.
1. Installing dependencies¶
On OS X¶
The best solution for installing UNIX tools on OS X is Homebrew.
The following packages will get you set for zamboni:
brew install python libxml2 mysql openssl swig304 jpeg pngcrush redis
On Ubuntu¶
The following command will install the required development files on Ubuntu or, if you’re running a recent version, you can install them automatically:
sudo aptitude install python-dev python-virtualenv libxml2-dev libxslt1-dev libmysqlclient-dev libssl-dev swig openssl curl pngcrush redis-server
Services¶
Zamboni has three dependencies you must install and have running:
- MySQL should require no configuration.
- Redis should require no configuration.
- Seee elasticsearch for setup and configuration.
2. Grab the source¶
Grab zamboni from github with:
git clone --recursive git://github.com/mozilla/zamboni.git
cd zamboni
zamboni.git
is all the source code. updating is detailed later on.
If at any point you realize you forgot to clone with the recursive flag, you can fix that by running:
git submodule update --init --recursive
3. Setup a virtualenv¶
virtualenv is a tool to create isolated Python environments. This will let you put all of Zamboni’s dependencies in a single directory rather than your global Python directory. For ultimate convenience, we’ll also use virtualenvwrapper which adds commands to your shell.
Since each shell setup is different, you can install everything you need and configure your shell using the virtualenv-burrito. Type this:
curl -sL https://raw.githubusercontent.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | $SHELL
Open a new shell to test it out. You should have the workon
and
mkvirtualenv
commands.
4. Getting Packages¶
Now we’re ready to go, so create an environment for zamboni:
mkvirtualenv zamboni
That creates a clean environment named zamboni using Python 2.7. You can get
out of the environment by restarting your shell or calling deactivate
.
To get back into the zamboni environment later, type:
workon zamboni # requires virtualenvwrapper
Note
Zamboni requires at least Python 2.7.0, production is using Python 2.7.5.
Note
If you want to use a different Python binary, pass the name (if it is
on your path) or the full path to mkvirtualenv with --python
:
mkvirtualenv --python=/usr/local/bin/python2.7 zamboni
Note
If you are using an older version of virtualenv that defaults to
using system packages you might need to pass --no-site-packages
:
mkvirtualenv --no-site-packages zamboni
First make sure you have a recent `pip`_ for security reasons. From inside your activated virtualenv, install the required python packages:
make update_deps
Issues at this point? See Trouble-shooting the development installation.
5. Settings¶
Most of zamboni is already configured in mkt.settings.py
, but there’s one thing
you’ll need to configure locally, the database. The easiest way to do that
is by setting an environment variable (see next section).
Optionally you can create a local settings file and place anything custom
into settings_local.py
.
Any file that looks like settings_local*
is for local use only; it will be
ignored by git.
Environment settings¶
Out of the box, zamboni should work without any need for settings changes. Some settings are configurable from the environment. See the marketplace docs for information on the environment variables and how they affect zamboni.
6. Setting up a Mysql Database¶
Django provides commands to create the database and tables needed, and load essential data:
./manage.py migrate
./manage.py loaddata init
Database Migrations¶
Each incremental change we add to the database is done with Django migrations. To keep your local DB fresh and up to date, run migrations like this:
./manage.py migrate
Loading Test Apps¶
Fake apps and feed collections can be created by running:
./manage.py generate_feed
Specific example applications can be loaded by running:
./manage.py generate_apps_from_spec data/apps/test_apps.json
See Fake App Data for details of the JSON format.
If you just want a certain number of public apps in various categories to be created, run:
./manage.py generate_apps N
where N is the number of apps you want created in your database.
7. Check it works¶
If you’ve gotten the system requirements, downloaded zamboni
,
set up your virtualenv with the compiled packages, and
configured your settings and database, you’re good to go:
./manage.py runserver
Hit:
http://localhost:2600/services/monitor
This will report any errors or issues in your installation.
8. Create an admin user¶
Chances are that for development, you’ll want an admin account.
After logging in, run this management command:
./manage.py addusertogroup <your email> 1
9. Setting up the pages¶
To set up the assets for the developer hub, reviewer tools, or admin pages:
npm install
python manage.py compress_assets
For local development, it would also be good to set:
TEMPLATE_DEBUG = True
Post installation¶
To keep your zamboni up to date with the latest changes in source files, requrirements and database migrations run:
make full_update
Advanced Installation¶
In production we use things like memcached, rabbitmq + celery and Stylus. Learn more about installing these on the Optional installs page.
Note
Although we make an effort to keep advanced items as optional installs you might need to install some components in order to run tests or start up the development server.