- `SQLite <http://www.sqlite.org/>`_/`PostgreSQL <http://www.postgresql.org/>`_
- `Python Imaging Library <http://www.pythonware.com/products/pil/>`_ (PIL)
- `virtualenv <http://www.virtualenv.org/>`_
+- `nodejs <https://nodejs.org>`_
On a DEB-based system (e.g Debian, gNewSense, Trisquel, Ubuntu, and
derivatives) issue the following command::
- sudo apt-get install git-core python python-dev python-lxml \
- python-imaging python-virtualenv
+ # apt-get install git-core python python-dev python-lxml \
+ python-imaging python-virtualenv npm automake
On a RPM-based system (e.g. Fedora, RedHat, and derivatives) issue the
following command::
- yum install python-paste-deploy python-paste-script \
+ # yum install python-paste-deploy python-paste-script \
git-core python python-devel python-lxml python-imaging \
- python-virtualenv
+ python-virtualenv npm automake
Configure PostgreSQL
~~~~~~~~~~~~~~~~~~~~
These are the packages needed for Debian Wheezy (stable)::
- sudo apt-get install postgresql postgresql-client python-psycopg2
+ # apt-get install postgresql postgresql-client python-psycopg2
+
+These are the packages needed for an RPM-based system::
+
+ # yum install postgresql postgresql-server python-psycopg2
+
+An RPM-based system also requires that you initialize the PostgresSQL database
+with this command. The following command is not needed on a Debian-based
+platform, however::
+
+ # /usr/bin/postgresql-setup initdb
The installation process will create a new *system* user named ``postgres``,
-it will have privilegies sufficient to manage the database. We will create a
+which will have privilegies sufficient to manage the database. We will create a
new database user with restricted privilegies and a new database owned by our
restricted database user for our MediaGoblin instance.
In this example, the database user will be ``mediagoblin`` and the database
name will be ``mediagoblin`` too.
-To create our new user, run::
+We'll add these entities by first switching to the *postgres* account::
- sudo -u postgres createuser -A -D mediagoblin
+ # su -u postgres
-then create the database all our MediaGoblin data should be stored in::
+This will change your prompt to a shell prompt, such as *-bash-4.2$*. Enter
+the following *createuser* and *createdb* commands at that prompt. We'll
+create the *mediagoblin* database user first::
- sudo -u postgres createdb -E UNICODE -O mediagoblin mediagoblin
+ $ createuser -A -D mediagoblin
+
+Then we'll create the database where all of our MediaGoblin data will be stored::
+
+ $ createdb -E UNICODE -O mediagoblin mediagoblin
where the first ``mediagoblin`` is the database owner and the second
``mediagoblin`` is the database name.
+Type ``exit`` to return to the *root* user prompt. From here we just need to
+set the Postgres database to start on boot, and also start it up for this
+particular session. If you're on a platform that does not use *systemd*, you
+can enter::
+
+ # chkconfig postgresql on && service postgresql start
+
+Whereas users of *systemd*-based systems will need to enter::
+
+ # systemctl enable postgresql && systemctl start postgresql
+
.. caution:: Where is the password?
These steps enable you to authenticate to the database in a password-less
system account with a username of ``mediagoblin``. You may choose a different
username if you wish.::
- adduser --system mediagoblin
+ # useradd --system --user-group mediagoblin
No password will be assigned to this account, and you will not be able
-to log in as this user. To switch to this account, enter either::
-
- sudo -u mediagoblin /bin/bash # (if you have sudo permissions)
-
-or::
+to log in as this user. To switch to this account, enter::
su mediagoblin -s /bin/bash # (if you have to use root permissions)
You can disregard this warning. To return to your regular user account after
using the system account, just enter ``exit``.
-.. note::
-
- Unless otherwise noted, the remainder of this document assumes that all
- operations are performed using this unpriviledged account.
-
.. _create-mediagoblin-directory:
Create a MediaGoblin Directory
To do this, enter either of the following commands, changing the defaults
to suit your particular requirements::
- sudo mkdir -p /srv/mediagoblin.example.org && sudo chown -hR mediagoblin: /srv/mediagoblin.example.org
+ # mkdir -p /srv/mediagoblin.example.org && sudo chown -hR mediagoblin: /srv/mediagoblin.example.org
-or (as the root user)::
+.. note::
- mkdir -p /srv/mediagoblin.example.org && chown -hR mediagoblin: /srv/mediagoblin.example.org
+ Unless otherwise noted, the remainder of this document assumes that all
+ operations are performed using this unpriviledged account.
Install MediaGoblin and Virtualenv
----------------------------------
-.. note::
-
- MediaGoblin is still developing rapidly. As a result
- the following instructions recommend installing from the ``master``
- branch of the git repository. Eventually production deployments will
- want to transition to running from more consistent releases.
-
We will now clone the MediaGoblin source code repository and setup and
configure the necessary services. Modify these commands to
-suit your own environment. As a reminder, you should enter these
-commands using your unpriviledged system account.
+suit your own environment.
+
+.. note::
+
+ As a reminder, you should enter these commands using your unpriviledged
+ *mediagoblin* system account.
Change to the MediaGoblin directory that you just created::
- cd /srv/mediagoblin.example.org
+ $ cd /srv/mediagoblin.example.org
Clone the MediaGoblin repository and set up the git submodules::
- git clone git://gitorious.org/mediagoblin/mediagoblin.git -b stable
- cd mediagoblin
- git submodule init && git submodule update
+ $ git clone https://gitorious.org/mediagoblin/mediagoblin.git -b stable
+ $ cd mediagoblin
+ $ git submodule init && git submodule update
Set up the hacking environment::
- ./bootstrap.sh && ./configure && make
+ $ ./bootstrap.sh && ./configure && make
The above provides an in-package install of ``virtualenv``. While this
is counter to the conventional ``virtualenv`` configuration, it is
Assuming you are going to deploy with FastCGI, you should also install
flup::
- ./bin/easy_install flup
-
-(Sometimes this breaks because flup's site is flakey. If it does for
-you, try)::
-
- ./bin/easy_install https://pypi.python.org/pypi/flup/1.0.3.dev-20110405
+ $ ./bin/easy_install flup
This concludes the initial configuration of the development
environment. In the future, when you update your
codebase, you should also run::
- git submodule update && ./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate
+ $ git submodule update && ./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate
+
+.. note::
-Note: If you are running an active site, depending on your server
-configuration, you may need to stop it first or the dbupdate command
-may hang (and it's certainly a good idea to restart it after the
-update)
+ Note: If you are running an active site, depending on your server
+ configuration, you may need to stop it first or the dbupdate command
+ may hang (and it's certainly a good idea to restart it after the
+ update)
Deploy MediaGoblin Services