I get 403 Forbidden: You don't have permission to access /my_media on this server when attempting to access 127.0.0.1/my_media
Any help would be much appreciated
I am running centos 7. Here is some info:
install path: /usr/local/mediadrop #this is the same dir that my deployment.ini and mediadrop.wsgi is in
mediadrop.wsgi:
deployment_config = '/usr/local/mediadrop/deployment.ini'
temp_dir = '/tmp'
# NOTE: Before running MediaDrop, you will need to update the two paths
# above to point to the appropriate locations for your installation.
import os
os.environ['TMPDIR'] = temp_dir
if __name__.startswith('_mod_wsgi_'):
# Set up logging under mod_wsgi
from paste.script.util.logging_config import fileConfig
fileConfig(deployment_config)
# Load the app!
from paste.deploy import loadapp
application = loadapp('config:'+deployment_config)
deployment.ini:
# MediaDrop - Pylons configuration
#
# The %(here)s variable will be replaced with the parent directory of this file
#
[DEFAULT]
email_to = you@yourdomain.com
smtp_server = localhost
error_email_from = paste@localhost
[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 8080
[app:main]
# Specify the database for SQLAlchemy to use
sqlalchemy.url = mysql://mediadrop_user:c3por2d2@localhost/mediadrop?charset=utf8&use_unicode=0
sqlalchemy.echo = False
sqlalchemy.pool_recycle = 3600
db.check_for_leaked_connections = False
# Plugins which should be enabled for this MediaDrop instance (by default all
# plugins are enabled)
# To enable only specific plugins just add them as comma-separated list, e.g.:
# plugins = editviews, panda, seo
# To disable all plugins, use 'plugins = '
plugins = *
# Permission policies to restrict admin/media access. By default all
# permissions are bound to groups and a user can either view all media or none.
# custom plugins can implement more fine-grained policies (e.g. restrict view
# access to media in a specific category)
permission_policies = GroupBasedPermissionsPolicy
# Session salts.
beaker.session.secret = utjrsScCoOO02ZlNiirAWYra9
sa_auth.cookie_secret = utjrsScCoOO02ZlNiirAWYra9
# Specify an optional prefix for table names.
# Use this if you want to put MediaDrop in the same database as another app.
# XXX: If you use this setting and you want to enable search, you'll have to
# manually edit the table names in setup_triggers.sql to use this prefix.
# e.g. if you want your tables to be named like 'mcore_media', you should set:
# db_table_prefix = mcore
# mod_proxy settings
# Use this if you are hosting MediaDrop behind a proxy.
# e.g. If hosting MediaDrop via mod_proxy at the URL
# yoursite.com/my_proxied_drop/, such that all requests are passed
# through to a Paste server at localhost:8080/, you should set:
# proxy_prefix = /my_proxied_mediadrop
# Method to use when servng static media files. On of:
# apache_xsendfile - requires Apache 2.x and mod_xsendfile
# nginx_redirect - requires nginx and the creation of an internal location
# block with an alias from the path __mediadrop_serve__ to
# your /path/to/mediadrop/data/media directory.
# See the full docs below for an example:
# http://mediadrop.video/docs/install/nginx-uwsgi.html
# default - uses environ['wsgi.file_wrapper'] if it's provided by the server,
# otherwise a pure-python file iterator returns the file in chunks
file_serve_method = default
# nginx_serve_path = __mediadrop_serve__
# Enable automatic gzip compresson for all html/css/js/json responses.
# Keep this enabled unless you're serving MediaDrop via Apache and you
# are able to enable gzip there instead.
enable_gzip = true
# Data paths (your server user must be able to write to these paths!)
cache_dir = %(here)s/data
image_dir = %(here)s/data/images
media_dir = %(here)s/data/media
# Files can be moved to a trash-like folder instead of being deleted
# permanently from the filesystem. Uncomment the line below to enable this:
#deleted_files_dir = %(here)s/data/deleted
# If you'd like to fine-tune the individual locations of the cache data dirs
# for the Cache data, or the Session saves, un-comment the desired settings
# here:
#beaker.cache.data_dir = %(here)s/data/cache
#beaker.session.data_dir = %(here)s/data/sessions
# Specify the layout template name to wrap core MediaDrop output in
layout_template = layout
# Defines an external genshi template to wrap the output (including layout) in
external_template = false
external_template_name = external
external_template_url = http://some/valid_genshi_template.html
external_template_timeout = 600
# Misc app instance settings
use = egg:MediaDrop
full_stack = true
static_files = true
app_instance_uuid = 5034908d-0491-4342-9beb-b55ed63109ab
beaker.session.key = mediadrop
# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing ANYONE to
# execute malicious code after an exception is raised.
set debug = false
# Logging configuration
# Add additional loggers, handlers, formatters here
# Uses python's logging config file format
# http://docs.python.org/lib/logging-config-fileformat.html
[loggers]
keys = root
[handlers]
keys = console, wsgierrors
# To enable a MediaDrop-specific logfile, see the [handler_logfile] setting
# below, and add 'logfile' to the list of keys, like so
# keys = console, wsgierrors, logfile
[formatters]
keys = generic
# If you create additional loggers, add them as a key to [loggers]
# see development.ini for examples
[logger_root]
level = INFO
handlers = console
# If you create additional handlers, add them as a key to [handlers]
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[handler_wsgierrors]
# Handler for logging to the WSGI error handler (eg. apache's error log)
class = pylons.log.WSGIErrorsHandler
args = ()
level = NOTSET
format = generic
[handler_logfile]
# Handler for logging to a dedicated logfile. To use this, see the [handlers]
# section above; ensure the logfile you name is writeable by your server user.
class = FileHandler
args = ('/path/to/data/deployment.log','a')
level = NOTSET
formatter = generic
# If you create additional formatters, add them as a key to [formatters]
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s
datefmt = %H:%M:%S
httpd.conf relevent info:
WSGIDaemonProcess mcore \
processes=2 \
threads=1 \
display-name=%{GROUP} \
python-path=/usr/local/mediadrop/mediadrop_env/lib/python2.7/site-packages \
python-eggs=/usr/local/mediadrop/data/python-egg-cache
WSGIProcessGroup mcore
# Intercept all requests to /my_media/* and pass them to mediadrop.wsgi
WSGIScriptAlias /my_media /usr/local/mediadrop/mediadrop.wsgi
# Create an exception for media and podcast image from your data directory
AliasMatch ^/my_media/images/(media|podcasts)(.*) /path/to/data/images/$1$2
# Create an exception for all static MediaDrop content
AliasMatch ^/my_media/(admin/)?(images|scripts|styles)(.*) /path/to/mediadrop_install/mediadrop/public/$1$2$3
# Create an exception for your custom appearance css and images
Alias /my_media/appearance /path/to/data/appearance
# Make all the static content accessible
<Directory /usr/local/mediadrop/mediadrop/public/*>
Order allow,deny
Allow from all
Options -Indexes
</Directory>