aboutsummaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2017-11-28 11:34:38 -0200
committerSilvio Rhatto <rhatto@riseup.net>2017-11-28 11:34:38 -0200
commit6cbde11ab4fed72113f88160f79f10065b2f10e7 (patch)
tree6569249f6718d7c72fd0dd8e1ce6af3c47d79a93 /share
parent70b228bc31aade958f6dcdc6682cbbf6a64f3945 (diff)
downloadtemplater-6cbde11ab4fed72113f88160f79f10065b2f10e7.tar.gz
templater-6cbde11ab4fed72113f88160f79f10065b2f10e7.tar.bz2
Complement drupal7 module, updates drupal8 Makefile
Diffstat (limited to 'share')
-rw-r--r--share/templater/drupal7/files/Makefile.drupal7184
-rw-r--r--share/templater/drupal7/files/README.drupal7.md81
-rwxr-xr-xshare/templater/drupal7/files/bin/post-receive10
-rw-r--r--share/templater/drupal7/files/default.settings.php638
-rw-r--r--share/templater/drupal7/files/puppet/Puppetfile47
-rwxr-xr-xshare/templater/drupal7/setup41
-rw-r--r--share/templater/drupal8/files/Makefile.drupal828
7 files changed, 1007 insertions, 22 deletions
diff --git a/share/templater/drupal7/files/Makefile.drupal7 b/share/templater/drupal7/files/Makefile.drupal7
new file mode 100644
index 0000000..8faec12
--- /dev/null
+++ b/share/templater/drupal7/files/Makefile.drupal7
@@ -0,0 +1,184 @@
+#
+# Makefile for a Drupal 7 Website
+#
+
+# Parameters
+CORE = 7
+PROJECT = drupal
+ENV = dev
+DATE = $(shell date +%Y%m%d)
+CWD = $(shell pwd)
+FEATURE = drupal_feature
+DESTDIR ?= /var/www/data
+DRUPAL = $(DESTDIR)/drupal-$(CORE)
+DRUSH = drush -r $(DRUPAL) -l $(PROJECT)
+
+# Setup production environment
+production: submodules post_receive drush settings ownership
+
+# Setup a development environment
+develop: submodules $(CONTAINER)
+ #rm -rf $(DRUPAL)/sites/default
+ #ln -s $(PROJECT) $(DRUPAL)/sites/default
+
+# Old target
+# Install the platform
+#platform: drupal drush settings symlinks initdb cache
+
+# Keep code in sync
+sync-code: update drush cache
+
+# Initialize and update git submodules
+submodules:
+ git submodule sync --recursive
+ git submodule update --init --recursive
+
+# Setup virtual machine using vagrant
+vagrant:
+ vagrant up || true
+ vagrant provision
+ echo '( cd /vagrant && make drush )' | vagrant ssh
+ echo '( cd /vagrant && make settings )' | vagrant ssh
+ #vagrant ssh -c "$(DRUSH) pm-enable devel -y"
+
+# Setup virtual machine using kvmx
+kvmx:
+ #kvmx up || true
+ kvmx provision
+ echo '( cd /srv/shared && make drush )' | kvmx ssh
+ echo '( cd /srv/shared && make settings )' | kvmx ssh
+ #kvmx ssh "$(DRUSH) pm-enable devel -y"
+
+# Old target
+# Download drupal
+#drupal:
+# drush pm-download drupal-$(CORE) --destination=$(DESTDIR)
+# ( cd $(DRUPAL)/.. && ln -s drupal-$(CORE).* drupal-$(CORE) )
+
+# Old target
+# Make the needed symlinks
+#symlinks:
+# ln -s -t $(DRUPAL)/sites/$(PROJECT) $(CWD)/files
+# ln -s -t $(DRUPAL)/sites/$(PROJECT) $(CWD)/themes
+# ln -s -t $(DRUPAL)/sites/$(PROJECT) $(CWD)/modules
+# ln -s -t $(DRUPAL)/sites/$(PROJECT) $(CWD)/libraries
+
+# Default settings
+default_settings:
+ test -s settings.dev.php || cp $(DRUPAL)/sites/default/default.settings.php settings.dev.php
+
+# Custom settings
+custom_settings:
+ #mkdir -p $(DRUPAL)/sites/$(PROJECT)
+ #test -s $(DRUPAL)/sites/$(PROJECT)/settings.$(ENV).php || cp settings.dev.php $(DRUPAL)/sites/$(PROJECT)/settings.$(ENV).php
+ #test -s $(DRUPAL)/sites/$(PROJECT)/settings.php || ln -s settings.$(ENV).php $(DRUPAL)/sites/$(PROJECT)/settings.php
+ #chmod 640 $(DRUPAL)/sites/$(PROJECT)/settings.php
+ #sudo chown drupal.$(PROJECT) settings.$(ENV).php
+ test -s settings.$(ENV).php || cp settings.dev.php settings.$(ENV).php
+ test -s settings.php || ln -s settings.$(ENV).php settings.php
+ chmod 640 settings.php
+
+# Setup drupal settings
+settings: default_settings custom_settings
+
+# Fix ownership
+ownership:
+ sudo chown -R $(PROJECT). $(DRUPAL)/sites/$(PROJECT)
+
+# Run drush makefile
+drush:
+ sudo drush make --no-core drupal.make.yml $(DRUPAL)
+
+# Run drush site-install
+site_install: settings
+ $(DRUSH) site-install -y
+
+# Run drush site-install, sqlite version
+# See https://api.drupal.org/api/drupal/core%21INSTALL.sqlite.txt/8.4.x
+site_install_sqlite: settings
+ mkdir -p sql/.ht.sqlite
+ touch sql/dumps/.ht.sqlite
+ $(DRUSH) site-install --db-url=sqlite://$(CWD)/sql/dumps/.ht.sqlite
+
+# Update the database
+updatedb:
+ $(DRUSH) updatedb -y
+
+# Load the database dump, clear the drupal cache and fix image paths
+# See https://www.drupal.org/node/628130
+initdb: settings
+ test -s sql/dumps/latest.sql.gz && gzip -dc sql/dumps/latest.sql.gz | $(DRUSH) sql-cli || true
+ test -s sql/dumps/latest.sql.gz && $(DRUSH) updatedb -y || true
+ echo "TRUNCATE TABLE cache" | $(DRUSH) sql-cli
+ $(DRUSH) cc all
+ $(DRUSH) updatedb -y
+
+# Dump the database
+dumpdb: settings
+ mkdir -p sql/dumps
+ rm -f sql/dumps/latest.sql.gz
+ rm -f sql/dumps/$(DATE).sql.gz
+ $(DRUSH) sql-dump > sql/dumps/$(DATE).sql
+ ( cd sql/dumps && gzip $(DATE).sql && ln -s $(DATE).sql.gz latest.sql.gz )
+
+# Clear drupal cache
+cache:
+ $(DRUSH) cc all
+
+# Destroy the database
+destroydb: settings
+ echo "DROP DATABASE $(PROJECT); CREATE DATABASE $(PROJECT);" | $(DRUSH) sql-cli
+
+# Reinitializes the database
+reinitdb: destroydb initdb
+
+# Cleanup develop environment
+clean:
+ vagrant halt || true
+ vagrant destroy -f || true
+ kvmx poweroff || true
+ kvmx destroy || true
+ #rm -rf vendor/drupal*
+
+# Export configuration
+export:
+ $(DRUSH) features-update $(FEATURE) -y
+
+# Import configuration
+import:
+ $(DRUSH) features-revert $(FEATURE) -y
+
+# Diff configuration
+diff:
+ $(DRUSH) features-diff $(FEATURE)
+
+# Update the codebase
+update:
+ git pull
+ git submodule update --init
+
+# Upgrade modules
+upgrade-modules:
+ $(DRUSH) up
+
+# Upgrade drupal
+upgrade-drupal:
+ BASE=/vagrant/vendor drupal upgrade $(OLD) $(NEW)
+
+# Pull changes
+pull:
+ git pull
+
+# Reset the working copy
+reset:
+ #git reset HEAD
+ git checkout -f
+
+# Fix local folder permission
+perms:
+ chmod 755 .
+
+# Deploy code pushed on remote host
+deploy: perms reset submodules
+ drush cc all
+ drush features-revert -y $(FEATURE)
diff --git a/share/templater/drupal7/files/README.drupal7.md b/share/templater/drupal7/files/README.drupal7.md
new file mode 100644
index 0000000..8a0223e
--- /dev/null
+++ b/share/templater/drupal7/files/README.drupal7.md
@@ -0,0 +1,81 @@
+Drupal 7 Application HOWTO
+==========================
+
+This is the basic worflow for a Drupal 7 project set using
+[templater](https://templater.fluxo.info).
+
+Requirements
+------------
+
+Basique requirements are:
+
+* A [make](https://packages.debian.org/stable/make) implementation.
+* Container manager like vagrant, docker or [kvmx](https://kvmx.fluxo.info).
+
+Copying files
+-------------
+
+Put files and database dumps in the following folders:
+
+ rsync -avz --delete /path/to/backups/files/ files/
+ rsync -avz --delete /path/to/backups/sql/ sql/
+
+Check the Makefile.drupal7 for the db dump file name and format. Commands like
+the examples above can be used to transport files from production back to the
+development trees.
+
+Development
+-----------
+
+Create the development environment using
+
+ make develop
+
+You might need to setup vagrant, docker or kvmx first.
+
+## Default site installation
+
+If you need a fresh drupal database installation, do this in the project
+folder inside the container:
+
+ make site_install
+
+## Loading and reloading the database
+
+To load or reload the database from the latest dump available at the `sql/`
+folder, do the following in the project folder and inside the container:
+
+ make drush
+ make reinitdb
+
+## Acessing
+
+The exact port dependes on what you configured on your container configuration,
+but you should be able to reach your drupal installation at an address like
+
+ http://localhost:7070
+
+## Exporting configuration
+
+Export the configuration is easy. Do the following in the project folder and
+inside your container:
+
+ make export
+
+## Cleaning
+
+Cleaning is simple and can be run directly outside the container:
+
+ make clean
+
+Then the project is ready to be provisioned again into a container.
+
+Production
+----------
+
+Prodution provisioning example:
+
+ make production # setup environment
+ sudo vim settings.prod.php # add db info
+ sudo vim /var/www/data/drupal-7/sites/sites.php # add site into the pool
+ make initdb # initialize db from a dump
diff --git a/share/templater/drupal7/files/bin/post-receive b/share/templater/drupal7/files/bin/post-receive
new file mode 100755
index 0000000..c9c0e79
--- /dev/null
+++ b/share/templater/drupal7/files/bin/post-receive
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# Post-receive git hook.
+#
+
+echo "Deploying on `cat /etc/hostname`..."
+
+cd ..
+unset GIT_DIR
+make deploy
diff --git a/share/templater/drupal7/files/default.settings.php b/share/templater/drupal7/files/default.settings.php
new file mode 100644
index 0000000..a0b8a36
--- /dev/null
+++ b/share/templater/drupal7/files/default.settings.php
@@ -0,0 +1,638 @@
+<?php
+
+/**
+ * @file
+ * Drupal site-specific configuration file.
+ *
+ * IMPORTANT NOTE:
+ * This file may have been set to read-only by the Drupal installation program.
+ * If you make changes to this file, be sure to protect it again after making
+ * your modifications. Failure to remove write permissions to this file is a
+ * security risk.
+ *
+ * The configuration file to be loaded is based upon the rules below. However
+ * if the multisite aliasing file named sites/sites.php is present, it will be
+ * loaded, and the aliases in the array $sites will override the default
+ * directory rules below. See sites/example.sites.php for more information about
+ * aliases.
+ *
+ * The configuration directory will be discovered by stripping the website's
+ * hostname from left to right and pathname from right to left. The first
+ * configuration file found will be used and any others will be ignored. If no
+ * other configuration file is found then the default configuration file at
+ * 'sites/default' will be used.
+ *
+ * For example, for a fictitious site installed at
+ * http://www.drupal.org:8080/mysite/test/, the 'settings.php' file is searched
+ * for in the following directories:
+ *
+ * - sites/8080.www.drupal.org.mysite.test
+ * - sites/www.drupal.org.mysite.test
+ * - sites/drupal.org.mysite.test
+ * - sites/org.mysite.test
+ *
+ * - sites/8080.www.drupal.org.mysite
+ * - sites/www.drupal.org.mysite
+ * - sites/drupal.org.mysite
+ * - sites/org.mysite
+ *
+ * - sites/8080.www.drupal.org
+ * - sites/www.drupal.org
+ * - sites/drupal.org
+ * - sites/org
+ *
+ * - sites/default
+ *
+ * Note that if you are installing on a non-standard port number, prefix the
+ * hostname with that number. For example,
+ * http://www.drupal.org:8080/mysite/test/ could be loaded from
+ * sites/8080.www.drupal.org.mysite.test/.
+ *
+ * @see example.sites.php
+ * @see conf_path()
+ */
+
+/**
+ * Database settings:
+ *
+ * The $databases array specifies the database connection or
+ * connections that Drupal may use. Drupal is able to connect
+ * to multiple databases, including multiple types of databases,
+ * during the same request.
+ *
+ * Each database connection is specified as an array of settings,
+ * similar to the following:
+ * @code
+ * array(
+ * 'driver' => 'mysql',
+ * 'database' => 'databasename',
+ * 'username' => 'username',
+ * 'password' => 'password',
+ * 'host' => 'localhost',
+ * 'port' => 3306,
+ * 'prefix' => 'myprefix_',
+ * 'collation' => 'utf8_general_ci',
+ * );
+ * @endcode
+ *
+ * The "driver" property indicates what Drupal database driver the
+ * connection should use. This is usually the same as the name of the
+ * database type, such as mysql or sqlite, but not always. The other
+ * properties will vary depending on the driver. For SQLite, you must
+ * specify a database file name in a directory that is writable by the
+ * webserver. For most other drivers, you must specify a
+ * username, password, host, and database name.
+ *
+ * Transaction support is enabled by default for all drivers that support it,
+ * including MySQL. To explicitly disable it, set the 'transactions' key to
+ * FALSE.
+ * Note that some configurations of MySQL, such as the MyISAM engine, don't
+ * support it and will proceed silently even if enabled. If you experience
+ * transaction related crashes with such configuration, set the 'transactions'
+ * key to FALSE.
+ *
+ * For each database, you may optionally specify multiple "target" databases.
+ * A target database allows Drupal to try to send certain queries to a
+ * different database if it can but fall back to the default connection if not.
+ * That is useful for master/slave replication, as Drupal may try to connect
+ * to a slave server when appropriate and if one is not available will simply
+ * fall back to the single master server.
+ *
+ * The general format for the $databases array is as follows:
+ * @code
+ * $databases['default']['default'] = $info_array;
+ * $databases['default']['slave'][] = $info_array;
+ * $databases['default']['slave'][] = $info_array;
+ * $databases['extra']['default'] = $info_array;
+ * @endcode
+ *
+ * In the above example, $info_array is an array of settings described above.
+ * The first line sets a "default" database that has one master database
+ * (the second level default). The second and third lines create an array
+ * of potential slave databases. Drupal will select one at random for a given
+ * request as needed. The fourth line creates a new database with a name of
+ * "extra".
+ *
+ * For a single database configuration, the following is sufficient:
+ * @code
+ * $databases['default']['default'] = array(
+ * 'driver' => 'mysql',
+ * 'database' => 'databasename',
+ * 'username' => 'username',
+ * 'password' => 'password',
+ * 'host' => 'localhost',
+ * 'prefix' => 'main_',
+ * 'collation' => 'utf8_general_ci',
+ * );
+ * @endcode
+ *
+ * For handling full UTF-8 in MySQL, including multi-byte characters such as
+ * emojis, Asian symbols, and mathematical symbols, you may set the collation
+ * and charset to "utf8mb4" prior to running install.php:
+ * @code
+ * $databases['default']['default'] = array(
+ * 'driver' => 'mysql',
+ * 'database' => 'databasename',
+ * 'username' => 'username',
+ * 'password' => 'password',
+ * 'host' => 'localhost',
+ * 'charset' => 'utf8mb4',
+ * 'collation' => 'utf8mb4_general_ci',
+ * );
+ * @endcode
+ * When using this setting on an existing installation, ensure that all existing
+ * tables have been converted to the utf8mb4 charset, for example by using the
+ * utf8mb4_convert contributed project available at
+ * https://www.drupal.org/project/utf8mb4_convert, so as to prevent mixing data
+ * with different charsets.
+ * Note this should only be used when all of the following conditions are met:
+ * - In order to allow for large indexes, MySQL must be set up with the
+ * following my.cnf settings:
+ * [mysqld]
+ * innodb_large_prefix=true
+ * innodb_file_format=barracuda
+ * innodb_file_per_table=true
+ * These settings are available as of MySQL 5.5.14, and are defaults in
+ * MySQL 5.7.7 and up.
+ * - The PHP MySQL driver must support the utf8mb4 charset (libmysqlclient
+ * 5.5.3 and up, as well as mysqlnd 5.0.9 and up).
+ * - The MySQL server must support the utf8mb4 charset (5.5.3 and up).
+ *
+ * You can optionally set prefixes for some or all database table names
+ * by using the 'prefix' setting. If a prefix is specified, the table
+ * name will be prepended with its value. Be sure to use valid database
+ * characters only, usually alphanumeric and underscore. If no prefixes
+ * are desired, leave it as an empty string ''.
+ *
+ * To have all database names prefixed, set 'prefix' as a string:
+ * @code
+ * 'prefix' => 'main_',
+ * @endcode
+ * To provide prefixes for specific tables, set 'prefix' as an array.
+ * The array's keys are the table names and the values are the prefixes.
+ * The 'default' element is mandatory and holds the prefix for any tables
+ * not specified elsewhere in the array. Example:
+ * @code
+ * 'prefix' => array(
+ * 'default' => 'main_',
+ * 'users' => 'shared_',
+ * 'sessions' => 'shared_',
+ * 'role' => 'shared_',
+ * 'authmap' => 'shared_',
+ * ),
+ * @endcode
+ * You can also use a reference to a schema/database as a prefix. This may be
+ * useful if your Drupal installation exists in a schema that is not the default
+ * or you want to access several databases from the same code base at the same
+ * time.
+ * Example:
+ * @code
+ * 'prefix' => array(
+ * 'default' => 'main.',
+ * 'users' => 'shared.',
+ * 'sessions' => 'shared.',
+ * 'role' => 'shared.',
+ * 'authmap' => 'shared.',
+ * );
+ * @endcode
+ * NOTE: MySQL and SQLite's definition of a schema is a database.
+ *
+ * Advanced users can add or override initial commands to execute when
+ * connecting to the database server, as well as PDO connection settings. For
+ * example, to enable MySQL SELECT queries to exceed the max_join_size system
+ * variable, and to reduce the database connection timeout to 5 seconds:
+ *
+ * @code
+ * $databases['default']['default'] = array(
+ * 'init_commands' => array(
+ * 'big_selects' => 'SET SQL_BIG_SELECTS=1',
+ * ),
+ * 'pdo' => array(
+ * PDO::ATTR_TIMEOUT => 5,
+ * ),
+ * );
+ * @endcode
+ *
+ * WARNING: These defaults are designed for database portability. Changing them
+ * may cause unexpected behavior, including potential data loss.
+ *
+ * @see DatabaseConnection_mysql::__construct
+ * @see DatabaseConnection_pgsql::__construct
+ * @see DatabaseConnection_sqlite::__construct
+ *
+ * Database configuration format:
+ * @code
+ * $databases['default']['default'] = array(
+ * 'driver' => 'mysql',
+ * 'database' => 'databasename',
+ * 'username' => 'username',
+ * 'password' => 'password',
+ * 'host' => 'localhost',
+ * 'prefix' => '',
+ * );
+ * $databases['default']['default'] = array(
+ * 'driver' => 'pgsql',
+ * 'database' => 'databasename',
+ * 'username' => 'username',
+ * 'password' => 'password',
+ * 'host' => 'localhost',
+ * 'prefix' => '',
+ * );
+ * $databases['default']['default'] = array(
+ * 'driver' => 'sqlite',
+ * 'database' => '/path/to/databasefilename',
+ * );
+ * @endcode
+ */
+$databases = array();
+
+/**
+ * Access control for update.php script.
+ *
+ * If you are updating your Drupal installation using the update.php script but
+ * are not logged in using either an account with the "Administer software
+ * updates" permission or the site maintenance account (the account that was
+ * created during installation), you will need to modify the access check
+ * statement below. Change the FALSE to a TRUE to disable the access check.
+ * After finishing the upgrade, be sure to open this file again and change the
+ * TRUE back to a FALSE!
+ */
+$update_free_access = FALSE;
+
+/**
+ * Salt for one-time login links and cancel links, form tokens, etc.
+ *
+ * This variable will be set to a random value by the installer. All one-time
+ * login links will be invalidated if the value is changed. Note that if your
+ * site is deployed on a cluster of web servers, you must ensure that this
+ * variable has the same value on each server. If this variable is empty, a hash
+ * of the serialized database credentials will be used as a fallback salt.
+ *
+ * For enhanced security, you may set this variable to a value using the
+ * contents of a file outside your docroot that is never saved together
+ * with any backups of your Drupal files and database.
+ *
+ * Example:
+ * $drupal_hash_salt = file_get_contents('/home/example/salt.txt');
+ *
+ */
+$drupal_hash_salt = '';
+
+/**
+ * Base URL (optional).
+ *
+ * If Drupal is generating incorrect URLs on your site, which could
+ * be in HTML headers (links to CSS and JS files) or visible links on pages
+ * (such as in menus), uncomment the Base URL statement below (remove the
+ * leading hash sign) and fill in the absolute URL to your Drupal installation.
+ *
+ * You might also want to force users to use a given domain.
+ * See the .htaccess file for more information.
+ *
+ * Examples:
+ * $base_url = 'http://www.example.com';
+ * $base_url = 'http://www.example.com:8888';
+ * $base_url = 'http://www.example.com/drupal';
+ * $base_url = 'https://www.example.com:8888/drupal';
+ *
+ * It is not allowed to have a trailing slash; Drupal will add it
+ * for you.
+ */
+# $base_url = 'http://www.example.com'; // NO trailing slash!
+
+/**
+ * PHP settings:
+ *
+ * To see what PHP settings are possible, including whether they can be set at
+ * runtime (by using ini_set()), read the PHP documentation:
+ * http://www.php.net/manual/ini.list.php
+ * See drupal_environment_initialize() in includes/bootstrap.inc for required
+ * runtime settings and the .htaccess file for non-runtime settings. Settings
+ * defined there should not be duplicated here so as to avoid conflict issues.
+ */
+
+/**
+ * Some distributions of Linux (most notably Debian) ship their PHP
+ * installations with garbage collection (gc) disabled. Since Drupal depends on
+ * PHP's garbage collection for clearing sessions, ensure that garbage
+ * collection occurs by using the most common settings.
+ */
+ini_set('session.gc_probability', 1);
+ini_set('session.gc_divisor', 100);
+
+/**
+ * Set session lifetime (in seconds), i.e. the time from the user's last visit
+ * to the active session may be deleted by the session garbage collector. When
+ * a session is deleted, authenticated users are logged out, and the contents
+ * of the user's $_SESSION variable is discarded.
+ */
+ini_set('session.gc_maxlifetime', 200000);
+
+/**
+ * Set session cookie lifetime (in seconds), i.e. the time from the session is
+ * created to the cookie expires, i.e. when the browser is expected to discard
+ * the cookie. The value 0 means "until the browser is closed".
+ */
+ini_set('session.cookie_lifetime', 2000000);
+
+/**
+ * If you encounter a situation where users post a large amount of text, and
+ * the result is stripped out upon viewing but can still be edited, Drupal's
+ * output filter may not have sufficient memory to process it. If you
+ * experience this issue, you may wish to uncomment the following two lines
+ * and increase the limits of these variables. For more information, see
+ * http://php.net/manual/pcre.configuration.php.
+ */
+# ini_set('pcre.backtrack_limit', 200000);
+# ini_set('pcre.recursion_limit', 200000);
+
+/**
+ * Drupal automatically generates a unique session cookie name for each site
+ * based on its full domain name. If you have multiple domains pointing at the
+ * same Drupal site, you can either redirect them all to a single domain (see
+ * comment in .htaccess), or uncomment the line below and specify their shared
+ * base domain. Doing so assures that users remain logged in as they cross
+ * between your various domains. Make sure to always start the $cookie_domain
+ * with a leading dot, as per RFC 2109.
+ */
+# $cookie_domain = '.example.com';
+
+/**
+ * Variable overrides:
+ *
+ * To override specific entries in the 'variable' table for this site,
+ * set them here. You usually don't need to use this feature. This is
+ * useful in a configuration file for a vhost or directory, rather than
+ * the default settings.php. Any configuration setting from the 'variable'
+ * table can be given a new value. Note that any values you provide in
+ * these variable overrides will not be modifiable from the Drupal
+ * administration interface.
+ *
+ * The following overrides are examples:
+ * - site_name: Defines the site's name.
+ * - theme_default: Defines the default theme for this site.
+ * - anonymous: Defines the human-readable name of anonymous users.
+ * Remove the leading hash signs to enable.
+ */
+# $conf['site_name'] = 'My Drupal site';
+# $conf['theme_default'] = 'garland';
+# $conf['anonymous'] = 'Visitor';
+
+/**
+ * A custom theme can be set for the offline page. This applies when the site
+ * is explicitly set to maintenance mode through the administration page or when
+ * the database is inactive due to an error. It can be set through the
+ * 'maintenance_theme' key. The template file should also be copied into the
+ * theme. It is located inside 'modules/system/maintenance-page.tpl.php'.
+ * Note: This setting does not apply to installation and update pages.
+ */
+# $conf['maintenance_theme'] = 'bartik';
+
+/**
+ * Reverse Proxy Configuration:
+ *
+ * Reverse proxy servers are often used to enhance the performance
+ * of heavily visited sites and may also provide other site caching,
+ * security, or encryption benefits. In an environment where Drupal
+ * is behind a reverse proxy, the real IP address of the client should
+ * be determined such that the correct client IP address is available
+ * to Drupal's logging, statistics, and access management systems. In
+ * the most simple scenario, the proxy server will add an
+ * X-Forwarded-For header to the request that contains the client IP
+ * address. However, HTTP headers are vulnerable to spoofing, where a
+ * malicious client could bypass restrictions by setting the
+ * X-Forwarded-For header directly. Therefore, Drupal's proxy
+ * configuration requires the IP addresses of all remote proxies to be
+ * specified in $conf['reverse_proxy_addresses'] to work correctly.
+ *
+ * Enable this setting to get Drupal to determine the client IP from
+ * the X-Forwarded-For header (or $conf['reverse_proxy_header'] if set).
+ * If you are unsure about this setting, do not have a reverse proxy,
+ * or Drupal operates in a shared hosting environment, this setting
+ * should remain commented out.
+ *
+ * In order for this setting to be used you must specify every possible
+ * reverse proxy IP address in $conf['reverse_proxy_addresses'].
+ * If a complete list of reverse proxies is not available in your
+ * environment (for example, if you use a CDN) you may set the
+ * $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
+ * Be aware, however, that it is likely that this would allow IP
+ * address spoofing unless more advanced precautions are taken.
+ */
+# $conf['reverse_proxy'] = TRUE;
+
+/**
+ * Specify every reverse proxy IP address in your environment.
+ * This setting is required if $conf['reverse_proxy'] is TRUE.
+ */
+# $conf['reverse_proxy_addresses'] = array('a.b.c.d', ...);
+
+/**
+ * Set this value if your proxy server sends the client IP in a header
+ * other than X-Forwarded-For.
+ */
+# $conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
+
+/**
+ * Page caching:
+ *
+ * By default, Drupal sends a "Vary: Cookie" HTTP header for anonymous page
+ * views. This tells a HTTP proxy that it may return a page from its local
+ * cache without contacting the web server, if the user sends the same Cookie
+ * header as the user who originally requested the cached page. Without "Vary:
+ * Cookie", authenticated users would also be served the anonymous page from
+ * the cache. If the site has mostly anonymous users except a few known
+ * editors/administrators, the Vary header can be omitted. This allows for
+ * better caching in HTTP proxies (including reverse proxies), i.e. even if
+ * clients send different cookies, they still get content served from the cache.
+ * However, authenticated users should access the site directly (i.e. not use an
+ * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid
+ * getting cached pages from the proxy.
+ */
+# $conf['omit_vary_cookie'] = TRUE;
+
+/**
+ * CSS/JS aggregated file gzip compression:
+ *
+ * By default, when CSS or JS aggregation and clean URLs are enabled Drupal will
+ * store a gzip compressed (.gz) copy of the aggregated files. If this file is
+ * available then rewrite rules in the default .htaccess file will serve these
+ * files to browsers that accept gzip encoded content. This allows pages to load
+ * faster for these users and has minimal impact on server load. If you are
+ * using a webserver other than Apache httpd, or a caching reverse proxy that is
+ * configured to cache and compress these files itself you may want to uncomment
+ * one or both of the below lines, which will prevent gzip files being stored.
+ */
+# $conf['css_gzip_compression'] = FALSE;
+# $conf['js_gzip_compression'] = FALSE;
+
+/**
+ * Block caching:
+ *
+ * Block caching may not be compatible with node access modules depending on
+ * how the original block cache policy is defined by the module that provides
+ * the block. By default, Drupal therefore disables block caching when one or
+ * more modules implement hook_node_grants(). If you consider block caching to
+ * be safe on your site and want to bypass this restriction, uncomment the line
+ * below.
+ */
+# $conf['block_cache_bypass_node_grants'] = TRUE;
+
+/**
+ * String overrides:
+ *
+ * To override specific strings on your site with or without enabling the Locale
+ * module, add an entry to this list. This functionality allows you to change
+ * a small number of your site's default English language interface strings.
+ *
+ * Remove the leading hash signs to enable.
+ */
+# $conf['locale_custom_strings_en'][''] = array(
+# 'forum' => 'Discussion board',
+# '@count min' => '@count minutes',
+# );
+
+/**
+ *
+ * IP blocking:
+ *
+ * To bypass database queries for denied IP addresses, use this setting.
+ * Drupal queries the {blocked_ips} table by default on every page request
+ * for both authenticated and anonymous users. This allows the system to
+ * block IP addresses from within the administrative interface and before any
+ * modules are loaded. However on high traffic websites you may want to avoid
+ * this query, allowing you to bypass database access altogether for anonymous
+ * users under certain caching configurations.
+ *
+ * If using this setting, you will need to add back any IP addresses which
+ * you may have blocked via the administrative interface. Each element of this
+ * array represents a blocked IP address. Uncommenting the array and leaving it
+ * empty will have the effect of disabling IP blocking on your site.
+ *
+ * Remove the leading hash signs to enable.
+ */
+# $conf['blocked_ips'] = array(
+# 'a.b.c.d',
+# );
+
+/**
+ * Fast 404 pages:
+ *
+ * Drupal can generate fully themed 404 pages. However, some of these responses
+ * are for images or other resource files that are not displayed to the user.
+ * This can waste bandwidth, and also generate server load.
+ *
+ * The options below return a simple, fast 404 page for URLs matching a
+ * specific pattern:
+ * - 404_fast_paths_exclude: A regular expression to match paths to exclude,
+ * such as images generated by image styles, or dynamically-resized images.
+ * The default pattern provided below also excludes the private file system.
+ * If you need to add more paths, you can add '|path' to the expression.
+ * - 404_fast_paths: A regular expression to match paths that should return a
+ * simple 404 page, rather than the fully themed 404 page. If you don't have
+ * any aliases ending in htm or html you can add '|s?html?' to the expression.
+ * - 404_fast_html: The html to return for simple 404 pages.
+ *
+ * Add leading hash signs if you would like to disable this functionality.
+ */
+$conf['404_fast_paths_exclude'] = '/\/(?:styles)|(?:system\/files)\//';
+$conf['404_fast_paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
+$conf['404_fast_html'] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL "@path" was not found on this server.</p></body></html>';
+
+/**
+ * By default the page request process will return a fast 404 page for missing
+ * files if they match the regular expression set in '404_fast_paths' and not
+ * '404_fast_paths_exclude' above. 404 errors will simultaneously be logged in
+ * the Drupal system log.
+ *
+ * You can choose to return a fast 404 page earlier for missing pages (as soon
+ * as settings.php is loaded) by uncommenting the line below. This speeds up
+ * server response time when loading 404 error pages and prevents the 404 error
+ * from being logged in the Drupal system log. In order to prevent valid pages
+ * such as image styles and other generated content that may match the
+ * '404_fast_paths' regular expression from returning 404 errors, it is
+ * necessary to add them to the '404_fast_paths_exclude' regular expression
+ * above. Make sure that you understand the effects of this feature before
+ * uncommenting the line below.
+ */
+# drupal_fast_404();
+
+/**
+ * External access proxy settings:
+ *
+ * If your site must access the Internet via a web proxy then you can enter
+ * the proxy settings here. Currently only basic authentication is supported
+ * by using the username and password variables. The proxy_user_agent variable
+ * can be set to NULL for proxies that require no User-Agent header or to a
+ * non-empty string for proxies that limit requests to a specific agent. The
+ * proxy_exceptions variable is an array of host names to be accessed directly,
+ * not via proxy.
+ */
+# $conf['proxy_server'] = '';
+# $conf['proxy_port'] = 8080;
+# $conf['proxy_username'] = '';
+# $conf['proxy_password'] = '';
+# $conf['proxy_user_agent'] = '';
+# $conf['proxy_exceptions'] = array('127.0.0.1', 'localhost');
+
+/**
+ * Authorized file system operations:
+ *
+ * The Update manager module included with Drupal provides a mechanism for
+ * site administrators to securely install missing updates for the site
+ * directly through the web user interface. On securely-configured servers,
+ * the Update manager will require the administrator to provide SSH or FTP
+ * credentials before allowing the installation to proceed; this allows the
+ * site to update the new files as the user who owns all the Drupal files,
+ * instead of as the user the webserver is running as. On servers where the
+ * webserver user is itself the owner of the Drupal files, the administrator
+ * will not be prompted for SSH or FTP credentials (note that these server
+ * setups are common on shared hosting, but are inherently insecure).
+ *
+ * Some sites might wish to disable the above functionality, and only update
+ * the code directly via SSH or FTP themselves. This setting completely
+ * disables all functionality related to these authorized file operations.
+ *
+ * @see http://drupal.org/node/244924
+ *
+ * Remove the leading hash signs to disable.
+ */
+# $conf['allow_authorize_operations'] = FALSE;
+
+/**
+ * Theme debugging:
+ *
+ * When debugging is enabled:
+ * - The markup of each template is surrounded by HTML comments that contain
+ * theming information, such as template file name suggestions.
+ * - Note that this debugging markup will cause automated tests that directly
+ * check rendered HTML to fail.
+ *
+ * For more information about debugging theme templates, see
+ * https://www.drupal.org/node/223440#theme-debug.
+ *
+ * Not recommended in production environments.
+ *
+ * Remove the leading hash sign to enable.
+ */
+# $conf['theme_debug'] = TRUE;
+
+/**
+ * CSS identifier double underscores allowance:
+ *
+ * To allow CSS identifiers to contain double underscores (.example__selector)
+ * for Drupal's BEM-style naming standards, uncomment the line below.
+ * Note that if you change this value in existing sites, existing page styles
+ * may be broken.
+ *
+ * @see drupal_clean_css_identifier()
+ */
+# $conf['allow_css_double_underscores'] = TRUE;
+$databases['default']['default'] = array(
+ 'driver' => 'mysql',
+ 'database' => 'drupal',
+ 'username' => 'drupal',
+ 'password' => 'hackme',
+ 'host' => 'localhost',
+ 'prefix' => '',
+);
diff --git a/share/templater/drupal7/files/puppet/Puppetfile b/share/templater/drupal7/files/puppet/Puppetfile
new file mode 100644
index 0000000..85b9e3c
--- /dev/null
+++ b/share/templater/drupal7/files/puppet/Puppetfile
@@ -0,0 +1,47 @@
+# Basic modules
+mod "augeas",
+ :git => "https://git.fluxo.info/puppet-augeas"
+mod "backup",
+ :git => "https://git.fluxo.info/puppet-backup"
+mod "backupninja",
+ :git => "https://git.fluxo.info/puppet-backupninja",
+ :ref => "develop"
+mod "concat",
+ :git => "https://git.fluxo.info/puppet-concat"
+mod "cron",
+ :git => "https://git.fluxo.info/puppet-cron"
+mod "domain_check",
+ :git => "https://git.fluxo.info/puppet-domain_check"
+mod "exim",
+ :git => "https://git.fluxo.info/puppet-exim"
+mod "lsb",
+ :git => "https://git.fluxo.info/puppet-lsb"
+mod "nodo",
+ :git => "https://git.fluxo.info/puppet-nodo"
+mod "rsyslog",
+ :git => "https://git.fluxo.info/puppet-rsyslog"
+mod "shellprompt",
+ :git => "https://git.fluxo.info/shellprompt"
+mod "sshd",
+ :git => "https://git.fluxo.info/puppet-sshd",
+ :ref => "develop"
+mod "ssl",
+ :git => "https://git.fluxo.info/puppet-ssl"
+mod "stdlib",
+ :git => "https://git.fluxo.info/puppet-stdlib"
+mod "user",
+ :git => "https://git.fluxo.info/puppet-user"
+mod "tunnel",
+ :git => "https://git.fluxo.info/puppet-tunnel"
+
+# Additional modules
+mod "mysql",
+ :git => "https://git.fluxo.info/puppet-mysql"
+mod "database",
+ :git => "https://git.fluxo.info/puppet-database"
+mod "apache",
+ :git => "https://git.fluxo.info/puppet-apache"
+mod "php",
+ :git => "https://git.fluxo.info/puppet-php"
+mod "drupal",
+ :git => "https://git.fluxo.info/puppet-drupal"
diff --git a/share/templater/drupal7/setup b/share/templater/drupal7/setup
index 968e23b..70ebe07 100755
--- a/share/templater/drupal7/setup
+++ b/share/templater/drupal7/setup
@@ -14,20 +14,43 @@ function templater_drupal7 {
if [ ! -e 'settings.dev.php' ]; then
templater_echo "Setting up Drupal 7..."
- #if [ ! -e "Makefile" ]; then
- # cp $SHARE/drupal7/files/Makefile .
- ##elif ! grep -q ^drupal: Makefile; then
- ## grep -v '^#' $SHARE/drupal7/files/Makefile >> Makefile
- #else
- # cp $SHARE/drupal7/files/Makefile Makefile.drupal7
- #fi
+ if [ ! -e ".gitignore" ] || ! grep -q "^settings.php" .gitignore; then
+ echo settings.php >> .gitignore
+ echo settings.prod.php >> .gitignore
+ echo files >> .gitignore
+ echo sql >> .gitignore
+ fi
+
+ if [ ! -e "settings.dev.php" ]; then
+ cp $SHARE/drupal7/files/default.settings.php settings.dev.php
+ #cp $SHARE/drupal7/files/default.settings.php .
+ fi
+
+ ln -sf settings.dev.php settings.php
+
+ templater_install_makefile $SHARE/drupal7/files/Makefile.drupal7
if [ ! -e "drupal.make.yml" ]; then
cp $SHARE/drupal7/files/drupal.make.yml .
fi
- mkdir -p files themes modules libraries
- mkdir -p vendor
+ if [ ! -e "README.drupal7.md" ]; then
+ cp $SHARE/drupal7/files/README.drupal8.md .
+ fi
+
+ if [ -d "puppet" ] && [ ! -e "puppet/Puppetfile" ]; then
+ cp $SHARE/drupal7/files/puppet/Puppetfile puppet/
+ else
+ cp $SHARE/drupal7/files/puppet/Puppetfile puppet/Puppetfile.drupal8
+ fi
+
+ if [ ! -e "bin/post-receive" ]; then
+ mkdir -p bin && cp $SHARE/drupal7/files/bin/post-receive bin/
+ fi
+
+ mkdir -p files themes modules libraries vendor
+ touch {files,config,themes,modules,libraries,vendor}/.empty
+ git add -f {files,themes,modules,libraries}/.empty
else
templater_echo "Drupal already set"
fi
diff --git a/share/templater/drupal8/files/Makefile.drupal8 b/share/templater/drupal8/files/Makefile.drupal8
index 36c2d1e..a88d280 100644
--- a/share/templater/drupal8/files/Makefile.drupal8
+++ b/share/templater/drupal8/files/Makefile.drupal8
@@ -3,15 +3,15 @@
#
# Parameters
-CORE = 8
-PROJECT = drupal
-DATABASE ?= $(PROJECT)
-ENV ?= dev
-DATE = $(shell date +%Y%m%d)
-CWD = $(shell pwd)
-DESTDIR ?= /var/www/data
-DRUPAL = $(DESTDIR)/drupal-$(CORE)
-DRUSH = drush -r $(DRUPAL) -l $(PROJECT)
+CORE = 8
+PROJECT = drupal
+DATABASE ?= $(PROJECT)
+ENV ?= dev
+DATE = $(shell date +%Y%m%d)
+CWD = $(shell pwd)
+DESTDIR ?= /var/www/data
+DRUPAL = $(DESTDIR)/drupal-$(CORE)
+DRUSH = drush -r $(DRUPAL) -l $(PROJECT)
# Setup production environment
production: submodules post_receive drush settings ownership
@@ -35,13 +35,15 @@ submodules:
# Setup the virtual machine using vagrant
vagrant:
- vagrant up
+ vagrant up || true
+ vagrant provision
echo '( cd /vagrant && make drush )' | vagrant ssh
echo '( cd /vagrant && make settings )' | vagrant ssh
#vagrant ssh -c "$(DRUSH) pm-enable devel -y"
# Setup the virtual machine using kvmx
kvmx:
+ #kvmx up || true
kvmx provision
echo '( cd /srv/shared && make drush )' | kvmx ssh
echo '( cd /srv/shared && make settings )' | kvmx ssh
@@ -120,12 +122,12 @@ updatedb:
# Load the database dump, clear the drupal cache and fix image paths
# See https://www.drupal.org/node/628130
-initdb:
+initdb: settings
test -s sql/dumps/latest.sql.gz && gzip -dc sql/dumps/latest.sql.gz | $(DRUSH) sql-cli || true
test -s sql/dumps/latest.sql.gz && $(DRUSH) updatedb -y || true
# Dump the database
-dumpdb:
+dumpdb: settings
mkdir -p sql/dumps
rm -f sql/dumps/latest.sql.gz
rm -f sql/dumps/$(DATE).sql.gz
@@ -137,7 +139,7 @@ cache:
$(DRUSH) cache-rebuild
# Destroy the database
-destroydb:
+destroydb: settings
echo "DROP DATABASE $(DATABASE); CREATE DATABASE $(DATABASE);" | $(DRUSH) sql-cli
# Reinitializes the database