Deployment: Difference between revisions
(Removed cruft, added fcgi script) |
(fcgid info) |
||
Line 44: | Line 44: | ||
if __name__ == '__main__': |
if __name__ == '__main__': |
||
launch_fcgi()</pre> |
launch_fcgi()</pre> |
||
= Apache 2 Config with fcgid = |
|||
Note that the libapache2-mod-fcgi in Debian is in the nonfree section, and MediaGoblin users will want to avoid that. Instead, libapache2-mod-fcgid can be used, but requires a slightly different configuration. |
|||
<pre> |
|||
<VirtualHost *:80> |
|||
ServerName media.example.com |
|||
ServerAlias www.media.example.com |
|||
DocumentRoot /path/to/mediagoblin |
|||
Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/ |
|||
Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/ |
|||
# Rewrite all URLs to fcgi, except for static and media urls |
|||
RewriteEngine On |
|||
RewriteRule ^(mgoblin_static|mgoblin_media)($|/) - [L] |
|||
RewriteCond %{REQUEST_FILENAME} !-f |
|||
RewriteRule ^/(.*)$ /mg.fcgi/$1 [QSA,L] |
|||
# Allow access to static and media directories |
|||
<Directory /mgoblin_static> |
|||
Order allow,deny |
|||
Allow from all |
|||
</Directory> |
|||
<Directory /mgoblin_media> |
|||
Order allow,deny |
|||
Allow from all |
|||
</Directory> |
|||
<Directory /path/to/mediagoblin/> |
|||
SetHandler fcgid-script |
|||
Options +ExecCGI |
|||
FcgidWrapper /path/to/mediagoblin/mg.fcgi |
|||
order allow,deny |
|||
allow from all |
|||
</Directory> |
|||
</VirtualHost> |
|||
</pre> |
|||
= Apache Config Example = |
= Apache Config Example = |
Revision as of 22:47, 13 December 2011
This page could use a lot of work. For now, a few smaller deployment tips!
See also: http://docs.mediagoblin.org/deploying.html (some of which may belong here)
MongoDB setup
You should almost certainly run MongoDB with Journaling on if you have a new enough version of MongoDB. (If you don't, maybe you should get a newer version!) Without journaling there's some risk you could lose data that isn't yet written to disk if MongoDB is shut down incorrectly. But read about disk space below.
Also, keep in mind the following assumptions MongoDB makes about your deployment environment
- 64-bit machine
- little-endian
- more than one server
- speed is more important than reliability, and journaling is off by default (apparently that’s not true anymore, at least in 2.0, journaling is on and will preallocate gigabytes for the journal files, unless you enable the “smallfiles” option).)
FCGI script
This works great with the apache config example below :)
#!/path/to/mediagoblin/bin/python # Written in 2011 by Christopher Allan Webber # # To the extent possible under law, the author(s) have dedicated all # copyright and related and neighboring rights to this software to the # public domain worldwide. This software is distributed without any # warranty. # # You should have received a copy of the CC0 Public Domain Dedication along # with this software. If not, see # <http://creativecommons.org/publicdomain/zero/1.0/>. from paste.deploy import loadapp from flup.server.fcgi import WSGIServer CONFIG_PATH = '/path/to/mediagoblin/paste.ini' def launch_fcgi(): ccengine_wsgi_app = loadapp('config:' + CONFIG_PATH) WSGIServer(ccengine_wsgi_app).run() if __name__ == '__main__': launch_fcgi()
Apache 2 Config with fcgid
Note that the libapache2-mod-fcgi in Debian is in the nonfree section, and MediaGoblin users will want to avoid that. Instead, libapache2-mod-fcgid can be used, but requires a slightly different configuration.
<VirtualHost *:80> ServerName media.example.com ServerAlias www.media.example.com DocumentRoot /path/to/mediagoblin Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/ Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/ # Rewrite all URLs to fcgi, except for static and media urls RewriteEngine On RewriteRule ^(mgoblin_static|mgoblin_media)($|/) - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ /mg.fcgi/$1 [QSA,L] # Allow access to static and media directories <Directory /mgoblin_static> Order allow,deny Allow from all </Directory> <Directory /mgoblin_media> Order allow,deny Allow from all </Directory> <Directory /path/to/mediagoblin/> SetHandler fcgid-script Options +ExecCGI FcgidWrapper /path/to/mediagoblin/mg.fcgi order allow,deny allow from all </Directory> </VirtualHost>
Apache Config Example
This configuration example uses mod_fastcgi.
To install and enable mod_fastcgi on a Debian/Ubuntu based system:
# apt-get install libapache2-mod-suexec libapache2-mod-fastcgi # a2enmod suexec # a2enmod fastcgi
Sample configuration:
<VirtualHost *:80> ServerName mediagoblin.yourdomain.tld ServerAdmin webmaster@yourdoimain.tld DocumentRoot /var/www/ # Custom log files CustomLog /var/log/apache2/mediagobling_access.log combined ErrorLog /var/log/apache2/mediagoblin_error.log # Serve static and media files via alias Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/ Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/ # Rewrite all URLs to fcgi, except for static and media urls RewriteEngine On RewriteRule ^(mgoblin_static|mgoblin_media)($|/) - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ /mg.fcgi/$1 [QSA,L] # Allow access to static and media directories <Directory /path/to/mediagoblin/mediagoblin/static> Order allow,deny Allow from all </Directory> <Directory /path/to/mediagoblin/mediagoblin/user_dev/media/public> Order allow,deny Allow from all </Directory> # Connect to fcgi server FastCGIExternalServer /var/www/mg.fcgi -host 127.0.0.1:26543 </VirtualHost>
Then, you need to make sure mediagoblin is running in fcgi mode:
cd /path/to/mediagoblin ./lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543
Note: there may be several ways to improve this configuration