docs: Updated deployment docs to use sudo. Other various fixes.

- Use sudo instead of root user but give info on how to configure sudo.
- Changed docs to reference Jessie as the stable version of Debian
- Corrected the command to create the 'mediagoblin' system account
  - Fixes https://issues.mediagoblin.org/ticket/5083
This commit is contained in:
Jim Campbell 2015-04-19 12:01:10 -05:00
parent a35b7c7fb3
commit 44db13fa84

View File

@ -17,25 +17,37 @@
Deploying MediaGoblin Deploying MediaGoblin
===================== =====================
GNU MediaGoblin is fairly new and so at the time of writing, there GNU MediaGoblin is fairly new, and so at the time of writing there aren't
aren't easy package-manager-friendly methods to install MediaGoblin. easy package-manager-friendly methods to install it. However, doing a basic
However, doing a basic install isn't too complex in and of itself. install isn't too complex in and of itself. Following this deployment guide
will take you step-by-step through setting up your own instance of MediaGoblin.
There's an almost infinite way to deploy things... for now, we'll keep Of course, when it comes to setting up web applications like MediaGoblin,
it simple with some assumptions and use a setup that combines there's an almost infinite way to deploy things, so for now, we'll keep it
mediagoblin + virtualenv + fastcgi + nginx on a .deb or .rpm based simple with some assumptions. We recommend a setup that combines MediaGoblin +
GNU/Linux distro. virtualenv + fastcgi + nginx on a .deb- or .rpm-based GNU/Linux distro.
Other deployment options (e.g., deploying on FreeBSD, Arch Linux, using
Apache, etc.) are possible, though! If you'd prefer a different deployment
approach, see our
`Deployment wiki page <http://wiki.mediagoblin.org/Deployment>`_.
.. note:: .. note::
These tools are for site administrators wanting to deploy a fresh These tools are for site administrators wanting to deploy a fresh
install. If instead you want to join in as a contributor, see our install. If you want to join in as a contributor, see our
`Hacking HOWTO <http://wiki.mediagoblin.org/HackingHowto>`_ instead. `Hacking HOWTO <http://wiki.mediagoblin.org/HackingHowto>`_ instead.
There are also many ways to install servers... for the sake of .. note::
simplicity, our instructions below describe installing with nginx.
For more recipes, including Apache, see Throughout the documentation we use the ``sudo`` command to indicate that
`our wiki <http://wiki.mediagoblin.org/Deployment>`_. an instruction requires elevated user privileges to run. You can issue
these commands as the ``root`` user if you prefer.
If you need help configuring ``sudo``, see the
`Debian wiki <https://wiki.debian.org/sudo/>`_ or the
`Fedora Project wiki <https://fedoraproject.org/wiki/Configuring_Sudo/>`_.
Prepare System Prepare System
-------------- --------------
@ -56,13 +68,13 @@ MediaGoblin has the following core dependencies:
On a DEB-based system (e.g Debian, gNewSense, Trisquel, Ubuntu, and On a DEB-based system (e.g Debian, gNewSense, Trisquel, Ubuntu, and
derivatives) issue the following command:: derivatives) issue the following command::
# apt-get install git-core python python-dev python-lxml \ sudo apt-get install git-core python python-dev python-lxml \
python-imaging python-virtualenv npm automake python-imaging python-virtualenv npm automake
On a RPM-based system (e.g. Fedora, RedHat, and derivatives) issue the On a RPM-based system (e.g. Fedora, RedHat, and derivatives) issue the
following command:: following command::
# yum install python-paste-deploy python-paste-script \ sudo yum install python-paste-deploy python-paste-script \
git-core python python-devel python-lxml python-imaging \ git-core python python-devel python-lxml python-imaging \
python-virtualenv npm automake python-virtualenv npm automake
@ -78,19 +90,19 @@ Configure PostgreSQL
If you don't want/need postgres, skip this section. If you don't want/need postgres, skip this section.
These are the packages needed for Debian Wheezy (stable):: These are the packages needed for Debian Jessie (stable)::
# apt-get install postgresql postgresql-client python-psycopg2 sudo apt-get install postgresql postgresql-client python-psycopg2
These are the packages needed for an RPM-based system:: These are the packages needed for an RPM-based system::
# yum install postgresql postgresql-server python-psycopg2 sudo yum install postgresql postgresql-server python-psycopg2
An RPM-based system also requires that you initialize the PostgresSQL database 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 with this command. The following command is not needed on a Debian-based
platform, however:: platform, however::
# /usr/bin/postgresql-setup initdb sudo /usr/bin/postgresql-setup initdb
The installation process will create a new *system* user named ``postgres``, The installation process will create a new *system* user named ``postgres``,
which 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
@ -102,31 +114,33 @@ name will be ``mediagoblin`` too.
We'll add these entities by first switching to the *postgres* account:: We'll add these entities by first switching to the *postgres* account::
# su - postgres sudo su - postgres
This will change your prompt to a shell prompt, such as *-bash-4.2$*. Enter 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 the following *createuser* and *createdb* commands at that prompt. We'll
create the *mediagoblin* database user first:: create the *mediagoblin* database user first::
$ createuser -A -D mediagoblin # this command and the one that follows are run as the ``postgres`` user:
createuser -A -D mediagoblin
Then we'll create the database where all of our MediaGoblin data will be stored:: Then we'll create the database where all of our MediaGoblin data will be stored::
$ createdb -E UNICODE -O mediagoblin mediagoblin createdb -E UNICODE -O mediagoblin mediagoblin
where the first ``mediagoblin`` is the database owner and the second where the first ``mediagoblin`` is the database owner and the second
``mediagoblin`` is the database name. ``mediagoblin`` is the database name.
Type ``exit`` to return to the *root* user prompt. From here we just need to Type ``exit`` to exit from the 'postgres' user account.
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 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::
sudo chkconfig postgresql on && service postgresql start
Whereas users of *systemd*-based systems will need to enter:: Whereas users of *systemd*-based systems will need to enter::
# systemctl enable postgresql && systemctl start postgresql sudo systemctl enable postgresql && systemctl start postgresql
.. caution:: Where is the password? .. caution:: Where is the password?
@ -153,12 +167,12 @@ The following command (entered as root or with sudo) will create a
system account with a username of ``mediagoblin``. You may choose a different system account with a username of ``mediagoblin``. You may choose a different
username if you wish.:: username if you wish.::
# useradd --system --user-group mediagoblin sudo useradd -c "GNU MediaGoblin system account" -d /home/mediagoblin -U -m -r mediagoblin
No password will be assigned to this account, and you will not be able 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:: to log in as this user. To switch to this account, enter::
su mediagoblin -s /bin/bash # (if you have to use root permissions) sudo su mediagoblin -s /bin/bash
You may get a warning similar to this when entering these commands:: You may get a warning similar to this when entering these commands::
@ -184,7 +198,7 @@ to the unpriviledged system account.
To do this, enter either of the following commands, changing the defaults To do this, enter either of the following commands, changing the defaults
to suit your particular requirements:: to suit your particular requirements::
# mkdir -p /srv/mediagoblin.example.org && sudo chown -hR mediagoblin: /srv/mediagoblin.example.org sudo mkdir -p /srv/mediagoblin.example.org && sudo chown -hR mediagoblin: /srv/mediagoblin.example.org
.. note:: .. note::
@ -195,17 +209,13 @@ to suit your particular requirements::
Install MediaGoblin and Virtualenv Install MediaGoblin and Virtualenv
---------------------------------- ----------------------------------
We will now clone the MediaGoblin source code repository and setup and We will now switch to our 'mediagoblin' system account, and then set up
configure the necessary services. Modify these commands to our MediaGoblin source code repository and its necessary services.
suit your own environment. You should modify these commands to 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:: Change to the MediaGoblin directory that you just created::
sudo su mediagoblin -s /bin/bash # to change to the 'mediagoblin' account
$ cd /srv/mediagoblin.example.org $ cd /srv/mediagoblin.example.org
Clone the MediaGoblin repository and set up the git submodules:: Clone the MediaGoblin repository and set up the git submodules::
@ -220,7 +230,7 @@ Clone the MediaGoblin repository and set up the git submodules::
gitorious.org shut down, we had to move. We are presently on gitorious.org shut down, we had to move. We are presently on
Savannah. You may need to update your git repository location:: Savannah. You may need to update your git repository location::
git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git $ git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git
Set up the hacking environment:: Set up the hacking environment::
@ -261,7 +271,7 @@ A few basic properties must be set before MediaGoblin will work. First
make a copy of ``mediagoblin.ini`` for editing so the original config make a copy of ``mediagoblin.ini`` for editing so the original config
file isn't lost:: file isn't lost::
cp mediagoblin.ini mediagoblin_local.ini $ cp mediagoblin.ini mediagoblin_local.ini
Then: Then:
- Set ``email_sender_address`` to the address you wish to be used as - Set ``email_sender_address`` to the address you wish to be used as
@ -288,7 +298,7 @@ Update database data structures
Before you start using the database, you need to run:: Before you start using the database, you need to run::
./bin/gmg dbupdate $ ./bin/gmg dbupdate
to populate the database with the MediaGoblin data structures. to populate the database with the MediaGoblin data structures.
@ -299,7 +309,7 @@ Test the Server
At this point MediaGoblin should be properly installed. You can At this point MediaGoblin should be properly installed. You can
test the deployment with the following command:: test the deployment with the following command::
./lazyserver.sh --server-name=broadcast $ ./lazyserver.sh --server-name=broadcast
You should be able to connect to the machine on port 6543 in your You should be able to connect to the machine on port 6543 in your
browser to confirm that the service is operable. browser to confirm that the service is operable.
@ -322,8 +332,8 @@ into a directory that will be included in your ``nginx`` configuration
(e.g. "``/etc/nginx/sites-enabled`` or ``/etc/nginx/conf.d``) with (e.g. "``/etc/nginx/sites-enabled`` or ``/etc/nginx/conf.d``) with
one of the following commands (as the root user):: one of the following commands (as the root user)::
ln -s /srv/mediagoblin.example.org/nginx.conf /etc/nginx/conf.d/ sudo ln -s /srv/mediagoblin.example.org/nginx.conf /etc/nginx/conf.d/
ln -s /srv/mediagoblin.example.org/nginx.conf /etc/nginx/sites-enabled/ sudo ln -s /srv/mediagoblin.example.org/nginx.conf /etc/nginx/sites-enabled/
Modify these commands and locations depending on your preferences and Modify these commands and locations depending on your preferences and
the existing configuration of your nginx instance. The contents of the existing configuration of your nginx instance. The contents of
@ -408,10 +418,11 @@ process. This approach is faster and requires less memory.
Now, nginx instance is configured to serve the MediaGoblin Now, nginx instance is configured to serve the MediaGoblin
application. Perform a quick test to ensure that this configuration application. Perform a quick test to ensure that this configuration
works. Restart nginx so it picks up your changes, with a command that works. Restart nginx so it picks up your changes, with a command that
resembles one of the following (as the root user):: resembles one of the following::
sudo /etc/init.d/nginx restart sudo /etc/init.d/nginx restart
sudo /etc/rc.d/nginx restart sudo /etc/rc.d/nginx restart
sudo systemctl restart nginx
Now start MediaGoblin. Use the following command sequence as an Now start MediaGoblin. Use the following command sequence as an
example:: example::