示例#1
0
def require_solr():  # pragma: no cover
    fabtools.require.deb.package('tomcat6')
    fabtools.require.deb.package('curl')
    fabtools.require.deb.package('apache2-utils')
    fabtools.require.files.directory(SOLR_HOME, use_sudo=True, owner='root', group='root')
    fabtools.require.files.directory(data_dir(), use_sudo=True, owner='tomcat6')

    if not exists(SOLR_HOME.joinpath('solr.xml')):
        sudo('curl -o /tmp/solr.tgz %s' % SOLR_DOWNLOAD)
        with cd('/tmp'):
            sudo('tar -xzvf solr.tgz')
            sudo('cp -R solr-4.5.1/example/solr/* %s' % SOLR_HOME)
            # TODO:
            #cp solr-4.5.1/example/lib/ext/*.jar /usr/share/tomcat6/lib/
            sudo('cp solr-4.5.1/example/webapps/solr.war %s' % SOLR_HOME)
            sudo('rm -rf %s' % core_dir('collection1', 'conf', 'velocity'))
            sudo('rm -rf %s' % core_dir('collection1', 'conf', 'xslt'))
            sudo('rm -rf solr-4.5.1')
            sudo('rm solr.tgz')

    create_file_as_root(
        core_dir('collection1', 'conf', 'solrconfig.xml'),
        _content(SOLRCONFIG) % data_dir('collection1'))
    create_file_as_root(core_dir('collection1', 'conf', 'schema.xml'), _content(SCHEMA))

    #
    # TODO: proxy behind nginx with basic auth!
    # https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04
    #
    #create_file_as_root(APP.nginx_location, '')
    create_file_as_root('/etc/tomcat6/Catalina/localhost/solr.xml', TOMCAT_SOLR_CONFIG)
    restart_tomcat(check_path='/admin/ping')
示例#2
0
def require_core(name, schema=None):  # pragma: no cover
    if not exists(core_dir(name)):
        sudo('cp -R %s %s' % (core_dir('collection1'), core_dir(name)))

    create_file_as_root(
        core_dir(name, 'conf', 'solrconfig.xml'),
        _content(SOLRCONFIG) % data_dir(name))
    create_file_as_root(core_dir(name, 'conf', 'schema.xml'), _content(SCHEMA))

    create_file_as_root(core_dir(name, 'core.properties'), 'name=%s' % name)
    restart_tomcat(check_path='/%s/admin/ping' % name)
示例#3
0
def cache(app):  # pragma: no cover
    """require an app to be put behind varnish
    """
    require.deb.package('varnish')
    create_file_as_root('/etc/default/varnish', DEFAULT)
    create_file_as_root('/etc/varnish/main.vcl', MAIN_VCL)

    sites_vcl = '/etc/varnish/sites.vcl'
    site_config_dir = '/etc/varnish/sites'
    site_config = '/'.join(site_config_dir, '{app.name}.vcl'.format(app=app))
    include = 'include "%s";' % site_config
    if exists(sites_vcl):
        append(sites_vcl, include, use_sudo=True)
    else:
        create_file_as_root(sites_vcl, include + '\n')

    require.files.directory(site_config_dir, use_sudo=True)
    create_file_as_root(site_config, SITE_VCL_TEMPLATE.format(app=app))
    service.restart('varnish')

    template_vars = get_template_variables(App(app.name, 6081, domain=app.domain))
    template_vars['SITE'] = True
    upload_template_as_root(app.nginx_site, 'nginx-app.conf', template_vars)
    service.reload('nginx')
示例#4
0
def uncache(app):  # pragma: no cover
    tv = get_template_variables(app)
    tv['auth'] = http_auth(app)
    create_file_as_root(app.nginx_site, SITE_TEMPLATE.format(**tv))
    service.reload('nginx')