docs: Add chapter on upgrading, inc. system Python upgrades [#972].
[mediagoblin.git] / docs / source / siteadmin / deploying.rst
CommitLineData
473a4431
CAW
1.. MediaGoblin Documentation
2
62a565e1 3 Written in 2011, 2012, 2013, 2020 by MediaGoblin contributors
473a4431
CAW
4
5 To the extent possible under law, the author(s) have dedicated all
6 copyright and related and neighboring rights to this software to
7 the public domain worldwide. This software is distributed without
8 any warranty.
9
10 You should have received a copy of the CC0 Public Domain
11 Dedication along with this software. If not, see
12 <http://creativecommons.org/publicdomain/zero/1.0/>.
13
abe74178
WKG
14.. _deploying-chapter:
15
4e893b6e 16=====================
17Deploying MediaGoblin
18=====================
00fdc7bd 19
464a5d7f 20This deployment guide will take you step-by-step through
62a565e1 21setting up your own instance of MediaGoblin.
56d507b6 22
62a565e1
BS
23MediaGoblin most likely isn't yet available from your operating
24system's package manage, however, a basic install isn't too complex in
e82857fa
BS
25and of itself. We recommend a setup that combines MediaGoblin,
26virtualenv and Nginx on a .deb or .rpm-based GNU/Linux distribution.
44db13fa 27
62a565e1
BS
28Experts may of course choose other deployment options, including
29Apache. See our `Deployment wiki page
30<http://wiki.mediagoblin.org/Deployment>`_ for for more details.
31Please note that we are not able to provide support for these
32alternative deployment options.
e260065a 33
076bf0cf
WKG
34.. note::
35
36 These tools are for site administrators wanting to deploy a fresh
44db13fa 37 install. If you want to join in as a contributor, see our
076bf0cf 38 `Hacking HOWTO <http://wiki.mediagoblin.org/HackingHowto>`_ instead.
e260065a 39
44db13fa
JC
40.. note::
41
42 Throughout the documentation we use the ``sudo`` command to indicate that
43 an instruction requires elevated user privileges to run. You can issue
44 these commands as the ``root`` user if you prefer.
45
46 If you need help configuring ``sudo``, see the
47 `Debian wiki <https://wiki.debian.org/sudo/>`_ or the
48 `Fedora Project wiki <https://fedoraproject.org/wiki/Configuring_Sudo/>`_.
49
4d8a3cd8 50
4e893b6e 51Prepare System
52--------------
e260065a 53
4e893b6e 54Dependencies
55~~~~~~~~~~~~
e260065a 56
4e893b6e 57MediaGoblin has the following core dependencies:
e260065a 58
62a565e1 59- Python 3.4+ (Python 2.7 is supported, but not recommended)
100f6265 60- `python3-lxml <http://lxml.de/>`_
4e893b6e 61- `git <http://git-scm.com/>`_
775ec9e8 62- `SQLite <http://www.sqlite.org/>`_/`PostgreSQL <http://www.postgresql.org/>`_
4e893b6e 63- `Python Imaging Library <http://www.pythonware.com/products/pil/>`_ (PIL)
64- `virtualenv <http://www.virtualenv.org/>`_
62a565e1 65- `Node.js <https://nodejs.org>`_
e260065a 66
7e10cdde
BS
67These instructions have been tested on Debian 10, CentOS 8 and
68Fedora 31. These instructions should approximately translate to recent
69Debian derivatives such as Ubuntu 18.04 and Trisquel 8, and to relatives of
70Fedora such as CentOS 8.
71
72Issue the following commands:
3a1fb089
BS
73
74.. code-block:: bash
e260065a 75
7e10cdde 76 # Debian 10
62a565e1
BS
77 sudo apt update
78 sudo apt install automake git nodejs npm python3-dev python3-gi \
79 python3-gst-1.0 python3-lxml python3-pil virtualenv
e260065a 80
7e10cdde
BS
81 # Fedora 31
82 sudo dnf install automake gcc git-core make nodejs npm python3-devel \
62a565e1 83 python3-lxml python3-pillow virtualenv
4e893b6e 84
62a565e1 85.. note::
e260065a 86
62a565e1
BS
87 MediaGoblin now uses Python 3 by default. To use Python 2, you may
88 instead substitute from "python3" to "python" for most package
89 names in the Debian instructions and this should cover dependency
7e10cdde 90 installation. Python 2 installation has not been tested on Fedora.
e2212f94 91
62a565e1
BS
92For a production deployment, you'll also need Nginx as frontend web
93server and RabbitMQ to store the media processing queue::
2e1e9650 94
7e10cdde 95 # Debian
62a565e1
BS
96 sudo apt install nginx-light rabbitmq-server
97
7e10cdde 98 # Fedora
35494ed6 99 sudo dnf install nginx rabbitmq-server
775ec9e8 100
7e10cdde
BS
101..
102 .. note::
775ec9e8 103
7e10cdde
BS
104 You might have to enable additional repositories under Fedora
105 because rabbitmq-server might be not included in official
106 repositories. That looks like this for CentOS::
62a565e1 107
7e10cdde
BS
108 sudo dnf config-manager --set-enabled centos-rabbitmq-38
109 sudo dnf config-manager --set-enabled PowerTools
110 sudo dnf install rabbitmq-server
111 sudo systemctl enable rabbitmq-server.service
112 # TODO: Celery repeatedly disconnects from RabbitMQ on CentOS 8.
775ec9e8 113
7e10cdde
BS
114 As an alternative, you can try installing redis-server and
115 configure it as celery broker.
62a565e1
BS
116
117Configure PostgreSQL
118~~~~~~~~~~~~~~~~~~~~
119
120.. note::
7798f911 121
62a565e1
BS
122 MediaGoblin currently supports PostgreSQL and SQLite. The default
123 is a local SQLite database. This will "just work" for small
124 deployments. For medium to large deployments we recommend
125 PostgreSQL. If you don't want/need PostgreSQL, skip this section.
7798f911 126
464a5d7f 127These are the packages needed for PostgreSQL::
775ec9e8 128
7e10cdde 129 # Debian
62a565e1 130 sudo apt install postgresql python3-psycopg2
c3075e91 131
7e10cdde 132 # Fedora
62a565e1 133 sudo dnf install postgresql postgresql-server python3-psycopg2
c3075e91 134
7e10cdde 135Fedora also requires that you initialize and start the
9650aa39 136PostgreSQL database with a few commands. The following commands are
a0392075 137not needed on a Debian-based platform, however::
c3075e91 138
7e10cdde 139 # Feora
44db13fa 140 sudo /usr/bin/postgresql-setup initdb
a0392075
JC
141 sudo systemctl enable postgresql
142 sudo systemctl start postgresql
775ec9e8
JW
143
144The installation process will create a new *system* user named ``postgres``,
9650aa39
BS
145which will have privileges sufficient to manage the database. We will create a
146new database user with restricted privileges and a new database owned by our
775ec9e8
JW
147restricted database user for our MediaGoblin instance.
148
149In this example, the database user will be ``mediagoblin`` and the database
62a565e1 150name will be ``mediagoblin`` too. We'll first at the user::
775ec9e8 151
62a565e1 152 sudo --login --user=postgres createuser --no-createdb mediagoblin
775ec9e8 153
c3075e91
JC
154Then we'll create the database where all of our MediaGoblin data will be stored::
155
62a565e1 156 sudo --login --user=postgres createdb --encoding=UTF8 --owner=mediagoblin mediagoblin
c3075e91 157
775ec9e8
JW
158.. caution:: Where is the password?
159
160 These steps enable you to authenticate to the database in a password-less
161 manner via local UNIX authentication provided you run the MediaGoblin
162 application as a user with the same name as the user you created in
163 PostgreSQL.
164
165 More on this in :ref:`Drop Privileges for MediaGoblin <drop-privileges-for-mediagoblin>`.
166
167
775ec9e8
JW
168.. _drop-privileges-for-mediagoblin:
169
4e893b6e 170Drop Privileges for MediaGoblin
171~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17c71230 172
fd5c35e5 173MediaGoblin does not require special permissions or elevated
1b4a9f26
CAW
174access to run. As such, the preferred way to run MediaGoblin is to
175create a dedicated, unprivileged system user for the sole purpose of running
6ec0393d 176MediaGoblin. Running MediaGoblin processes under an unprivileged system user
fd5c35e5
JC
177helps to keep it more secure.
178
62a565e1
BS
179The following command will create a system account with a username of
180``mediagoblin``.
fd5c35e5 181
4c89287c 182If you are using a Debian-based system, enter this command::
fd5c35e5 183
7e10cdde
BS
184 # Debian
185 sudo useradd --system --create-home --home-dir /var/lib/qmediagoblin \
464a5d7f 186 --group www-data --comment 'GNU MediaGoblin system account' mediagoblin
4c89287c 187
7e10cdde 188 # Fedora
464a5d7f
BS
189 sudo useradd --system --create-home --home-dir /var/lib/mediagoblin \
190 --group nginx --comment 'GNU MediaGoblin system account' mediagoblin
4c89287c
JC
191
192This will create a ``mediagoblin`` user and assign it to a group that is
193associated with the web server. This will ensure that the web server can
62a565e1 194read the media files that users upload (images, videos, etc.)
4c89287c 195
62a565e1
BS
196Many operating systems will automatically create a group
197``mediagoblin`` to go with the new user ``mediagoblin``, but just to
198be sure::
4c89287c 199
62a565e1
BS
200 sudo groupadd --force mediagoblin
201 sudo usermod --append --groups mediagoblin mediagoblin
4c89287c 202
fd5c35e5 203No password will be assigned to this account, and you will not be able
9a1ba0e8 204to log in as this user. To switch to this account, enter::
fd5c35e5 205
62a565e1 206 sudo su mediagoblin --shell=/bin/bash
fd5c35e5 207
ef2642f7 208To return to your regular user account after using the system account, type
62a565e1 209``exit`` or ``Ctrl-d``.
fd5c35e5 210
fd5c35e5
JC
211.. _create-mediagoblin-directory:
212
213Create a MediaGoblin Directory
214~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17c71230 215
4e893b6e 216You should create a working directory for MediaGoblin. This document
076bf0cf 217assumes your local git repository will be located at
fd5c35e5 218``/srv/mediagoblin.example.org/mediagoblin/``.
9650aa39 219Substitute your preferred local deployment path as needed.
fd5c35e5
JC
220
221Setting up the working directory requires that we first create the directory
9650aa39 222with elevated privileges, and then assign ownership of the directory
6ec0393d 223to the unprivileged system account.
17c71230 224
62a565e1
BS
225To do this, enter the following commands, changing the defaults to suit your
226particular requirements::
fd5c35e5 227
7e10cdde 228 # Debian
62a565e1
BS
229 sudo mkdir --parents /srv/mediagoblin.example.org
230 sudo chown --no-dereference --recursive mediagoblin:www-data /srv/mediagoblin.example.org
fd5c35e5 231
7e10cdde 232 # Fedora
62a565e1
BS
233 sudo mkdir --parents /srv/mediagoblin.example.org
234 sudo chown --no-dereference --recursive mediagoblin:nginx /srv/mediagoblin.example.org
17c71230 235
4e893b6e 236
e260065a 237Install MediaGoblin and Virtualenv
4e893b6e 238----------------------------------
e260065a 239
44db13fa
JC
240We will now switch to our 'mediagoblin' system account, and then set up
241our MediaGoblin source code repository and its necessary services.
242You should modify these commands to suit your own environment.
17c71230 243
62a565e1
BS
244Switch to the ``mediagoblin`` unprivileged user and change to the
245MediaGoblin directory that you just created::
fd5c35e5 246
62a565e1 247 sudo su mediagoblin --shell=/bin/bash
9a1ba0e8 248 $ cd /srv/mediagoblin.example.org
17c71230 249
62a565e1
BS
250.. note::
251
252 Unless otherwise noted, the remainder of this document assumes that all
253 operations are performed using the unprivileged ``mediagoblin``
254 account, indicated by the ``$`` prefix.
255
d3b1fd2e 256Clone the MediaGoblin repository and set up the git submodules::
e260065a 257
7e10cdde
BS
258 $ git clone --depth=1 https://git.savannah.gnu.org/git/mediagoblin.git \
259 --branch stable --recursive
9a1ba0e8 260 $ cd mediagoblin
e260065a 261
62a565e1 262Set up the environment::
9fa1e602 263
7e10cdde
BS
264 $ ./bootstrap.sh
265 $ VIRTUALENV_FLAGS='--system-site-packages' ./configure
266 $ make
e260065a 267
62a565e1 268.. note::
f0e137ab 269
62a565e1
BS
270 If you'd prefer to run MediaGoblin with Python 2, pass in
271 ``--without-python3`` to the ``./configure`` command.
e2212f94 272
b791ae97
JC
273Create and set the proper permissions on the ``user_dev`` directory.
274This directory will be used to store uploaded media files::
275
7e10cdde 276 $ mkdir --mode=2750 user_dev
b791ae97 277
7981fdaf
BS
278This concludes the initial configuration of the MediaGoblin
279environment. In the future, you can upgrade MediaGoblin according to
280the ":doc:`upgrading`" documentation.
9d5cd0b9
CAW
281
282
e82857fa
BS
283Configure Mediagoblin
284---------------------
e260065a 285
a7d2a892
ST
286Edit site configuration
287~~~~~~~~~~~~~~~~~~~~~~~
288
62a565e1
BS
289Edit ``mediagoblin.ini`` and update ``email_sender_address`` to the
290address you wish to be used as the sender for system-generated emails.
e82857fa 291You'll find more details in ":doc:`configuration`".
a7d2a892 292
62a565e1 293.. note::
a7d2a892 294
62a565e1
BS
295 If you're changing the MediaGoblin directories or URL prefix, you
296 may need to edit ``direct_remote_path``, ``base_dir``, and
297 ``base_url``.
94c10f1c 298
a7d2a892
ST
299
300
775ec9e8
JW
301Configure MediaGoblin to use the PostgreSQL database
302~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
303
9650aa39 304If you are using PostgreSQL, edit the ``[mediagoblin]`` section in your
464a5d7f 305``mediagoblin.ini`` and remove the ``#`` prefix on the line containing::
775ec9e8
JW
306
307 sql_engine = postgresql:///mediagoblin
308
62a565e1
BS
309This assumes you are running the MediaGoblin application under the
310same system account and database account; both ``mediagoblin``.
775ec9e8 311
7798f911 312
775ec9e8
JW
313Update database data structures
314~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315
7798f911 316Before you start using the database, you need to run::
775ec9e8 317
44db13fa 318 $ ./bin/gmg dbupdate
775ec9e8
JW
319
320to populate the database with the MediaGoblin data structures.
321
322
62a565e1
BS
323Create an admin account
324~~~~~~~~~~~~~~~~~~~~~~~
325
326Create a MediaGoblin account with full administration access. Provide
327your own email address and enter a secure password when prompted::
328
329 $ ./bin/gmg adduser --username you --email you@example.com
330 $ ./bin/gmg makeadmin you
331
332
4e893b6e 333Test the Server
334~~~~~~~~~~~~~~~
e260065a 335
4e893b6e 336At this point MediaGoblin should be properly installed. You can
076bf0cf 337test the deployment with the following command::
e260065a 338
44db13fa 339 $ ./lazyserver.sh --server-name=broadcast
e260065a 340
4e893b6e 341You should be able to connect to the machine on port 6543 in your
62a565e1
BS
342browser to confirm that the service is operable. You should also be
343able to log in with the admin username and password.
e260065a 344
62a565e1 345Type ``Ctrl-c`` to exit the above server test.
3948e44c 346
62a565e1
BS
347The next series of commands will need to be run as a privileged user.
348To return to your regular user account after using the system account,
349type ``exit`` or ``Ctrl-d``.
3948e44c 350
cd1abb11 351
e82857fa
BS
352Deploy MediaGoblin
353------------------
354
355The configuration described below is sufficient for development and
356smaller deployments. However, for larger production deployments with
357larger processing requirements, see the
358":doc:`production-deployments`" documentation.
359
360.. _webserver-config:
56d507b6 361
e82857fa
BS
362Nginx as a reverse-proxy
363~~~~~~~~~~~~~~~~~~~~~~~~
a7d2a892 364
62a565e1
BS
365This configuration example will use Nginx, however, you may use any
366webserver of your choice. If you do not already have a web server,
367consider Nginx, as the configuration files may be more clear than the
368alternatives.
4e893b6e 369
370Create a configuration file at
371``/srv/mediagoblin.example.org/nginx.conf`` and create a symbolic link
372into a directory that will be included in your ``nginx`` configuration
62a565e1
BS
373(e.g. "``/etc/nginx/sites-enabled`` or ``/etc/nginx/conf.d``) with the
374following commands::
cd7af789 375
7e10cdde 376 # Debian
62a565e1
BS
377 sudo ln --symbolic /srv/mediagoblin.example.org/nginx.conf /etc/nginx/sites-enabled/mediagoblin.conf
378 sudo rm --force /etc/nginx/sites-enabled/default
cd7af789
JC
379 sudo systemctl enable nginx
380
7e10cdde 381 # Fedora
62a565e1 382 sudo ln -s /srv/mediagoblin.example.org/nginx.conf /etc/nginx/conf.d/mediagoblin.conf
cd7af789
JC
383 sudo systemctl enable nginx
384
62a565e1
BS
385You can modify these commands and locations depending on your
386preferences and the existing configuration of your Nginx instance. The
387contents of this ``/srv/mediagoblin.example.org/nginx.conf`` file
388should be modeled on the following::
076bf0cf
WKG
389
390 server {
391 #################################################
392 # Stock useful config options, but ignore them :)
393 #################################################
394 include /etc/nginx/mime.types;
395
396 autoindex off;
397 default_type application/octet-stream;
398 sendfile on;
399
400 # Gzip
401 gzip on;
402 gzip_min_length 1024;
403 gzip_buffers 4 32k;
cd7af789 404 gzip_types text/plain application/x-javascript text/javascript text/xml text/css;
076bf0cf
WKG
405
406 #####################################
407 # Mounting MediaGoblin stuff
408 # This is the section you should read
409 #####################################
410
411 # Change this to update the upload size limit for your users
412 client_max_body_size 8m;
413
a49c741f
CAW
414 # prevent attacks (someone uploading a .txt file that the browser
415 # interprets as an HTML file, etc.)
416 add_header X-Content-Type-Options nosniff;
37b48053 417
076bf0cf
WKG
418 server_name mediagoblin.example.org www.mediagoblin.example.org;
419 access_log /var/log/nginx/mediagoblin.example.access.log;
420 error_log /var/log/nginx/mediagoblin.example.error.log;
421
422 # MediaGoblin's stock static files: CSS, JS, etc.
423 location /mgoblin_static/ {
424 alias /srv/mediagoblin.example.org/mediagoblin/mediagoblin/static/;
425 }
426
427 # Instance specific media:
428 location /mgoblin_media/ {
429 alias /srv/mediagoblin.example.org/mediagoblin/user_dev/media/public/;
430 }
431
8d051cc0
CAW
432 # Theme static files (usually symlinked in)
433 location /theme_static/ {
434 alias /srv/mediagoblin.example.org/mediagoblin/user_dev/theme_static/;
435 }
436
24ede044
CAW
437 # Plugin static files (usually symlinked in)
438 location /plugin_static/ {
439 alias /srv/mediagoblin.example.org/mediagoblin/user_dev/plugin_static/;
440 }
441
82c2f9a9 442 # Forward requests to the MediaGoblin app server.
076bf0cf 443 location / {
82c2f9a9 444 proxy_pass http://127.0.0.1:6543;
4e893b6e 445 }
076bf0cf 446 }
4e893b6e 447
f44bd7dc
CAW
448The first four ``location`` directives instruct Nginx to serve the
449static and uploaded files directly rather than through the MediaGoblin
450process. This approach is faster and requires less memory.
451
452.. note::
453
cd7af789 454 The user who owns the Nginx process, normally ``www-data`` or ``nginx``,
f44bd7dc
CAW
455 requires execute permission on the directories ``static``,
456 ``public``, ``theme_static`` and ``plugin_static`` plus all their
457 parent directories. This user also requires read permission on all
458 the files within these directories. This is normally the default.
459
cd7af789
JC
460Nginx is now configured to serve the MediaGoblin application. Perform a quick
461test to ensure that this configuration works::
462
62a565e1 463 sudo nginx -t
cd7af789 464
9650aa39
BS
465If you encounter any errors, review your Nginx configuration files, and try to
466resolve them. If you do not encounter any errors, you can start your Nginx
62a565e1 467server (may vary depending on your operating system)::
4e893b6e 468
44db13fa 469 sudo systemctl restart nginx
4e893b6e 470
62a565e1 471Now start MediaGoblin to test your Nginx configuration::
4e893b6e 472
62a565e1
BS
473 sudo su mediagoblin --shell=/bin/bash
474 $ cd /srv/mediagoblin.example.org/mediagoblin/
475 $ ./lazyserver.sh --server-name=main
4e893b6e 476
62a565e1
BS
477You should be able to connect to the machine on port 80 in your
478browser to confirm that the service is operable. If this is the
479machine in front of you, visit <http://localhost/> or if it is a
480remote server visit the URL or IP address provided to you by your
481hosting provider. You should see MediaGoblin; this time via Nginx!
4e893b6e 482
06d8fc89
BS
483Try logging in and uploading an image. If after uploading you see any
484"Forbidden" errors from Nginx or your image doesn't show up, you may
485need to update the permissions on the new directories MediaGoblin has
486created::
487
7e10cdde 488 # Debian
06d8fc89
BS
489 sudo chown --no-dereference --recursive mediagoblin:www-data /srv/mediagoblin.example.org
490
7e10cdde 491 # Fedora
06d8fc89
BS
492 sudo chown --no-dereference --recursive mediagoblin:nginx /srv/mediagoblin.example.org
493
4e893b6e 494.. note::
a7d2a892 495
62a565e1
BS
496 If you see an Nginx placeholder page, you may need to remove the
497 Nginx default configuration, or explictly set a ``server_name``
498 directive in the Nginx config.
a7d2a892 499
62a565e1
BS
500Type ``Ctrl-c`` to exit the above server test and ``exit`` or
501``Ctrl-d`` to exit the mediagoblin shell.
a7d2a892 502
b835e153 503
62a565e1 504.. _systemd-service-files:
3f088a3f 505
62a565e1
BS
506Run MediaGoblin as a system service
507-----------------------------------
3f088a3f 508
62a565e1
BS
509To ensure MediaGoblin is automatically started and restarted in case of
510problems, we need to run it as a system service. If your operating system uses
511Systemd, you can use Systemd ``service files`` to manage both the Celery and
512Paste processes.
3f088a3f 513
e82857fa
BS
514In the Systemd configuration below, MediaGoblin log files are kept in
515the ``/var/log/mediagoblin`` directory. Create the directory and give
516it the proper permissions::
517
518 sudo mkdir --parents /var/log/mediagoblin
519 sudo chown --no-dereference --recursive mediagoblin:mediagoblin /var/log/mediagoblin
520
62a565e1
BS
521Place the following service files in the ``/etc/systemd/system/``
522directory. The first file should be named
523``mediagoblin-celeryd.service``. Be sure to modify it to suit your
524environment's setup:
525
526.. code-block:: bash
527
528 # Set the WorkingDirectory and Environment values to match your environment.
529 [Unit]
530 Description=MediaGoblin Celeryd
531
532 [Service]
533 User=mediagoblin
534 Group=mediagoblin
535 Type=simple
536 WorkingDirectory=/srv/mediagoblin.example.org/mediagoblin
537 Environment=MEDIAGOBLIN_CONFIG=/srv/mediagoblin.example.org/mediagoblin/mediagoblin.ini \
538 CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery
539 ExecStart=/srv/mediagoblin.example.org/mediagoblin/bin/celery worker \
540 --logfile=/var/log/mediagoblin/celery.log \
541 --loglevel=INFO
542
543 [Install]
544 WantedBy=multi-user.target
545
546
547The second file should be named ``mediagoblin-paster.service``:
548
549.. code-block:: bash
550
551 # Set the WorkingDirectory and Environment values to match your environment.
552 [Unit]
553 Description=Mediagoblin
554
555 [Service]
556 Type=simple
557 User=mediagoblin
558 Group=mediagoblin
559 Environment=CELERY_ALWAYS_EAGER=false
560 WorkingDirectory=/srv/mediagoblin.example.org/mediagoblin
561 ExecStart=/srv/mediagoblin.example.org/mediagoblin/bin/paster serve \
562 /srv/mediagoblin.example.org/mediagoblin/paste.ini \
563 --log-file=/var/log/mediagoblin/mediagoblin.log \
564 --server-name=main
565
566 [Install]
567 WantedBy=multi-user.target
568
569
570Enable these processes to start at boot by entering::
b835e153 571
62a565e1
BS
572 sudo systemctl enable mediagoblin-celeryd.service && sudo systemctl enable mediagoblin-paster.service
573
574
575Start the processes for the current session with::
576
577 sudo systemctl start mediagoblin-celeryd.service
578 sudo systemctl start mediagoblin-paster.service
579
580
581If either command above gives you an error, you can investigate the cause of
582the error by entering either of::
583
584 sudo systemctl status mediagoblin-celeryd.service
585 sudo systemctl status mediagoblin-paster.service
586
587The above ``systemctl status`` command is also useful if you ever want to
588confirm that a process is still running. If you make any changes to the service
589files, you can reload the service files by entering::
590
591 sudo systemctl daemon-reload
592
593After entering that command, you can attempt to start the Celery or Paste
594processes again using ``restart`` instead of ``start``.
595
596Assuming the above was successful, you should now have a MediaGoblin
597server that will continue to operate, even after being restarted.
598Great job!
599
62a565e1 600
e82857fa
BS
601What next?
602----------
b835e153 603
e82857fa
BS
604This configuration supports upload of images only, but MediaGoblin
605also supports other types of media, such as audio, video, PDFs and 3D
606models. For details, see the ":doc:`media-types`" documentation.
fd5c35e5 607
f44bd7dc
CAW
608..
609 Local variables:
610 fill-column: 70
611 End: