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:
parent
a35b7c7fb3
commit
44db13fa84
@ -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::
|
||||||
|
Loading…
x
Reference in New Issue
Block a user