Merge branch '942-default-location'
* 942-default-location: Add documentation on changing data dir and Fix stylistic changes Updated config_spec.ini to add %(data_basedir)s and make use of it! defaults now pulled from a mashup of mediagoblin.ini and config_spec.ini
This commit is contained in:
commit
ffa9346cef
@ -109,6 +109,34 @@ they sound like.
|
|||||||
- email_smtp_user
|
- email_smtp_user
|
||||||
- email_smtp_pass
|
- email_smtp_pass
|
||||||
|
|
||||||
|
Changing data directory
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
MediaGoblin by default stores your data in wherever ``data_basedir``.
|
||||||
|
This can be changed by changing the value in your ``mediagoblin.ini`` file
|
||||||
|
for example::
|
||||||
|
|
||||||
|
[DEFAULT]
|
||||||
|
data_basedir = "/var/mediagoblin/user_data"
|
||||||
|
|
||||||
|
For efficiency reasons MediaGoblin doesn't serve these files itself and
|
||||||
|
instead leaves that to the webserver. You will have to alter the location
|
||||||
|
to match the path in ``data_basedir``.
|
||||||
|
|
||||||
|
If you use ``lazyserver.sh`` you need to change the ``paste.ini`` file::
|
||||||
|
|
||||||
|
[app:mediagoblin]
|
||||||
|
/mgoblin_media = /var/mediagoblin/user_data
|
||||||
|
|
||||||
|
If you use nginx you need to change the config::
|
||||||
|
|
||||||
|
# Instance specific media:
|
||||||
|
location /mgoblin_media/ {
|
||||||
|
alias /var/mediagoblin/user_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
Once you have done this you will need to move any existing media you had in the
|
||||||
|
old directory to the new directory so existing media still can be displayed.
|
||||||
|
|
||||||
All other configuration changes
|
All other configuration changes
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
@ -5,6 +5,11 @@
|
|||||||
# It defines types and defaults so it’s a good place to look for documentation
|
# It defines types and defaults so it’s a good place to look for documentation
|
||||||
# or to find hidden options that we didn’t tell you about. :)
|
# or to find hidden options that we didn’t tell you about. :)
|
||||||
|
|
||||||
|
# To chnange the directory you should make sure you change the
|
||||||
|
# directory in paste.ini and/or your webserver configuration.
|
||||||
|
#[DEFAULT]
|
||||||
|
# data_basedir = "/path/to/data/directory"
|
||||||
|
|
||||||
[mediagoblin]
|
[mediagoblin]
|
||||||
direct_remote_path = /mgoblin_static/
|
direct_remote_path = /mgoblin_static/
|
||||||
email_sender_address = "notice@mediagoblin.example.org"
|
email_sender_address = "notice@mediagoblin.example.org"
|
||||||
@ -24,7 +29,7 @@ allow_registration = true
|
|||||||
allow_reporting = true
|
allow_reporting = true
|
||||||
|
|
||||||
## Uncomment this to put some user-overriding templates here
|
## Uncomment this to put some user-overriding templates here
|
||||||
# local_templates = %(here)s/user_dev/templates/
|
# local_templates = %(data_basedir)s/templates/
|
||||||
|
|
||||||
## You can set your theme by specifying this (not specifying it will
|
## You can set your theme by specifying this (not specifying it will
|
||||||
## use the default theme). Run `gmg assetlink` to apply the change.
|
## use the default theme). Run `gmg assetlink` to apply the change.
|
||||||
@ -37,10 +42,10 @@ allow_reporting = true
|
|||||||
|
|
||||||
user_privilege_scheme = "uploader,commenter,reporter"
|
user_privilege_scheme = "uploader,commenter,reporter"
|
||||||
[storage:queuestore]
|
[storage:queuestore]
|
||||||
base_dir = %(here)s/user_dev/media/queue
|
base_dir = %(data_basedir)s/media/queue
|
||||||
|
|
||||||
[storage:publicstore]
|
[storage:publicstore]
|
||||||
base_dir = %(here)s/user_dev/media/public
|
base_dir = %(data_basedir)s/media/public
|
||||||
base_url = /mgoblin_media/
|
base_url = /mgoblin_media/
|
||||||
|
|
||||||
[celery]
|
[celery]
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
data_basedir = %(here)s/user_dev
|
||||||
|
|
||||||
[mediagoblin]
|
[mediagoblin]
|
||||||
# HTML title of the pages
|
# HTML title of the pages
|
||||||
html_title = string(default="GNU MediaGoblin")
|
html_title = string(default="GNU MediaGoblin")
|
||||||
@ -13,10 +16,10 @@ sql_engine = string(default="sqlite:///%(here)s/mediagoblin.db")
|
|||||||
run_migrations = boolean(default=False)
|
run_migrations = boolean(default=False)
|
||||||
|
|
||||||
# Where temporary files used in processing and etc are kept
|
# Where temporary files used in processing and etc are kept
|
||||||
workbench_path = string(default="%(here)s/user_dev/media/workbench")
|
workbench_path = string(default="%(data_basedir)s/media/workbench")
|
||||||
|
|
||||||
# Where to store cryptographic sensible data
|
# Where to store cryptographic sensible data
|
||||||
crypto_path = string(default="%(here)s/user_dev/crypto")
|
crypto_path = string(default="%(data_basedir)s/crypto")
|
||||||
|
|
||||||
# Where mediagoblin-builtin static assets are kept
|
# Where mediagoblin-builtin static assets are kept
|
||||||
direct_remote_path = string(default="/mgoblin_static/")
|
direct_remote_path = string(default="/mgoblin_static/")
|
||||||
@ -67,7 +70,7 @@ allow_reporting = boolean(default=True)
|
|||||||
show_tos = boolean(default=False)
|
show_tos = boolean(default=False)
|
||||||
|
|
||||||
# By default not set, but you might want something like:
|
# By default not set, but you might want something like:
|
||||||
# "%(here)s/user_dev/templates/"
|
# "%(data_basedir)s/templates/"
|
||||||
local_templates = string()
|
local_templates = string()
|
||||||
|
|
||||||
# Whether or not celery is set up via an environment variable or
|
# Whether or not celery is set up via an environment variable or
|
||||||
@ -90,14 +93,14 @@ exif_visible = boolean(default=False)
|
|||||||
original_date_visible = boolean(default=False)
|
original_date_visible = boolean(default=False)
|
||||||
|
|
||||||
# Theming stuff
|
# Theming stuff
|
||||||
theme_install_dir = string(default="%(here)s/user_dev/themes/")
|
theme_install_dir = string(default="%(data_basedir)s/themes/")
|
||||||
theme_web_path = string(default="/theme_static/")
|
theme_web_path = string(default="/theme_static/")
|
||||||
theme_linked_assets_dir = string(default="%(here)s/user_dev/theme_static/")
|
theme_linked_assets_dir = string(default="%(data_basedir)s/theme_static/")
|
||||||
theme = string()
|
theme = string()
|
||||||
|
|
||||||
# plugin default assets directory
|
# plugin default assets directory
|
||||||
plugin_web_path = string(default="/plugin_static/")
|
plugin_web_path = string(default="/plugin_static/")
|
||||||
plugin_linked_assets_dir = string(default="%(here)s/user_dev/plugin_static/")
|
plugin_linked_assets_dir = string(default="%(data_basedir)s/plugin_static/")
|
||||||
|
|
||||||
# Default user upload limit (in Mb)
|
# Default user upload limit (in Mb)
|
||||||
upload_limit = integer(default=None)
|
upload_limit = integer(default=None)
|
||||||
@ -123,12 +126,12 @@ extensions = string_list(default=list())
|
|||||||
|
|
||||||
[storage:publicstore]
|
[storage:publicstore]
|
||||||
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
|
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
|
||||||
base_dir = string(default="%(here)s/user_dev/media/public")
|
base_dir = string(default="%(data_basedir)s/media/public")
|
||||||
base_url = string(default="/mgoblin_media/")
|
base_url = string(default="/mgoblin_media/")
|
||||||
|
|
||||||
[storage:queuestore]
|
[storage:queuestore]
|
||||||
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
|
storage_class = string(default="mediagoblin.storage.filestorage:BasicFileStorage")
|
||||||
base_dir = string(default="%(here)s/user_dev/media/queue")
|
base_dir = string(default="%(data_basedir)s/media/queue")
|
||||||
|
|
||||||
[media:medium]
|
[media:medium]
|
||||||
# Dimensions used when creating media display images.
|
# Dimensions used when creating media display images.
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import copy
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
@ -29,16 +30,21 @@ CONFIG_SPEC_PATH = pkg_resources.resource_filename(
|
|||||||
'mediagoblin', 'config_spec.ini')
|
'mediagoblin', 'config_spec.ini')
|
||||||
|
|
||||||
|
|
||||||
def _setup_defaults(config, config_path):
|
def _setup_defaults(config, config_path, extra_defaults=None):
|
||||||
"""
|
"""
|
||||||
Setup DEFAULTS in a config object from an (absolute) config_path.
|
Setup DEFAULTS in a config object from an (absolute) config_path.
|
||||||
"""
|
"""
|
||||||
|
extra_defaults = extra_defaults or {}
|
||||||
|
|
||||||
config.setdefault('DEFAULT', {})
|
config.setdefault('DEFAULT', {})
|
||||||
config['DEFAULT']['here'] = os.path.dirname(config_path)
|
config['DEFAULT']['here'] = os.path.dirname(config_path)
|
||||||
config['DEFAULT']['__file__'] = config_path
|
config['DEFAULT']['__file__'] = config_path
|
||||||
|
|
||||||
|
for key, value in extra_defaults.items():
|
||||||
|
config['DEFAULT'].setdefault(key, value)
|
||||||
|
|
||||||
def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
|
|
||||||
|
def read_mediagoblin_config(config_path, config_spec_path=CONFIG_SPEC_PATH):
|
||||||
"""
|
"""
|
||||||
Read a config object from config_path.
|
Read a config object from config_path.
|
||||||
|
|
||||||
@ -54,7 +60,7 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
- config_path: path to the config file
|
- config_path: path to the config file
|
||||||
- config_spec: config file that provides defaults and value types
|
- config_spec_path: config file that provides defaults and value types
|
||||||
for validation / conversion. Defaults to mediagoblin/config_spec.ini
|
for validation / conversion. Defaults to mediagoblin/config_spec.ini
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@ -68,7 +74,20 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
|
|||||||
# we can add their plugin specs to the general config_spec.
|
# we can add their plugin specs to the general config_spec.
|
||||||
config = ConfigObj(
|
config = ConfigObj(
|
||||||
config_path,
|
config_path,
|
||||||
interpolation='ConfigParser')
|
interpolation="ConfigParser")
|
||||||
|
|
||||||
|
# temporary bootstrap, just setup here and __file__... we'll do this again
|
||||||
|
_setup_defaults(config, config_path)
|
||||||
|
|
||||||
|
# Now load the main config spec
|
||||||
|
config_spec = ConfigObj(
|
||||||
|
config_spec_path,
|
||||||
|
encoding="UTF8", list_values=False, _inspec=True)
|
||||||
|
|
||||||
|
# Set up extra defaults that will be pushed into the rest of the
|
||||||
|
# configs. This is a combined extrapolation of defaults based on
|
||||||
|
mainconfig_defaults = copy.copy(config_spec.get("DEFAULT", {}))
|
||||||
|
mainconfig_defaults.update(config["DEFAULT"])
|
||||||
|
|
||||||
plugins = config.get("plugins", {}).keys()
|
plugins = config.get("plugins", {}).keys()
|
||||||
plugin_configs = {}
|
plugin_configs = {}
|
||||||
@ -82,8 +101,9 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
|
|||||||
|
|
||||||
plugin_config_spec = ConfigObj(
|
plugin_config_spec = ConfigObj(
|
||||||
plugin_config_spec_path,
|
plugin_config_spec_path,
|
||||||
encoding='UTF8', list_values=False, _inspec=True)
|
encoding="UTF8", list_values=False, _inspec=True)
|
||||||
_setup_defaults(plugin_config_spec, config_path)
|
_setup_defaults(
|
||||||
|
plugin_config_spec, config_path, mainconfig_defaults)
|
||||||
|
|
||||||
if not "plugin_spec" in plugin_config_spec:
|
if not "plugin_spec" in plugin_config_spec:
|
||||||
continue
|
continue
|
||||||
@ -95,22 +115,17 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH):
|
|||||||
"When setting up config section, could not import '%s'" %
|
"When setting up config section, could not import '%s'" %
|
||||||
plugin)
|
plugin)
|
||||||
|
|
||||||
# Now load the main config spec
|
|
||||||
config_spec = ConfigObj(
|
|
||||||
config_spec,
|
|
||||||
encoding='UTF8', list_values=False, _inspec=True)
|
|
||||||
|
|
||||||
# append the plugin specific sections of the config spec
|
# append the plugin specific sections of the config spec
|
||||||
config_spec['plugins'] = plugin_configs
|
config_spec["plugins"] = plugin_configs
|
||||||
|
|
||||||
_setup_defaults(config_spec, config_path)
|
_setup_defaults(config_spec, config_path, mainconfig_defaults)
|
||||||
|
|
||||||
config = ConfigObj(
|
config = ConfigObj(
|
||||||
config_path,
|
config_path,
|
||||||
configspec=config_spec,
|
configspec=config_spec,
|
||||||
interpolation='ConfigParser')
|
interpolation="ConfigParser")
|
||||||
|
|
||||||
_setup_defaults(config, config_path)
|
_setup_defaults(config, config_path, mainconfig_defaults)
|
||||||
|
|
||||||
# For now the validator just works with the default functions,
|
# For now the validator just works with the default functions,
|
||||||
# but in the future if we want to add additional validation/configuration
|
# but in the future if we want to add additional validation/configuration
|
||||||
|
Loading…
x
Reference in New Issue
Block a user