Mediagoblin
a quick and dirty guide, better docs and maybe puppet config later
Installation
- follow Deploying guide using python3, up to the FastCGI and Nginx part where you stop, because flup doesn't work on python3 and uWSGI is better.
- Set up uWSGI with Nginx as you see in this guide.
Make sure to install nginx-full
on Debian/Ubuntu, or nginx-all-modules
on CentOS. Then add the following as stated in this guide:
/etc/nginx/uWSGI_params
uwsgi_param QUERY_STRING $query_string; uwsgi_param REQUEST_METHOD $request_method; uwsgi_param CONTENT_TYPE $content_type; uwsgi_param CONTENT_LENGTH $content_length; uwsgi_param REQUEST_URI $request_uri; uwsgi_param PATH_INFO $document_uri; uwsgi_param DOCUMENT_ROOT $document_root; uwsgi_param SERVER_PROTOCOL $server_protocol; uwsgi_param REMOTE_ADDR $remote_addr; uwsgi_param REMOTE_PORT $remote_port; uwsgi_param SERVER_ADDR $server_addr; uwsgi_param SERVER_PORT $server_port; uwsgi_param SERVER_NAME $server_name;
Though actually, instead of the config seen in the guide, use this one (since the guide has a typo for uwsgi_pass, and puts the site under domain.com/mediagoblin/
, which is not what we want.)
/etc/nginx/conf.d/mediagoblin.conf
location / { include uWSGI_params; uwsgi_pass 127.0.0.1:26543; # our understanding vs nginx's handling of script_name vs # path_info don't match :) uwsgi_param SCRIPT_NAME ""; uwsgi_modifier1 30; }
uWSGI Emperor Config
It is a good idea to run the uWSGI apps as vassals to the uWSGI Emperor service. Install it with:
sudo yum install uwsgi uwsgi-plugin-python3
Then create a uwsgi config file for mediagoblin:
/etc/uwsgi.d/mediagoblin.ini
[uwsgi] plugin=python3 uid=mediagoblin gid=nginx socket=127.0.0.1:26543 virtualenv=/srv/www/mediagoblin chdir=/srv/www/mediagoblin ini-paste=/srv/www/mediagoblin/paste.ini logto=/srv/www/mediagoblin/mg.log
Most importantly, chown it to mediagoblin:nginx so that uwsgi will run the service with those permissions.
sudo chown mediagoblin:nginx /etc/uwsgi.d/mediagoblin.ini
Finally, run the uwsgi Emperor service.
sudo systemctl start uwsgi
If sudo systemctl restart uwsgi
shows you that [emperor] vassal mediagoblin.ini is ready to accept requests
, then enable the uwsgi service on boot:
sudo systemctl enable uwsgi
Notes
- If you have SELinux, see this guide to make it allow uWSGI sockets.
Celery Systemd Configs
You will want to seperate out the Celery process from the server, now that mediagoblin's Paste server is running under a uWSGI socket, otherwise uploads won't be processed.
You can skip the paste systemd daemon setup, since having the uwsgi service takes care of that.
http://mediagoblin.readthedocs.io/en/latest/siteadmin/configuration.html
Redis Broker for Celery
A super easy mod is to add a redis broker, which significantly helps speed the encoding process.
http://docs.celeryproject.org/en/latest/getting-started/brokers/redis.html
Media Formats
ASCII
Music
install the good, bad, and ugly gstreamer plugins from epel. also gstreamer-python, and python34-scipy