summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames An2014-07-12 20:20:12 -0400
committerJames An2015-06-30 07:27:23 -0400
commit5fbd7595bac9ce6b64c85d40a75f421ca32c0a1b (patch)
treea55e2d20bc8f4e3f7a6c16ffde7ddfbc088310a5
downloadaur-5fbd7595bac9ce6b64c85d40a75f421ca32c0a1b.tar.gz
Added incomplete draft of Aegir package.
-rw-r--r--.SRCINFO35
-rw-r--r--PKGBUILD83
-rw-r--r--aegir-hostmaster.install35
-rw-r--r--aegir-provision.install215
-rw-r--r--aegir.install35
-rw-r--r--hosting-queued.service12
6 files changed, 415 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..075de35ebaad
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,35 @@
+pkgbase = aegir
+ pkgver = 2.1
+ pkgrel = 1
+ url = http://aegirproject.org/
+ arch = any
+ license = GPL
+ options = !strip
+
+pkgname = aegir
+ pkgdesc = Meta-Drupal hosting system
+ install = aegir.install
+ depends = aegir-hostmaster>=2.1
+
+pkgname = aegir-hostmaster
+ pkgdesc = Meta-Drupal hosting system - front end
+ install = aegir-hostmaster.install
+ depends = aegir-provision>=2.1
+
+pkgname = aegir-provision
+ pkgdesc = Meta-Drupal hosting system - back end
+ install = aegir-provision.install
+ depends = apache
+ depends = drush>=5.10
+ depends = git
+ depends = php
+ depends = php-gd
+ depends = php-pear
+ depends = mysql-clients
+ depends = rsync
+ depends = sudo
+ depends = smtp-forwarder
+ depends = unzip
+ optdepends = apache: asdf
+ optdepends = php-apache:
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..a608766c0eb2
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,83 @@
+# Maintainer: James An <james@jamesan.ca>
+pkgbase=aegir
+pkgname=('aegir' 'aegir-hostmaster' 'aegir-provision')
+pkgver=2.1
+pkgrel=1
+arch=('any')
+url="http://aegirproject.org/"
+license=('GPL')
+options=(!strip)
+
+#source=($pkgbase-$pkgver.tar.gz)
+sha256sums=() #autofill using updpkgsums
+
+build() {
+ cd "$pkgbase-$pkgver"
+
+ ./configure --prefix=/usr
+ make
+}
+
+package_aegir() {
+ pkgdesc="Meta-Drupal hosting system"
+ install=aegir.install
+ depends=('aegir-hostmaster>=2.1')
+
+ cd "$pkgbase-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
+
+package_aegir-hostmaster() {
+ pkgdesc="Meta-Drupal hosting system - front end"
+ install=aegir-hostmaster.install
+ depends=('aegir-provision>=2.1')
+
+ cd "$pkgbase-$pkgver"
+
+ make DESTDIR="$pkgdir/" i
+ install
+}
+
+package_aegir-provision() {
+ pkgdesc="Meta-Drupal hosting system - back end"
+ install=aegir-provision.install
+ depends=('apache' 'drush>=5.10' 'git' 'php' 'php-gd' 'php-pear' 'mysql-clients' 'rsync' 'sudo' 'smtp-forwarder' 'unzip')
+ optdepends=(
+ 'apache: asdf'
+ 'php-apache: '
+ )
+
+ # Sserver config
+ # Make sure service units for httpd and mysqld are enabled.
+ echo "Include /var/aegir/config/apache.conf" >> /etc/httpd/conf/httpd.conf
+ sed -i 's/^open_basedir.*$/open_basedir =/' /etc/php/php.ini
+ sed -i 's/^;date.timezone.*$/date.timezone = Etc\/UTC/' /etc/php/php.ini
+ sed -i 's/^memory_limit = 1.*$/memory_limit = 192M/' /etc/php/php.ini
+ sed -i 's/^;extension=posix.so$/;extension=posix.so/' /etc/php/php.ini
+ sed -i 's/^;extension=mysqli.so$/extension=mysqli.so/' /etc/php/php.ini
+ sed -i 's/^;extension=pdo_mysql.so$/extension=pdo_mysql.so/' /etc/php/php.ini
+ #sed -i 's/^;$//' /etc/php/php.ini
+
+ sed -i 's/^LoadModule.*mpm_event.*$/#LoadModule mpm_event_module modules\/mod_mpm_event.so/' /etc/httpd/conf/httpd.conf
+ sed -i '/^LoadModule.*mpm_event.*$/a LoadModule mpm_prefork_module modules\/mod_mpm_prefork.so' /etc/httpd/conf/httpd.conf
+ sed -i '/^LoadModule.*mod_dir.*$/a LoadModule php5_module modules/libphp5.so' /etc/httpd/conf/httpd.conf
+ echo 'Include conf/extra/php5_module.conf' >> /etc/httpd/conf/httpd.conf
+
+ # `hostname` and `uname -n` must resolve to an IP address of this server (loopback with 127.0.0.1 is sufficient).
+ mysql_secure_installation
+ # Install hosting-queued.service.
+
+ # Aegir user creation.
+
+ su -s /bin/bash - aegir
+ (
+ drush dl --destination=/var/aegir/.drush provision-6.x-2.0
+ drush cache-clear drush
+ drush hostmaster-install --web_group=http
+ )
+
+ cd "$pkgbase-$pkgver"
+
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/aegir-hostmaster.install b/aegir-hostmaster.install
new file mode 100644
index 000000000000..f7f593f6ed0f
--- /dev/null
+++ b/aegir-hostmaster.install
@@ -0,0 +1,35 @@
+# This is a default template for a post-install scriptlet.
+# Uncomment only required functions and remove any functions
+# you don't need (and this header).
+
+## arg 1: the new package version
+#pre_install() {
+ # do something here
+#}
+
+## arg 1: the new package version
+#post_install() {
+ # do something here
+#}
+
+## arg 1: the new package version
+## arg 2: the old package version
+#pre_upgrade() {
+ # do something here
+#}
+
+## arg 1: the new package version
+## arg 2: the old package version
+#post_upgrade() {
+ # do something here
+#}
+
+## arg 1: the old package version
+#pre_remove() {
+ # do something here
+#}
+
+## arg 1: the old package version
+#post_remove() {
+ # do something here
+#}
diff --git a/aegir-provision.install b/aegir-provision.install
new file mode 100644
index 000000000000..7afbd4798c52
--- /dev/null
+++ b/aegir-provision.install
@@ -0,0 +1,215 @@
+set -e
+
+VARLIB=/var/aegir
+
+pre_install() {
+ if [ -d $VARLIB/.drush/drush_make ]; then
+ echo "existing drush_make install in $VARLIB/.drush/drush_make detected"
+ echo "this needs to be removed or moved away for the install to be completed"
+ echo "try: rm -rf $VARLIB/.drush/drush_make"
+ exit 1
+ fi
+ if [ -d $VARLIB/.drush/provision ]; then
+ echo "existing provision install in $VARLIB/.drush/provision detected"
+ echo "this needs to be removed or moved away for the install to be completed"
+ echo "try: rm -rf $VARLIB/.drush/provision"
+ exit 1
+ fi
+
+}
+
+post_install() {
+ if ! getent passwd aegir >/dev/null ; then
+ useradd --system --groups http --no-create-home --no-user-group \
+ --home-dir "${VARLIB}" aegir
+ chmod -R 755 /var/aegir
+ fi
+
+ mkdir /var/aegir/.drush
+ cp /etc/php/php.ini /var/aegir/.drush/
+
+ echo -e "Defaults:aegir !requiretty\naegir ALL=NOPASSWD: /usr/bin/apachectl" > /etc/sudoers.d/aegir
+ chmod 0440 /etc/sudoers.d/aegir
+
+ # HOSTMASTER POST-INSTALL
+ AEGIRHOME="$(su aegir -s /bin/sh -c 'echo $HOME')"
+
+ case "$1" in
+ configure)
+ # fetch the version number from provision. the line we're looking for looks like this
+ # version=6.x-1.9
+ # this obviously doesn't work for git releases
+ VERSION=`sed -n '/^version/{s/^.*= *//;p}' /usr/share/drush/commands/provision/provision.info`
+
+ FLAGS="--yes"
+ if [ "$DPKG_DEBUG" = "developer" ]; then
+ FLAGS="$FLAGS --debug"
+ fi
+ db_get "aegir/makefile"
+ if [ ! -z "$RET" ]; then
+ FLAGS="$FLAGS --makefile='$RET'"
+ fi
+ db_get "aegir/webserver"
+ if [ ! -z "$RET" ]; then
+ if [ "$RET" = 'apache2' ]; then
+ RET='apache' # convert argument to something aegir can understand
+ fi
+ FLAGS="$FLAGS --http_service_type='$RET'"
+ WEBSERVER="$RET"
+ fi
+
+ # make sure the configuration file exists before symlinking it in place (below)
+ touch $AEGIRHOME/config/$WEBSERVER.conf
+ # fix permissions on installed directories
+ chown aegir:aegir "$AEGIRHOME" "$AEGIRHOME/config" "$AEGIRHOME/config/$WEBSERVER.conf"
+
+ # flush the drush cache to find new commands
+ su -s /bin/sh aegir -c 'drush cc drush'
+ TEMPFILE=`tempfile`
+ su -s /bin/sh aegir -c 'drush --pipe @hostmaster status 2>/dev/null | egrep "site_uri|drupal_root"' >> $TEMPFILE || true
+ if grep -q 'site_uri' $TEMPFILE; then
+ # upgrade
+ db_stop
+ . $TEMPFILE
+ echo "Aegir frontend (@hostmaster) site detected in $drupal_root"
+ # make those paths canonical to make sure we can compare correctly
+ NEW_PLATFORM=`readlink -f "$AEGIRHOME/hostmaster-$VERSION"`
+ drupal_root=`readlink -f $drupal_root`
+ # we upgrade only if the target platform doesn't exit *OR*
+ # if it's not the current platform
+ if [ -d "$NEW_PLATFORM" ] && [ "$drupal_root" = "$NEW_PLATFORM" ]; then
+ echo "it seems to be the same version as the one we're trying to install, not upgrading"
+ else
+ echo "upgrading the frontend from $drupal_root to $NEW_PLATFORM"
+ if su -s /bin/sh aegir -c 'drush @hostmaster pm-list --status=enabled --pipe' | grep -q hosting_queued; then
+ service hosting-queued stop
+ fi
+ cd "$drupal_root"
+ su -s /bin/sh aegir -c "drush hostmaster-migrate $FLAGS '$site_uri' '$NEW_PLATFORM'"
+ echo "upgrade finished, old platform left in $drupal_root"
+ # restart daemon if enabled
+ if su -s /bin/sh aegir -c 'drush @hostmaster pm-list --status=enabled --pipe' | grep -q hosting_queued; then
+ service hosting-queued start
+ fi
+ fi
+ else
+ # fresh install
+ db_get "aegir/site"
+ if [ ! -z "$RET" ]; then
+ site_uri="$RET"
+ fi
+ db_get "aegir/db_host"
+ AEGIR_DB_HOST="$RET"
+ db_get "aegir/db_user"
+ AEGIR_DB_USER="$RET"
+ db_get "aegir/db_password"
+ AEGIR_DB_PASS="$RET"
+ db_get "aegir/email"
+ EMAIL="$RET"
+
+ db_go
+
+ # forget the DB password in debconf storage
+ db_reset aegir/db_password || true
+ db_fset aegir/db_password "seen" "true" || true
+ db_stop
+
+ if [ -d $AEGIRHOME/.drush/provision ]; then
+ echo "existing provision in $AEGIRHOME/.drush/provision detected, move away and try again"
+ exit 1
+ fi
+ echo "installing the Aegir frontend (Drupal with the hostmaster profile), please wait..."
+ if [ "$DPKG_DEBUG" = "developer" ]; then
+ DEBUG="--debug"
+ fi
+
+ # pass data through JSON for extra security
+ su -s /bin/sh aegir -c "cd $AEGIRHOME && drush hostmaster-install $FLAGS --backend $site_uri 2>&1 | drush backend-parse $DEBUG" <<EOF
+ { "yes": 1,
+ "version": "$VERSION",
+ "aegir_db_host": "$AEGIR_DB_HOST",
+ "aegir_db_user": "$AEGIR_DB_USER",
+ "aegir_db_pass": "$AEGIR_DB_PASS",
+ "client_email": "$EMAIL"
+ }
+ EOF
+ # on new installs, we default to having the daemon enabled
+ echo 'Enabling hosting-queued daemon'
+ su -s /bin/sh aegir -c 'drush @hostmaster pm-enable -y hosting_queued'
+ service hosting-queued start
+ fi
+ rm -f $TEMPFILE
+
+ case $WEBSERVER in
+ apache)
+ # apache 2.2 || 2.4
+ ln -sf $AEGIRHOME/config/$WEBSERVER.conf /etc/apache2/conf.d/aegir.conf \
+ || ln -sf $VARLIB/config/$WEBSERVER.conf /etc/apache2/conf-enabled/aegir.conf
+ a2enmod ssl rewrite
+ apache2ctl graceful
+ ;;
+ nginx)
+ ln -sf $AEGIRHOME/config/$WEBSERVER.conf /etc/nginx/conf.d/aegir.conf
+ service nginx reload
+ ;;
+ esac
+
+ # this will ensure that this script aborts if the site can't be bootstrapped
+ if su -s /bin/sh aegir -c 'drush @hostmaster status' 2>&1 | grep -q 'Drupal bootstrap.*Successful'; then
+ echo 'Aegir frontend bootstrap correctly, operation was a success!'
+ echo 'Use this URL to login on your new site:'
+ su -s /bin/sh aegir -c 'drush @hostmaster uli'
+ else
+ echo 'Aegir frontend failed to bootstrap, something went wrong!'
+ echo 'Look at the log above for clues or run with DPKG_DEBUG=developer'
+ exit 1
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+ esac
+
+ # dh_installdeb will replace this with shell code automatically
+ # generated by other debhelper scripts.
+
+ # Automatically added by dh_installinit
+ if [ -x "/etc/init.d/hosting-queued" ]; then
+ update-rc.d hosting-queued defaults >/dev/null
+ invoke-rc.d hosting-queued start || exit $?
+ fi
+ # End automatically added section
+
+
+ exit 0
+
+
+
+}
+
+pre_upgrade() {
+ pre_install
+}
+
+## arg 1: the new package version
+## arg 2: the old package version
+#post_upgrade() {
+ # do something here
+#}
+
+pre_remove() {
+ systemctl --system stop hosting-queued >/dev/null
+}
+
+post_remove() {
+ userdel aegir
+ rm -f /etc/sudoers.d/aegir
+
+ systemctl --system disable hosting-queued >/dev/null
+ systemctl --system daemon-reload >/dev/null
+}
diff --git a/aegir.install b/aegir.install
new file mode 100644
index 000000000000..f7f593f6ed0f
--- /dev/null
+++ b/aegir.install
@@ -0,0 +1,35 @@
+# This is a default template for a post-install scriptlet.
+# Uncomment only required functions and remove any functions
+# you don't need (and this header).
+
+## arg 1: the new package version
+#pre_install() {
+ # do something here
+#}
+
+## arg 1: the new package version
+#post_install() {
+ # do something here
+#}
+
+## arg 1: the new package version
+## arg 2: the old package version
+#pre_upgrade() {
+ # do something here
+#}
+
+## arg 1: the new package version
+## arg 2: the old package version
+#post_upgrade() {
+ # do something here
+#}
+
+## arg 1: the old package version
+#pre_remove() {
+ # do something here
+#}
+
+## arg 1: the old package version
+#post_remove() {
+ # do something here
+#}
diff --git a/hosting-queued.service b/hosting-queued.service
new file mode 100644
index 000000000000..77ca546c34d2
--- /dev/null
+++ b/hosting-queued.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Aegir queue daemon
+After=local-fs.target network.target mysqld.service php-fpm.service
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/drush --quiet @hostmaster hosting-queued
+User=aegir
+Restart=always
+
+[Install]
+WantedBy=multi-user.target