diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2017-11-28 11:34:38 -0200 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2017-11-28 11:34:38 -0200 |
commit | 6cbde11ab4fed72113f88160f79f10065b2f10e7 (patch) | |
tree | 6569249f6718d7c72fd0dd8e1ce6af3c47d79a93 | |
parent | 70b228bc31aade958f6dcdc6682cbbf6a64f3945 (diff) | |
download | templater-6cbde11ab4fed72113f88160f79f10065b2f10e7.tar.gz templater-6cbde11ab4fed72113f88160f79f10065b2f10e7.tar.bz2 |
Complement drupal7 module, updates drupal8 Makefile
-rw-r--r-- | share/templater/drupal7/files/Makefile.drupal7 | 184 | ||||
-rw-r--r-- | share/templater/drupal7/files/README.drupal7.md | 81 | ||||
-rwxr-xr-x | share/templater/drupal7/files/bin/post-receive | 10 | ||||
-rw-r--r-- | share/templater/drupal7/files/default.settings.php | 638 | ||||
-rw-r--r-- | share/templater/drupal7/files/puppet/Puppetfile | 47 | ||||
-rwxr-xr-x | share/templater/drupal7/setup | 41 | ||||
-rw-r--r-- | share/templater/drupal8/files/Makefile.drupal8 | 28 |
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 |