aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/siteadmin
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/siteadmin')
-rw-r--r--docs/source/siteadmin/deploying.rst144
-rw-r--r--docs/source/siteadmin/media-types.rst83
-rw-r--r--docs/source/siteadmin/production-deployments.rst64
-rw-r--r--docs/source/siteadmin/relnotes.rst96
-rw-r--r--docs/source/siteadmin/theming.rst2
5 files changed, 316 insertions, 73 deletions
diff --git a/docs/source/siteadmin/deploying.rst b/docs/source/siteadmin/deploying.rst
index 9b2324ae..2f68912d 100644
--- a/docs/source/siteadmin/deploying.rst
+++ b/docs/source/siteadmin/deploying.rst
@@ -1,6 +1,6 @@
.. MediaGoblin Documentation
- Written in 2011, 2012 by MediaGoblin contributors
+ Written in 2011, 2012, 2013 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
@@ -77,7 +77,7 @@ Configure PostgreSQL
If you don't want/need postgres, skip this section.
-These are the packages needed for Debian Wheezy (testing)::
+These are the packages needed for Debian Wheezy (stable)::
sudo apt-get install postgresql postgresql-client python-psycopg2
@@ -121,25 +121,62 @@ where the first ``mediagoblin`` is the database owner and the second
Drop Privileges for MediaGoblin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-As MediaGoblin does not require special permissions or elevated
-access, you should run MediaGoblin under an existing non-root user or
-preferably create a dedicated user for the purpose of running
-MediaGoblin. Consult your distribution's documentation on how to
-create "system account" or dedicated service user. Ensure that it is
-not possible to log in to your system with as this user.
+MediaGoblin does not require special permissions or elevated
+access to run. As such, the prefered way to run MediaGoblin is to
+create a dedicated, unpriviledged system user for sole the purpose of running
+MediaGoblin. Running MediaGoblin processes under an unpriviledged system user
+helps to keep it more secure.
+
+The following command (entered as root or with sudo) will create a
+system account with a username of ``mediagoblin``. You may choose a different
+username if you wish.::
+
+ adduser --system 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 su - mediagoblin (if you have sudo permissions)
+
+or::
+
+ su - mediagoblin (if you have to use root permissions)
+
+You may get a warning similar to this when entering these commands::
+
+ warning: cannot change directory to /home/mediagoblin: No such file or directory
+
+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
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You should create a working directory for MediaGoblin. This document
assumes your local git repository will be located at
-``/srv/mediagoblin.example.org/mediagoblin/`` for this documentation.
-Substitute your prefer ed local deployment path as needed.
+``/srv/mediagoblin.example.org/mediagoblin/``.
+Substitute your prefered local deployment path as needed.
+
+Setting up the working directory requires that we first create the directory
+with elevated priviledges, and then assign ownership of the directory
+to the unpriviledged system account.
-This document assumes that all operations are performed as this
-user. To drop privileges to this user, run the following command::
+To do this, enter either of the following commands, changing the defaults
+to suit your particular requirements::
- su - [mediagoblin]
+ sudo mkdir -p /srv/mediagoblin.example.org && sudo chown -hR mediagoblin:mediagoblin /srv/mediagobin.example.org
+
+or (as the root user)::
+
+ mkdir -p /srv/mediagoblin.example.org && chown -hR mediagoblin:mediagoblin /srv/mediagobin.example.org
-Where, "``[mediagoblin]``" is the username of the system user that will
-run MediaGoblin.
Install MediaGoblin and Virtualenv
----------------------------------
@@ -151,19 +188,23 @@ Install MediaGoblin and Virtualenv
branch of the git repository. Eventually production deployments will
want to transition to running from more consistent releases.
-Issue the following commands, to create and change the working
-directory. Modify these commands to reflect your own environment::
+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.
- mkdir -p /srv/mediagoblin.example.org/
- cd /srv/mediagoblin.example.org/
+Change to the MediaGoblin directory that you just created::
-Clone the MediaGoblin repository::
+ cd /srv/mediagoblin.example.org
+
+Clone the MediaGoblin repository and set up the git submodules::
git clone git://gitorious.org/mediagoblin/mediagoblin.git
+ cd mediagoblin
+ git submodule init && git submodule update
-And set up the in-package virtualenv::
+Set up the in-package virtualenv::
- cd mediagoblin
(virtualenv --system-site-packages . || virtualenv .) && ./bin/python setup.py develop
.. note::
@@ -185,11 +226,16 @@ 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
+
This concludes the initial configuration of the development
environment. In the future, when you update your
codebase, you should also run::
- ./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate
+ ./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate && git submodule fetch
Note: If you are running an active site, depending on your server
configuration, you may need to stop it first or the dbupdate command
@@ -200,6 +246,23 @@ update)
Deploy MediaGoblin Services
---------------------------
+Edit site configuration
+~~~~~~~~~~~~~~~~~~~~~~~
+
+A few basic properties must be set before MediaGoblin will work. First
+make a copy of ``mediagoblin.ini`` for editing so the original config
+file isn't lost::
+
+ cp mediagoblin.ini mediagoblin_local.ini
+
+Then:
+ - Set ``email_sender_address`` to the address you wish to be used as
+ the sender for system-generated emails
+ - Edit ``direct_remote_path``, ``base_dir``, and ``base_url`` if
+ your mediagoblin directory is not the root directory of your
+ vhost.
+
+
Configure MediaGoblin to use the PostgreSQL database
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -235,11 +298,11 @@ browser to confirm that the service is operable.
.. _webserver-config:
-Connect the Webserver to MediaGoblin with FastCGI
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-This section describes how to configure MediaGoblin to work via
-FastCGI. Our configuration example will use nginx, however, you may
+FastCGI and nginx
+~~~~~~~~~~~~~~~~~
+
+This configuration example will use nginx, however, you may
use any webserver of your choice as long as it supports the FastCGI
protocol. If you do not already have a web server, consider nginx, as
the configuration files may be more clear than the
@@ -305,6 +368,11 @@ this ``nginx.conf`` file should be modeled on the following::
alias /srv/mediagoblin.example.org/mediagoblin/user_dev/theme_static/;
}
+ # Plugin static files (usually symlinked in)
+ location /plugin_static/ {
+ alias /srv/mediagoblin.example.org/mediagoblin/user_dev/plugin_static/;
+ }
+
# Mounting MediaGoblin itself via FastCGI.
location / {
fastcgi_pass 127.0.0.1:26543;
@@ -340,3 +408,25 @@ Visit the site you've set up in your browser by visiting
smaller deployments. However, for larger production deployments
with larger processing requirements, see the
":doc:`production-deployments`" documentation.
+
+
+Apache
+~~~~~~
+
+Instructions and scripts for running MediaGoblin on an Apache server
+can be found on the `MediaGoblin wiki <http://wiki.mediagoblin.org/Deployment>`_.
+
+
+Security Considerations
+~~~~~~~~~~~~~~~~~~~~~~~
+
+.. warning::
+
+ The directory ``user_dev/crypto/`` contains some very
+ sensitive files.
+ Especially the ``itsdangeroussecret.bin`` is very important
+ for session security. Make sure not to leak its contents anywhere.
+ If the contents gets leaked nevertheless, delete your file
+ and restart the server, so that it creates a new secret key.
+ All previous sessions will be invalidated.
+
diff --git a/docs/source/siteadmin/media-types.rst b/docs/source/siteadmin/media-types.rst
index 23d3f3b9..3e8a94e9 100644
--- a/docs/source/siteadmin/media-types.rst
+++ b/docs/source/siteadmin/media-types.rst
@@ -18,16 +18,18 @@ Media Types
====================
In the future, there will be all sorts of media types you can enable,
-but in the meanwhile there are three additional media types: video, audio
-and ascii art.
+but in the meanwhile there are five additional media types: video, audio,
+ascii art, STL/3d models, PDF and Document.
First, you should probably read ":doc:`configuration`" to make sure
you know how to modify the mediagoblin config file.
-
Enabling Media Types
====================
+.. note::
+ Media types are now plugins
+
Media types are enabled in your mediagoblin configuration file, typically it is
created by copying ``mediagoblin.ini`` to ``mediagoblin_local.ini`` and then
applying your changes to ``mediagoblin_local.ini``. If you don't already have a
@@ -37,11 +39,13 @@ Most media types have additional dependencies that you will have to install.
You will find descriptions on how to satisfy the requirements of each media type
on this page.
-To enable a media type, edit the ``media_types`` list in your
-``mediagoblin_local.ini``. For example, if your system supported image and
-video media types, then the list would look like this::
+To enable a media type, add the the media type under the ``[plugins]`` section
+in you ``mediagoblin_local.ini``. For example, if your system supported image
+and video media types, then it would look like this::
- media_types = mediagoblin.media_types.image, mediagoblin.media_types.video
+ [plugins]
+ [[mediagoblin.media_types.image]]
+ [[mediagoblin.media_types.video]]
Note that after enabling new media types, you must run dbupdate like so::
@@ -83,8 +87,8 @@ good/bad/ugly). On Debianoid systems
gstreamer0.10-ffmpeg
-Add ``mediagoblin.media_types.video`` to the ``media_types`` list in your
-``mediagoblin_local.ini`` and restart MediaGoblin.
+Add ``[[mediagoblin.media_types.video]]`` under the ``[plugins]`` section in
+your ``mediagoblin_local.ini`` and restart MediaGoblin.
Run
@@ -133,7 +137,7 @@ Then install ``scikits.audiolab`` for the spectrograms::
./bin/pip install scikits.audiolab
-Add ``mediagoblin.media_types.audio`` to the ``media_types`` list in your
+Add ``[[mediagoblin.media_types.audio]]`` under the ``[plugins]`` section in your
``mediagoblin_local.ini`` and restart MediaGoblin.
Run
@@ -158,13 +162,8 @@ library, which is necessary for creating thumbnails of ascii art
Next, modify (and possibly copy over from ``mediagoblin.ini``) your
-``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
+``mediagoblin_local.ini``. In the ``[plugins]`` section, add
+``[[mediagoblin.media_types.ascii]]``.
Run
@@ -184,7 +183,7 @@ your execution path. This feature has been tested with Blender 2.63.
It may work on some earlier versions, but that is not guaranteed (and
is surely not to work prior to Blender 2.5X).
-Add ``mediagoblin.media_types.stl`` to the ``media_types`` list in your
+Add ``[[mediagoblin.media_types.stl]]`` under the ``[plugins]`` section in your
``mediagoblin_local.ini`` and restart MediaGoblin.
Run
@@ -195,3 +194,51 @@ Run
You should now be able to upload .obj and .stl files and MediaGoblin
will be able to present them to your wide audience of admirers!
+
+PDF and Document
+================
+
+To enable the "PDF and Document" support plugin, you need:
+
+1. pdftocairo and pdfinfo for pdf only support.
+
+2. unoconv with headless support to support converting libreoffice supported
+ documents as well, such as doc/ppt/xls/odf/odg/odp and more.
+ For the full list see mediagoblin/media_types/pdf/processing.py,
+ unoconv_supported.
+
+All executables must be on your execution path.
+
+To install this on Fedora:
+
+.. code-block:: bash
+
+ sudo yum install -y poppler-utils unoconv libreoffice-headless
+
+Note: You can leave out unoconv and libreoffice-headless if you want only pdf
+support. This will result in a much smaller list of dependencies.
+
+pdf.js relies on git submodules, so be sure you have fetched them:
+
+.. code-block:: bash
+
+ git submodule init
+ git submodule update
+
+This feature has been tested on Fedora with:
+ poppler-utils-0.20.2-9.fc18.x86_64
+ unoconv-0.5-2.fc18.noarch
+ libreoffice-headless-3.6.5.2-8.fc18.x86_64
+
+It may work on some earlier versions, but that is not guaranteed.
+
+Add ``[[mediagoblin.media_types.pdf]]`` under the ``[plugins]`` section in your
+``mediagoblin_local.ini`` and restart MediaGoblin.
+
+Run
+
+.. code-block:: bash
+
+ ./bin/gmg dbupdate
+
+
diff --git a/docs/source/siteadmin/production-deployments.rst b/docs/source/siteadmin/production-deployments.rst
index 1a32d95e..839d3ce5 100644
--- a/docs/source/siteadmin/production-deployments.rst
+++ b/docs/source/siteadmin/production-deployments.rst
@@ -22,12 +22,14 @@ MediaGoblin in actual production environments. Consider
Deploy with Paste
-----------------
-The instance configured with ``./lazyserver.sh`` is not ideal for a
-production MediaGoblin deployment. Ideally, you should be able to use
-an "init" or "control" script to launch and restart the MediaGoblin
+The MediaGoblin WSGI application instance you get with ``./lazyserver.sh`` is
+not ideal for a production MediaGoblin deployment. Ideally, you should be able
+to use an "init" or "control" script to launch and restart the MediaGoblin
process.
-Use the following command as the basis for such a script: ::
+Use the following command as the basis for such a script:
+
+.. code-block:: bash
CELERY_ALWAYS_EAGER=true \
/srv/mediagoblin.example.org/mediagoblin/bin/paster serve \
@@ -41,7 +43,9 @@ synchronously, and the user will advance to the next page only after
processing is complete. If we take Celery out of "always eager mode,"
the user will be able to immediately return to the MediaGoblin site
while processing is ongoing. In these cases, use the following command
-as the basis for your script: ::
+as the basis for your script:
+
+.. code-block:: bash
CELERY_ALWAYS_EAGER=false \
/srv/mediagoblin.example.org/mediagoblin/bin/paster serve \
@@ -52,30 +56,40 @@ as the basis for your script: ::
Separate Celery
---------------
-While the ``./lazyserver.sh`` configuration provides an efficient way to
-start using a MediaGoblin instance, it is not suitable for production
-deployments for several reasons:
+MediaGoblin uses `Celery`_ to handle heavy and long-running tasks. Celery can
+be launched in two ways:
+
+1. Embedded in the MediaGoblin WSGI application [#f-mediagoblin-wsgi-app]_.
+ This is the way ``./lazyserver.sh`` does it for you. It's simple as you
+ only have to run one process. The only bad thing with this is that the
+ heavy and long-running tasks will run *in* the webserver, keeping the user
+ waiting each time some heavy lifting is needed as in for example processing
+ a video. This could lead to problems as an aborted connection will halt any
+ processing and since most front-end web servers *will* terminate your
+ connection if it doesn't get any response from the MediaGoblin WSGI
+ application in a while.
+
+2. As a separate process communicating with the MediaGoblin WSGI application
+ via a `broker`_. This offloads the heavy lifting from the MediaGoblin WSGI
+ application and users will be able to continue to browse the site while the
+ media is being processed in the background.
+
+.. _`broker`: http://docs.celeryproject.org/en/latest/getting-started/brokers/
+.. _`celery`: http://www.celeryproject.org/
+
-In nearly every scenario, work on the Celery queue will need to
-balance with the demands of other processes, and cannot proceed
-synchronously. This is a particularly relevant problem if you use
-MediaGoblin to host video content. Processing with Celery ought to be
-operationally separate from the MediaGoblin application itself, this
-simplifies management and support better workload distribution.
+.. [#f-mediagoblin-wsgi-app] The MediaGoblin WSGI application is the part that
+ of MediaGoblin that processes HTTP requests.
-Basically, if you're doing anything beyond a trivial workload, such as
-image hosting for a small set of users, or have limited media types
-such as "ASCII art" or icon sharing, you will need to run ``celeryd``
-as a separate process.
+To launch Celery separately from the MediaGoblin WSGI application:
-Build an :ref:`init script <init-script>` around the following
-command::
+1. Make sure that the ``CELERY_ALWAYS_EAGER`` environment variable is unset or
+ set to ``false`` when launching the MediaGoblin WSGI application.
+2. Start the ``celeryd`` main process with
- CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery ./bin/celeryd
+ .. code-block:: bash
-Modify your existing MediaGoblin and application init scripts, if
-necessary, to prevent them from starting their own ``celeryd``
-processes.
+ CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery ./bin/celeryd
.. _sentry:
@@ -102,7 +116,7 @@ These are scripts provided by the MediaGoblin community:
Debian
* `GNU MediaGoblin init scripts
- <https://github.com/jwandborg/mediagoblin-init-scripts>`_
+ <https://github.com/joar/mediagoblin-init-scripts>`_
by `Joar Wandborg <http://wandborg.se>`_
Arch Linux
diff --git a/docs/source/siteadmin/relnotes.rst b/docs/source/siteadmin/relnotes.rst
index f0be8ecb..72fcb3d4 100644
--- a/docs/source/siteadmin/relnotes.rst
+++ b/docs/source/siteadmin/relnotes.rst
@@ -11,6 +11,8 @@
Dedication along with this software. If not, see
<http://creativecommons.org/publicdomain/zero/1.0/>.
+.. _release-notes:
+
=============
Release Notes
=============
@@ -19,6 +21,82 @@ 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.4.1
+=====
+
+This is a bugfix release for 0.4.0. This only implements one major
+fix in the newly released document support which prevented the
+"conversion via libreoffice" feature.
+
+If you were running 0.4.0 you can upgrade to v0.4.1 via a simple
+switch and restarting mediagoblin/celery with no other actions.
+
+Otherwise, follow 0.4.0 instructions.
+
+
+0.4.0
+=====
+
+**Do this to upgrade**
+
+1. Make sure to run
+ ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+ after upgrading.
+2. See "For Theme authors" if you have a custom theme.
+3. Note that ``./bin/gmg theme assetlink`` is now just
+ ``./bin/gmg assetlink`` and covers both plugins and assets.
+ Keep on reading to hear more about new plugin features.
+4. If you want to take advantage of new plugins that have statically
+ served assets, you are going to need to add the new "plugin_static"
+ section to your nginx config. Basically the following for nginx::
+
+ # Plugin static files (usually symlinked in)
+ location /plugin_static/ {
+ alias /srv/mediagoblin.example.org/mediagoblin/user_dev/plugin_static/;
+ }
+
+ Similarly, if you've got a modified paste config, you may want to
+ borrow the app:plugin_static section from the default paste.ini
+ file.
+5. We now use itsdangerous for sessions; if you had any references to
+ beaker in your paste config you can remove them. Again, see the
+ default paste.ini config
+6. We also now use git submodules. Please do:
+ ``git submodule init && git submodule update``
+ You will need to do this to use the new PDF support.
+
+**For theme authors**
+
+If you have your own theme or you have any "user modified templates",
+please note the following:
+
+* mediagoblin/bits/ files above-content.html, body-end.html,
+ body-start.html now are renamed... they have underscores instead of
+ dashes in the filenames now :)
+* There's a new file: ``mediagoblin/bits/frontpage_welcome.html``.
+ You can easily customize this to give a welcome page appropriate to
+ your site.
+
+
+**New features**
+* PDF media type!
+* Improved plugin system. More flexible, better documented, with a
+ new plugin authoring section of the docs.
+* itsdangerous based sessions. No more beaker!
+* New, experimental Piwigo-based API. This means you should be able
+ to use MediaGoblin with something like Shotwell. (Again, a word of
+ caution: this is *very experimental*!)
+* Human readable timestamps, and the option to display the original
+ date of an image when available (available as the
+ "original_date_visible" variable)
+* Moved unit testing system from nosetests to py.test so we can better
+ handle issues with sqlalchemy exploding with different database
+ configurations. Long story :)
+* You can now disable the ability to post comments.
+* Tags now can be up to length 255 characters by default.
+
+
0.3.3
=====
@@ -26,7 +104,9 @@ carefully, or at least skim over it.
1. Make sure to run ``bin/gmg dbupdate`` after upgrading.
2. OpenStreetMap is now a plugin, so if you want to use it, add the
- following to your config file::
+ following to your config file:
+
+ .. code-block:: ini
[plugins]
[[mediagoblin.plugins.geolocation]]
@@ -98,7 +178,19 @@ MongoDB-based MediaGoblin instance to the newer SQL-based system.
**Do this to upgrade**
-1. Make sure to run ``bin/gmg dbupdate`` after upgrading.
+ # directory of your mediagoblin install
+ cd /srv/mediagoblin.example.org
+
+ # copy source for this release
+ git fetch
+ git checkout tags/v0.3.2
+
+ # perform any needed database updates
+ bin/gmg dbupdate
+
+ # restart your servers however you do that, e.g.,
+ sudo service mediagoblin-paster restart
+ sudo service mediagoblin-celeryd restart
**New features**
diff --git a/docs/source/siteadmin/theming.rst b/docs/source/siteadmin/theming.rst
index 98ec6de7..11ae3875 100644
--- a/docs/source/siteadmin/theming.rst
+++ b/docs/source/siteadmin/theming.rst
@@ -51,7 +51,7 @@ want to install this theme! Don't worry, it's fairly painless.
5. Link the assets so that they can be served by your web server::
- $ ./bin/gmg theme assetlink
+ $ ./bin/gmg assetlink
.. Note::