Mediagoblin: Difference between revisions
Antonizoon (talk | contribs) (Created page with "== Installation == {{Note|If you have SELinux, temporarily set it to Enforcing mode. After installation, [http://nathanielca.se/fossrit/deploying-mediagoblin-2-selinux.html a...") |
Antonizoon (talk | contribs) (→Music) |
||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
a quick and dirty guide, better docs and maybe puppet config later | |||
== Installation == | == Installation == | ||
Line 5: | Line 7: | ||
# follow [http://mediagoblin.readthedocs.io/en/latest/siteadmin/deploying.html 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. | # follow [http://mediagoblin.readthedocs.io/en/latest/siteadmin/deploying.html 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 [http://nathanielca.se/fossrit/deploying-mediagoblin-1-fastcgi-vs-uwsgi.html as you see in this guide.] | # Set up uWSGI with Nginx [http://nathanielca.se/fossrit/deploying-mediagoblin-1-fastcgi-vs-uwsgi.html as you see in this guide.] | ||
Make sure to install {{ic|nginx-full}} on Debian/Ubuntu, or {{ic|nginx-all-modules}} on CentOS. Then add the following [http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html as stated in this guide:] | |||
{{hc|/etc/nginx/uWSGI_params|<nowiki> | |||
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; | |||
</nowiki>}} | |||
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 {{ic|domain.com/mediagoblin/}}, which is not what we want.) | |||
{{hc|/etc/nginx/conf.d/mediagoblin.conf|<nowiki>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; | |||
} | |||
</nowiki>}} | |||
=== uWSGI Emperor Config === | |||
It is a good idea to run the uWSGI apps as vassals to the uWSGI Emperor service. Install it with: | |||
{{bc|sudo yum install uwsgi uwsgi-plugin-python3}} | |||
Then create a uwsgi config file for mediagoblin: | |||
{{hc|/etc/uwsgi.d/mediagoblin.ini|<nowiki> | |||
[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 | |||
</nowiki>}} | |||
Most importantly, chown it to mediagoblin:nginx so that uwsgi will run the service with those permissions. | |||
{{bc|sudo chown mediagoblin:nginx /etc/uwsgi.d/mediagoblin.ini}} | |||
Finally, run the uwsgi Emperor service. | |||
{{bc|sudo systemctl start uwsgi}} | |||
If {{ic|sudo systemctl restart uwsgi}} shows you that {{ic|[emperor] vassal mediagoblin.ini is ready to accept requests}}, then enable the uwsgi service on boot: | |||
{{bc|sudo systemctl enable uwsgi}} | |||
=== Notes === | |||
# If you have SELinux, [http://nathanielca.se/fossrit/deploying-mediagoblin-2-selinux.html see this guide] to make it allow uWSGI sockets. | # If you have SELinux, [http://nathanielca.se/fossrit/deploying-mediagoblin-2-selinux.html 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 libsndfile-devel | |||
https://wiki.centos.org/TipsAndTricks/MultimediaOnCentOS7 | |||
Then, install a specific version of numpy and such as stated in this ticket: | |||
https://issues.mediagoblin.org/ticket/5379 | |||
You're probably better off using something like Koel though if you don't need user contributions... https://koel.phanan.net/docs/#/ |
Latest revision as of 15:43, 9 July 2017
a quick and dirty guide, better docs and maybe puppet config later
Installation[edit]
- 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[edit]
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[edit]
- If you have SELinux, see this guide to make it allow uWSGI sockets.
Celery Systemd Configs[edit]
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[edit]
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[edit]
ASCII[edit]
Music[edit]
install the good, bad, and ugly gstreamer plugins from epel. also gstreamer-python, and libsndfile-devel
https://wiki.centos.org/TipsAndTricks/MultimediaOnCentOS7
Then, install a specific version of numpy and such as stated in this ticket:
https://issues.mediagoblin.org/ticket/5379
You're probably better off using something like Koel though if you don't need user contributions... https://koel.phanan.net/docs/#/