diff options
Diffstat (limited to 'docs/source')
-rw-r--r-- | docs/source/_static/goblin.png (renamed from docs/source/goblin.png) | bin | 47763 -> 47763 bytes | |||
-rw-r--r-- | docs/source/_static/snugglygoblin.png (renamed from docs/source/snugglygoblin.png) | bin | 163754 -> 163754 bytes | |||
-rw-r--r-- | docs/source/conf.py | 4 | ||||
-rw-r--r-- | docs/source/index.rst | 55 | ||||
-rw-r--r-- | docs/source/pluginwriter/foreward.rst | 43 | ||||
-rw-r--r-- | docs/source/pluginwriter/quickstart.rst | 189 | ||||
-rw-r--r-- | docs/source/siteadmin/about.rst (renamed from docs/source/about.rst) | 23 | ||||
-rw-r--r-- | docs/source/siteadmin/codebase.rst (renamed from docs/source/codebase.rst) | 15 | ||||
-rw-r--r-- | docs/source/siteadmin/configuration.rst (renamed from docs/source/configuration.rst) | 0 | ||||
-rw-r--r-- | docs/source/siteadmin/deploying.rst (renamed from docs/source/deploying.rst) | 112 | ||||
-rw-r--r-- | docs/source/siteadmin/foreword.rst (renamed from docs/source/foreword.rst) | 14 | ||||
-rw-r--r-- | docs/source/siteadmin/help.rst (renamed from docs/source/help.rst) | 0 | ||||
-rw-r--r-- | docs/source/siteadmin/media-types.rst (renamed from docs/source/media-types.rst) | 30 | ||||
-rw-r--r-- | docs/source/siteadmin/plugins.rst | 137 | ||||
-rw-r--r-- | docs/source/siteadmin/production-deployments.rst (renamed from docs/source/production-deployments.rst) | 18 | ||||
-rw-r--r-- | docs/source/siteadmin/relnotes.rst | 52 | ||||
-rw-r--r-- | docs/source/siteadmin/theming.rst (renamed from docs/source/theming.rst) | 0 |
17 files changed, 603 insertions, 89 deletions
diff --git a/docs/source/goblin.png b/docs/source/_static/goblin.png Binary files differindex e20265e6..e20265e6 100644 --- a/docs/source/goblin.png +++ b/docs/source/_static/goblin.png diff --git a/docs/source/snugglygoblin.png b/docs/source/_static/snugglygoblin.png Binary files differindex f325ae4b..f325ae4b 100644 --- a/docs/source/snugglygoblin.png +++ b/docs/source/_static/snugglygoblin.png diff --git a/docs/source/conf.py b/docs/source/conf.py index aafcf128..41cf2529 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -48,9 +48,9 @@ copyright = u'2011, 2012 GNU MediaGoblin contributors' # built documents. # # The short X.Y version. -version = '0.3.0' +version = '0.3.1' # The full version, including alpha/beta/rc tags. -release = '0.3.0-dev' +release = '0.3.1.dev' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/source/index.rst b/docs/source/index.rst index 444ed688..569eda14 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,28 +11,52 @@ Dedication along with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. -.. GNU MediaGoblin documentation master file, created by - sphinx-quickstart on Thu Apr 7 20:10:27 2011. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. +=========================================== Welcome to GNU MediaGoblin's documentation! =========================================== -Table of Contents: +GNU MediaGoblin is a platform for sharing photos, video and other media +in an environment that respects our freedom and independence. + +This is a Free Software project. It is built by contributors for all +to use and enjoy. If you're intrested in contributing, see `the wiki +<http://wiki.mediagoblin.org/>`_ which has pages that talk about the +ways someone can contribute. + + +Part 1: Site Administrator's Guide +================================== + +This guide covers installing, configuring, deploying and running a GNU +MediaGoblin website. It is written for site administrators. + +.. toctree:: + :maxdepth: 1 + + siteadmin/foreword + siteadmin/about + siteadmin/deploying + siteadmin/production-deployments + siteadmin/configuration + siteadmin/media-types + siteadmin/help + siteadmin/relnotes + siteadmin/theming + siteadmin/plugins + siteadmin/codebase + + +Part 2: Plugin Writer's Guide +============================= + +This guide covers writing new GNU MediaGoblin plugins. .. toctree:: - :maxdepth: 2 + :maxdepth: 1 - foreword - about - deploying - production-deployments - configuration - media-types - help - theming - codebase + pluginwriter/foreward + pluginwriter/quickstart Indices and tables @@ -43,3 +67,4 @@ Indices and tables .. * :ref:`modindex` +This guide was built on |today|. diff --git a/docs/source/pluginwriter/foreward.rst b/docs/source/pluginwriter/foreward.rst new file mode 100644 index 00000000..fd3a0c22 --- /dev/null +++ b/docs/source/pluginwriter/foreward.rst @@ -0,0 +1,43 @@ +.. MediaGoblin Documentation + + Written in 2011, 2012 by MediaGoblin contributors + + To the extent possible under law, the author(s) have dedicated all + copyright and related and neighboring rights to this software to + the public domain worldwide. This software is distributed without + any warranty. + + You should have received a copy of the CC0 Public Domain + Dedication along with this software. If not, see + <http://creativecommons.org/publicdomain/zero/1.0/>. + +======== +Foreword +======== + +About the Plugin Writer's Guide +=============================== + +This guide covers writing plugins for GNU MediaGoblin. It's very much +a work in progress partially because we just started writing it and +partially because the plugin API is currently in flux. + + +Improving the Plugin Writer's Guide +=================================== + +There are a few ways---please pick whichever method is convenient for +you! + +1. Write up a bug report in the bug tracker +2. Tell someone on IRC ``#mediagoblin`` on Freenode. +3. Write an email to the devel mailing list. + +Information about the bugtracker, IRC and the mailing list is all on +the `join page`_. + +.. _join page: http://mediagoblin.org/join/ + +Patches are the most helpful, but even feedback on what you think +could be improved and how to improve it is also helpful. + diff --git a/docs/source/pluginwriter/quickstart.rst b/docs/source/pluginwriter/quickstart.rst new file mode 100644 index 00000000..73531381 --- /dev/null +++ b/docs/source/pluginwriter/quickstart.rst @@ -0,0 +1,189 @@ +.. MediaGoblin Documentation + + Written in 2011, 2012 by MediaGoblin contributors + + To the extent possible under law, the author(s) have dedicated all + copyright and related and neighboring rights to this software to + the public domain worldwide. This software is distributed without + any warranty. + + You should have received a copy of the CC0 Public Domain + Dedication along with this software. If not, see + <http://creativecommons.org/publicdomain/zero/1.0/>. + + +=========== +Quick Start +=========== + +This is a quick start. It's not comprehensive, but it walks through +writing a basic plugin called "sampleplugin" which logs "I've been +started!" when ``setup_plugin()`` has been called. + +.. todo: Rewrite this to be a useful plugin + + +Step 1: Files and directories +============================= + +GNU MediaGoblin plugins are Python projects at heart. As such, you should +use a standard Python project directory tree:: + + sampleplugin/ + |- README + |- LICENSE + |- setup.py + |- sampleplugin/ + |- __init__.py + + +The outer ``sampleplugin`` directory holds all the project files. + +The ``README`` should cover what your plugin does, how to install it, +how to configure it, and all the sorts of things a README should +cover. + +The ``LICENSE`` should have the license under which you're +distributing your plugin. + +The inner ``sampleplugin`` directory is the Python package that holds +your plugin's code. + +The ``__init__.py`` denotes that this is a Python package. It also +holds the plugin code. + + +Step 2: README +============== + +Here's a rough ``README``. Generally, you want more information +because this is the file that most people open when they want to learn +more about your project. + +:: + + README + ====== + + This is a sample plugin. It logs a line when ``setup__plugin()`` is + run. + + +Step 3: LICENSE +=============== + +GNU MediaGoblin plugins must be licensed under the AGPLv3 or later. So +the LICENSE file should be the AGPLv3 text which you can find at +`<http://www.gnu.org/licenses/agpl-3.0.html>`_ + + +Step 4: setup.py +================ + +This file is used for packaging and distributing your plugin. + +We'll use a basic one:: + + from setuptools import setup, find_packages + + setup( + name='sampleplugin', + version='1.0', + packages=find_packages(), + include_package_data=True, + install_requires=[], + license='AGPLv3', + ) + + +See `<http://docs.python.org/distutils/index.html#distutils-index>`_ +for more details. + + +Step 5: the code +================ + +The code for ``__init__.py`` looks like this: + +.. code-block:: python + :linenos: + :emphasize-lines: 8,19 + + import logging + from mediagoblin.tools.pluginapi import Plugin, get_config + + + _log = logging.getLogger(__name__) + + + class SamplePlugin(Plugin): + """ + This is a sample plugin class. It automatically registers itself + with MediaGoblin when this module is imported. + + The setup_plugin method prints configuration for this plugin if + there is any. + """ + def __init__(self): + pass + + def setup_plugin(self): + _log.info("I've been started!") + config = get_config('sampleplugin') + if config: + _log.info('%r' % config) + else: + _log.info('There is no configuration set.') + + +Line 8 defines a class called ``SamplePlugin`` that subclasses +``Plugin`` from ``mediagoblin.tools.pluginapi``. When the class is +defined, it gets registered with MediaGoblin and MediaGoblin will then +call ``setup_plugin`` on it. + +Line 19 defines ``setup_plugin``. This gets called when MediaGoblin +starts up after it's registered all the plugins. This is where you can +do any initialization for your plugin. + + +Step 6: Installation and configuration +====================================== + +To install the plugin for development, you need to make sure it's +available to the Python interpreter that's running MediaGoblin. + +There are a couple of ways to do this, but we're going to pick the +easy one. + +Use ``python`` from your MediaGoblin virtual environment and do:: + + python setup.py develop + +Any changes you make to your plugin will be available in your +MediaGoblin virtual environment. + +Then adjust your ``mediagoblin.ini`` file to load the plugin:: + + [plugins] + + [[sampleplugin]] + + +Step 7: That's it! +================== + +When you launch MediaGoblin, it'll load the plugin and you'll see +evidence of that in the log file. + +That's it for the quick start! + + +Where to go from here +===================== + +See the documentation on the plugin API for code samples and other +things you can use when building your plugin. + +See `Hitchhiker's Guide to Packaging +<http://guide.python-distribute.org/>`_ for more information on +packaging your plugin. diff --git a/docs/source/about.rst b/docs/source/siteadmin/about.rst index 7a6aa510..f9602397 100644 --- a/docs/source/about.rst +++ b/docs/source/siteadmin/about.rst @@ -19,8 +19,8 @@ :local: -What is GNU MediaGoblin -======================= +What is GNU MediaGoblin? +======================== In 2008, a number of free software developers and activists gathered at the FSF to attempt to answer the question "What should software @@ -36,15 +36,16 @@ freedom look like on the participatory web?" Their answer, the Identi.ca and Libre.fm address the need for micro-blogging and music sharing services and software that respect users' freedom and -autonomy. GNU MediaGoblin emerges from this milieu to create a -platform for us to share photos in an environment that respects our -freedom and independence. In the future MediaGoblin will include -support other media, like video, and provide tools to facilitate +autonomy. + +GNU MediaGoblin emerges from this milieu to create a platform for us to share +photos, video and other media in an environment that respects our freedom and +independence. In the future MediaGoblin will provide tools to facilitate collaboration on media projects. -Why Build GNU MediaGoblin -========================= +Why Build GNU MediaGoblin? +========================== The Internet is designed---and works best---as a complex and endlessly resilient network. When key services and media outlets are @@ -62,8 +63,8 @@ make these kinds of services possible. We hope you'll join us, both as users and as contributors. -Who Contributes to the Project -============================== +Who Contributes to the Project? +=============================== You do! @@ -89,7 +90,7 @@ GNU MediaGoblin software is released under an AGPLv3 license. See the ``COPYING`` file in the root of the source for details. -Is MedaGobilin an official GNU project? What does that mean? +Is MediaGoblin an official GNU project? What does that mean? ============================================================= MediaGoblin is an official GNU project! This status means that we the diff --git a/docs/source/codebase.rst b/docs/source/siteadmin/codebase.rst index e784c9e5..3ef91290 100644 --- a/docs/source/codebase.rst +++ b/docs/source/siteadmin/codebase.rst @@ -55,8 +55,9 @@ Software Stack * Data storage - * `MongoDB <http://www.mongodb.org/>`_: the document database backend - for storage + * `SQLAlchemy <http://sqlalchemy.org/>`_: SQL ORM and database + interaction library for Python. Currently we support sqlite and + postgress as backends. * Web application @@ -80,14 +81,6 @@ Software Stack * `Celery <http://celeryproject.org/>`_: for task queuing (resizing images, encoding video, ...) - * `MongoKit <http://namlook.github.com/mongokit/>`_: the lightweight - ORM for MongoDB we're using which will make it easier to define - structures and all that (will be swapped out soon...) - - * `SQLAlchemy <http://sqlalchemy.org/>`_: SQL ORM and database - interaction library for Python. We'll be moving to this in the - upcoming move to SQL. - * `Babel <http://babel.edgewall.org>`_: Used to extract and compile translations. @@ -151,7 +144,7 @@ Here are some interesting files and what they do: :routing.py: maps url paths to views :views.py: views handle http requests -:models.py: holds the mongodb schemas---these are the data structures +:models.py: holds the sqlalchemy schemas---these are the data structures we're working with You'll notice that there are several sub-directories: tests, diff --git a/docs/source/configuration.rst b/docs/source/siteadmin/configuration.rst index a3dafa4c..a3dafa4c 100644 --- a/docs/source/configuration.rst +++ b/docs/source/siteadmin/configuration.rst diff --git a/docs/source/deploying.rst b/docs/source/siteadmin/deploying.rst index ce39dc4e..788b06d7 100644 --- a/docs/source/deploying.rst +++ b/docs/source/siteadmin/deploying.rst @@ -11,6 +11,8 @@ Dedication along with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. +.. _deploying-chapter: + ===================== Deploying MediaGoblin ===================== @@ -41,49 +43,75 @@ MediaGoblin has the following core dependencies: - Python 2.6 or 2.7 - `python-lxml <http://lxml.de/>`_ - `git <http://git-scm.com/>`_ -- `MongoDB <http://www.mongodb.org/>`_ +- `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/>`_ On a DEB-based system (e.g Debian, gNewSense, Trisquel, Ubuntu, and -derivatives) issue the following command: :: +derivatives) issue the following command:: - sudo apt-get install mongodb git-core python python-dev python-lxml \ + sudo apt-get install git-core python python-dev python-lxml \ python-imaging python-virtualenv On a RPM-based system (e.g. Fedora, RedHat, and derivatives) issue the -following command: :: +following command:: - yum install mongodb-server 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 -Configure MongoDB -~~~~~~~~~~~~~~~~~ +Configure PostgreSQL +~~~~~~~~~~~~~~~~~~~~ + +.. note:: + + MediaGoblin currently supports PostgreSQL and SQLite. The default is a + local SQLite database. This will "just work" for small deployments. + + For medium to large deployments we recommend PostgreSQL. + + If you don't want/need postgres, skip this section. + +These are the packages needed for Debian Wheezy (testing):: + + sudo apt-get install postgresql postgresql-client python-psycopg2 + +The installation process will create a new *system* user named ``postgres``, +it 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:: + + sudo -u postgres createuser mediagoblin + +then answer NO to *all* the questions:: + + Shall the new role be a superuser? (y/n) n + Shall the new role be allowed to create databases? (y/n) n + Shall the new role be allowed to create more new roles? (y/n) n -After installing MongoDB some preliminary database configuration may -be necessary. +then create the database all our MediaGoblin data should be stored in:: -Ensure that MongoDB `journaling -<http://www.mongodb.org/display/DOCS/Journaling>`_ is enabled. Journaling -is enabled by default in version 2.0 and later 64-bit MongoDB instances. -Check your deployment, and consider enabling journaling if you're running -32-bit systems or earlier version. + sudo -u postgres createdb -E UNICODE -O mediagoblin mediagoblin -.. warning:: +where the first ``mediagoblin`` is the database owner and the second +``mediagoblin`` is the database name. - Running MongoDB without journaling risks general data corruption - and raises the possibility of losing data within a 60-second - window when the server restarts. +.. caution:: Where is the password? - MediaGoblin recommends enabling MongoDB's journaling feature by - adding a ``--journal`` flag to the command line or a "``journal: - true``" option to the configuration file. + These steps enable you to authenticate to the database in a password-less + manner via local UNIX authentication provided you run the MediaGoblin + application as a user with the same name as the user you created in + PostgreSQL. -MongoDB can take a lot of space by default. If you're planning on -running a smaller instance, consider the `scaling down guide -<http://wiki.mediagoblin.org/Scaling_Down>`_ for some appropriate -tradeoffs to conserve space. + More on this in :ref:`Drop Privileges for MediaGoblin <drop-privileges-for-mediagoblin>`. + + +.. _drop-privileges-for-mediagoblin: Drop Privileges for MediaGoblin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -101,7 +129,7 @@ assumes your local git repository will be located at Substitute your prefer ed local deployment path as needed. This document assumes that all operations are performed as this -user. To drop privileges to this user, run the following command: :: +user. To drop privileges to this user, run the following command:: su - [mediagoblin] @@ -113,7 +141,7 @@ Install MediaGoblin and Virtualenv .. note:: - As of |version|, MediaGoblin has a rapid development pace. As a result + 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. @@ -128,7 +156,7 @@ Clone the MediaGoblin repository:: git clone git://gitorious.org/mediagoblin/mediagoblin.git -And setup the in-package virtualenv:: +And set up the in-package virtualenv:: cd mediagoblin (virtualenv --system-site-packages . || virtualenv .) && ./bin/python setup.py develop @@ -153,14 +181,36 @@ flup:: ./bin/easy_install flup This concludes the initial configuration of the development -environment. In the future, if at any point you want update your +environment. In the future, you want update your codebase, you should also run:: - ./bin/python setup.py develop --upgrade && ./bin/gmg migrate. + ./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate Deploy MediaGoblin Services --------------------------- +Configure MediaGoblin to use the PostgreSQL database +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using postgres, edit the ``[mediagoblin]`` section in your +``mediagoblin_local.ini`` and put in:: + + sql_engine = postgresql:///mediagoblin + +if you are running the MediaGoblin application as the same 'user' as the +database owner. + + +Update database data structures +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Before you start using the database, you need to run:: + + ./bin/gmg dbupdate + +to populate the database with the MediaGoblin data structures. + + Test the Server ~~~~~~~~~~~~~~~ @@ -260,7 +310,7 @@ example:: ./lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543 Visit the site you've set up in your browser by visiting -<http://mediagobilin.example.org>. You should see MediaGoblin! +<http://mediagoblin.example.org>. You should see MediaGoblin! .. note:: diff --git a/docs/source/foreword.rst b/docs/source/siteadmin/foreword.rst index be0c84b8..4c425f8d 100644 --- a/docs/source/foreword.rst +++ b/docs/source/siteadmin/foreword.rst @@ -15,12 +15,12 @@ Foreword ======== -About the MediaGoblin Manual -============================ +About the Site Administrator's Guide +==================================== -This is the site administrator manual for MediaGoblin. It covers how -to set up and configure MediaGoblin and the kind of information that -someone running MediaGoblin would need to know. +This is the site administrator manual for GNU MediaGoblin. It covers +how to set up and configure MediaGoblin and the kind of information +that someone running MediaGoblin would need to know. We have other documentation at: @@ -28,8 +28,8 @@ We have other documentation at: * http://wiki.mediagoblin.org/ for our contributor/developer-focused wiki -Improving the MediaGobiin Manual -================================ +Improving the Site Administrator's Guide +======================================== There are a few ways---please pick whichever method is convenient for you! diff --git a/docs/source/help.rst b/docs/source/siteadmin/help.rst index 4b584ac1..4b584ac1 100644 --- a/docs/source/help.rst +++ b/docs/source/siteadmin/help.rst diff --git a/docs/source/media-types.rst b/docs/source/siteadmin/media-types.rst index ec068422..1cf7f30c 100644 --- a/docs/source/media-types.rst +++ b/docs/source/siteadmin/media-types.rst @@ -18,7 +18,8 @@ Enabling Media Types ==================== In the future, there will be all sorts of media types you can enable, -but in the meanwhile there's only one additional media type: video. +but in the meanwhile there are two additional media type: video and +ascii art. First, you should probably read ":doc:`configuration`" to make sure you know how to modify the mediagoblin config file. @@ -30,21 +31,27 @@ To enable video, first install gstreamer and the python-gstreamer bindings (as well as whatever gstremaer extensions you want, good/bad/ugly). On Debianoid systems:: - sudo apt-get install python-gst0.10 + sudo apt-get install python-gst0.10 gstreamer0.10-plugins-{base,bad,good,ugly} \ + gstreamer0.10-ffmpeg Next, modify (and possibly copy over from ``mediagoblin.ini``) your -``mediagoblin_local.ini``. Uncomment this line in the ``[mediagoblin]`` -section:: +``mediagoblin_local.ini``. In the ``[mediagoblin]`` section, add +``mediagoblin.media_types.video`` to the ``media_types`` list. + +For example, if your system supported image and video media types, then +the list would look like this:: media_types = mediagoblin.media_types.image, mediagoblin.media_types.video Now you should be able to submit videos, and mediagoblin should transcode them. -Note that you almost certainly want to separate Celery from the normal -paste process or your users will probably find that their connections -time out as the video transcodes. To set that up, check out the -":doc:`production-deployments`" section of this manual. +.. note:: + + You almost certainly want to separate Celery from the normal + paste process or your users will probably find that their connections + time out as the video transcodes. To set that up, check out the + ":doc:`production-deployments`" section of this manual. Ascii art @@ -58,8 +65,11 @@ library, which is necessary for creating thumbnails of ascii art:: Next, modify (and possibly copy over from ``mediagoblin.ini``) your -``mediagoblin_local.ini``. Uncomment or add to the media_types line -'mediagoblin.media_types.ascii' like so:: +``mediagoblin_local.ini``. In the ``[mediagoblin]`` section, add +``mediagoblin.media_types.ascii`` to the ``media_types`` list. + +For example, if your system supported image and ascii art media types, then +the list would look like this:: media_types = mediagoblin.media_types.image, mediagoblin.media_types.ascii diff --git a/docs/source/siteadmin/plugins.rst b/docs/source/siteadmin/plugins.rst new file mode 100644 index 00000000..41f2970f --- /dev/null +++ b/docs/source/siteadmin/plugins.rst @@ -0,0 +1,137 @@ +========= + Plugins +========= + +GNU MediaGoblin supports plugins that allow you to augment MediaGoblin's +behavior. + +This chapter covers discovering, installing, configuring and removing +plugins. + + +Discovering plugins +=================== + +MediaGoblin comes with core plugins. Core plugins are located in the +``mediagoblin.plugins`` module of the MediaGoblin code. Because they +come with MediaGoblin, you don't have to install them, but you do have +to add them to your config file if you're interested in using them. + +You can also write your own plugins and additionally find plugins +elsewhere on the Internet. Once you find a plugin you like, you need +to first install it, then add it to your configuration. + +.. todo: how do you find plugins on the internet? + + +Installing plugins +================== + +Core plugins +------------ + +MediaGoblin core plugins don't need to be installed because they come +with MediaGoblin. Further, when you upgrade MediaGoblin, you will also +get updates to the core plugins. + + +Other plugins +------------- + +If the plugin is available on the `Python Package Index +<http://pypi.python.org/pypi>`_, then you can install the plugin with pip:: + + pip install <plugin-name> + +For example, if we wanted to install the plugin named +"mediagoblin-restrictfive", we would do:: + + pip install mediagoblin-restrictfive + +.. Note:: + + If you're using a virtual environment, make sure to activate the + virtual environment before installing with pip. Otherwise the + plugin may get installed in a different environment than the one + MediaGoblin is installed in. + +Once you've installed the plugin software, you need to tell +MediaGoblin that this is a plugin you want MediaGoblin to use. To do +that, you edit the ``mediagoblin.ini`` file and add the plugin as a +subsection of the plugin section. + +For example, say the "mediagoblin-restrictfive" plugin had the Python +package path ``restrictfive``, then you would add ``restrictfive`` to +the ``plugins`` section as a subsection:: + + [plugins] + + [[restrictfive]] + + +Configuring plugins +=================== + +Configuration for a plugin goes in the subsection for that plugin. Core +plugins are documented in the administration guide. Other plugins +should come with documentation that tells you how to configure them. + +Example 1: Core MediaGoblin plugin + +If you wanted to use the core MediaGoblin flatpages plugin, the module +for that is ``mediagoblin.plugins.flatpages`` and you would add that +to your ``.ini`` file like this:: + + [plugins] + + [[mediagoblin.plugins.flatpages]] + # configuration for flatpages plugin here! + directory = /srv/mediagoblin/flatpages + +Example 2: Plugin that is not a core MediaGoblin plugin + +If you installed a hypothetical restrictfive plugin which is in the +module ``restrictfive``, your ``.ini`` file might look like this (with +comments making the bits clearer):: + + [plugins] + + [[restrictfive]] + # configuration for restrictfive here! + +Check the plugin's documentation for what configuration options are +available. + + +Removing plugins +================ + +To remove a plugin, use ``pip uninstall``. For example:: + + pip uninstall mediagoblin-restrictfive + +.. Note:: + + If you're using a virtual environment, make sure to activate the + virtual environment before uninstalling with pip. Otherwise the + plugin may get installed in a different environment. + + +Upgrading plugins +================= + +Core plugins +------------ + +Core plugins get upgraded automatically when you upgrade MediaGoblin +because they come with MediaGoblin. + + +Other plugins +------------- + +For plugins that you install with pip, you can upgrade them with pip:: + + pip install -U <plugin-name> + +The ``-U`` tells pip to upgrade the package. diff --git a/docs/source/production-deployments.rst b/docs/source/siteadmin/production-deployments.rst index 1e6631db..356fab7f 100644 --- a/docs/source/production-deployments.rst +++ b/docs/source/siteadmin/production-deployments.rst @@ -85,8 +85,22 @@ Use an Init Script Look in your system's ``/etc/init.d/`` or ``/etc/rc.d/`` directory for examples of how to build scripts that will start, stop, and restart MediaGoblin and Celery. These scripts will vary by -distribution/operating system. In the future, MediaGoblin will provide -example scripts as examples. +distribution/operating system. + +These are scripts provided by the MediaGoblin community: + +Debian + * `GNU MediaGoblin init scripts + <https://github.com/jwandborg/mediagoblin-init-scripts>`_ + by `Joar Wandborg <http://wandborg.se>`_ + +Arch Linux + * `MediaGoblin - ArchLinux rc.d scripts + <http://whird.jpope.org/2012/04/14/mediagoblin-archlinux-rcd-scripts>`_ + by `Jeremy Pope <http://jpope.org/>`_ + * `Mediagoblin init script on Archlinux + <http://chimo.chromic.org/2012/03/01/mediagoblin-init-script-on-archlinux/>`_ + by `Chimo <http://chimo.chromic.org/>`_ .. TODO insert init script here .. TODO are additional concerns ? diff --git a/docs/source/siteadmin/relnotes.rst b/docs/source/siteadmin/relnotes.rst new file mode 100644 index 00000000..2efded73 --- /dev/null +++ b/docs/source/siteadmin/relnotes.rst @@ -0,0 +1,52 @@ +.. MediaGoblin Documentation + + Written in 2012 by MediaGoblin contributors + + To the extent possible under law, the author(s) have dedicated all + copyright and related and neighboring rights to this software to + the public domain worldwide. This software is distributed without + any warranty. + + You should have received a copy of the CC0 Public Domain + Dedication along with this software. If not, see + <http://creativecommons.org/publicdomain/zero/1.0/>. + +============= +Release Notes +============= + +This chapter has important information for releases in it. +If you're upgrading from a previous release, please read it +carefully, or at least skim over it. + + +0.3.0 +===== + +This release has one important change. You need to act when +upgrading from a previous version! + +This release changes the database system from MongoDB to +SQL(alchemy). If you want to setup a fresh instance, just +follow the instructions in the deployment chapter. If on +the other hand you want to continue to use one instance, +read on. + +To convert your data from MongoDB to SQL(alchemy), you need +to follow these steps: + +1. Make sure your MongoDB is still running and has your + data, it's needed for the conversion. + +2. Configure the ``sql_engine`` URI in the config to represent + your target database (see: :ref:`deploying-chapter`) + +3. You need an empty database. + +4. Then run the following command:: + + bin/gmg [-cf mediagoblin_config.ini] convert_mongo_to_sql + +5. Start your server and investigate. + +6. That's it. diff --git a/docs/source/theming.rst b/docs/source/siteadmin/theming.rst index 7584b688..7584b688 100644 --- a/docs/source/theming.rst +++ b/docs/source/siteadmin/theming.rst |