Manual installation¶
Note
The following documentation is deprecated. The approved installation is via Docker.
Getting Fancy¶
MySQL¶
On your dev machine, MySQL probably needs some tweaks. Locate your my.cnf (or create one) then, at the very least, make UTF8 the default encoding:
[mysqld]
character-set-server=utf8
Here are some other helpful settings:
[mysqld]
default-storage-engine=innodb
character-set-server=utf8
skip-sync-frm=OFF
innodb_file_per_table
On Mac OS X with homebrew, put my.cnf in /usr/local/Cellar/mysql/5.5.15/my.cnf
then restart like:
launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist
launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist
Note
some of the options above were renamed between MySQL versions
Here are more tips for optimizing MySQL on your dev machine.
RabbitMQ and Celery¶
See the Celery page for installation instructions. The
example settings set CELERY_TASK_ALWAYS_EAGER = True
.
If you’re setting up Rabbit and want to use celery
, make sure you remove
that line from your local_settings.py
.
Elasticsearch¶
See Elasticsearch for more instructions.
Redis¶
On OS X the package is called redis
. Get it running with the launchctl
script included in homebrew. To let olympia know about Redis, add this to
local_settings.py
:
CACHE_MACHINE_USE_REDIS = True
REDIS_BACKEND = 'redis://'
The REDIS_BACKEND
is parsed like CACHE_BACKEND
if you need something
other than the default settings.
Node.js¶
Node.js is needed for Stylus and LESS, which in turn are needed to precompile the CSS files.
If you want to serve the CSS files from another domain than the webserver, you
will need to precompile them. Otherwise you can have them compiled on the fly,
using javascript in your browser, if you set LESS_PREPROCESS = False
in
your local settings.
First, we need to install node and npm:
brew install node
curl https://www.npmjs.org/install.sh | sh
Optionally make the local scripts available on your path if you don’t already have this in your profile:
export PATH="./node_modules/.bin/:${PATH}"
- Not working?
If you’re having trouble installing node, try http://shapeshed.com/journal/setting-up-nodejs-and-npm-on-mac-osx/. You need brew, which we used earlier.
If you’re having trouble with npm, check out the README on https://github.com/isaacs/npm
Stylus CSS¶
Learn about Stylus at http://learnboost.github.com/stylus/
cd olympia
npm install
In your local_settings.py
ensure you are pointing to the correct executable
for stylus
:
STYLUS_BIN = path('node_modules/stylus/bin/stylus')
LESS CSS¶
We’re slowing switching over from regular CSS to LESS. You can learn more about LESS at http://lesscss.org.
If you already ran npm install
you don’t need to do anything more.
In your local_settings.py
ensure you are pointing to the correct executable
for less
:
LESS_BIN = path('node_modules/less/bin/lessc')
You can make the CSS live refresh on save by adding #!watch
to the URL or by
adding the following to your local_settings.py
:
LESS_LIVE_REFRESH = True
- If you want syntax highlighting, try:
Generating additional add-ons¶
Note
If you previously used the make full_init
command during
the Installing Olympia the long way process, it’s not necessary to generate
additional add-ons for initialisation/development purpose.
If you need more add-ons, you can generate additional ones using the following command:
python manage.py generate_addons <num_addons> [--owner <email>] [--app <application>]
where num_addons
is the number of add-ons that you want to generate,
email
(optional) is the email address of the owner of the generated
add-ons and application
(optional) the name of the application
(either firefox
, thunderbird
, seamonkey
or android
).
By default the email
will be nobody@mozilla.org
and the
application
will be firefox
if not specified.
Add-ons will have 1 preview image, 2 translations (French and Spanish), 5 ratings and might be featured randomly.
If you didn’t run the make full_init
command during the
Installing Olympia the long way process, categories from production
(Alerts & Updates, Appearance, and so on) will be created and randomly
populated with generated add-ons.
Otherwise, the existing categories will be filled with newly generated
add-ons.