From 5aae065998ba8b96742e91fdd8fb79e17a2aea5a Mon Sep 17 00:00:00 2001 From: Valentin Lab Date: Tue, 21 Oct 2014 16:09:11 +0800 Subject: [PATCH] new: [lamp] added first draft of a ``lamp`` charm. --- precise/lamp/hooks/install | 123 +++++++++++++++++++++++++++++++++++++ precise/lamp/hooks/start | 7 +++ precise/lamp/hooks/stop | 3 + precise/lamp/metadata.yaml | 16 +++++ precise/lamp/revision | 1 + precise/lamp/shorewall | 9 +++ 6 files changed, 159 insertions(+) create mode 100755 precise/lamp/hooks/install create mode 100755 precise/lamp/hooks/start create mode 100755 precise/lamp/hooks/stop create mode 100644 precise/lamp/metadata.yaml create mode 100644 precise/lamp/revision create mode 100644 precise/lamp/shorewall diff --git a/precise/lamp/hooks/install b/precise/lamp/hooks/install new file mode 100755 index 0000000..30d18b6 --- /dev/null +++ b/precise/lamp/hooks/install @@ -0,0 +1,123 @@ +#!/bin/bash + +set -eux + +echo "This hook is not tested and is more in a collection of command +lines that anything." && exit 1 + + + +apt-get -y install apache2 libOAtidy-0.99-0 build-essential + + + +## Build material +DEV="libmysqlclient-dev" +apt-get install $DEV + + +if [ "$PYTHON_REQUIRED" ]; then + apt-get -y install libapache2-mod-python python-dev + #apt-get -y install python-docutils ## for rst2html +fi + + +if [ "$PHP_VERSION" == "" ]; then + ## Install php from system + + apt-get -y install php5-dev php5-ldap php5-xsl php-pear libapache2-mod-php5 + ## Couldn't find this one: + #php-mcrypt + + apt-get -y install php5-mysql +else + ## XXXvlab: tested on automotostop 10.04 with php-5.5.17... + # PHP_VERSION=5.5.17 + cd /tmp && + wget http://fr2.php.net/get/php-$PHP_VERSION.tar.bz2/from/this/mirror -O php-$PHP_VERSION.tar.bz2 && + tar xvjf php-$PHP_VERSION.tar.bz2 | exit 1 + cd php-$PHP_VERSION | exit 1 + ## XXXvlab: the build-dep method seems better for now. + # DEPS="libcurl4-openssl-dev \ + # libsqlite3-dev libmysqlclient-dev libreadline-dev \ + # libzip-dev libxslt1-dev libmcrypt-dev libbz2-dev \ + # libj" + # DEPS="$DEPS apache2-prefork-dev" + ## XXXvlab: don't seem to need this: apache2-threaded-dev + # apt-get -y install $DEPS && + apt-get build-dep php5 && + ./configure --with-layout=GNU \ + --prefix=/opt/apps/php-5.5.17 \ + --with-config-file-path=/opt/apps/php-5.5.17/etc/php \ + --with-config-file-scan-dir=/opt/apps/php-5.5.17/etc/php/conf.d \ + --disable-rpath --enable-exif --with-tidy --with-xmlrpc --with-xsl \ + --enable-mbstring --enable-mbregex --enable-phar --enable-posix \ + --enable-soap --enable-sockets --enable-sysvmsg \ + --enable-sysvsem --enable-sysvshm --enable-zip \ + --enable-inline-optimization --enable-intl \ + --with-icu-dir=/usr --with-curl=/usr/bin --with-gd \ + --with-jpeg-dir=/usr --with-png-dir=shared,/usr --with-xpm-dir=/usr \ + --with-freetype-dir=/usr --with-bz2=/usr --with-gettext \ + --with-iconv-dir=/usr --with-mcrypt=/usr --with-mhash \ + --with-zlib-dir=/usr --with-regex=php --with-pcre-regex=/usr \ + --with-openssl --with-openssl-dir=/usr/bin \ + --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysqli=mysqlnd \ + --with-sqlite3=/usr --with-pdo-mysql=mysqlnd --with-pdo-sqlite=/usr \ + --enable-pcntl --enable-cli --with-apxs2=/usr/bin/apxs2 --with-pear \ + --with-readline --with-mysql && + make || exit 1 + + ## opcache replaces apc + echo "zend_extension=opcache.so" > /etc/php5/conf.d/opcache.ini && + ln -sf /etc/php5/apache2 /opt/apps/php-5.5.17/etc/php && + /etc/init.d/apache2 restart +fi + + +#APT_ADDITIONAL_PACKAGES="squirrelmail phpmyadmin" +if [ "$PHP_ADDITIONAL_PACKAGES" ]; then + apt-get -y install $PHP_ADDITIONAL_PACKAGES +fi + +ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin +#ln -sf /usr/share/phpmyadmin /var/www/s-lmc.kalysto.org/phpmyadmin + +#PECL_ADDITIONAL_PACKAGES="tidy xdebug" +if [ "$PECL_ADDITIONAL_PACKAGES" ]; then + for pkg in $PECL_ADDITIONAL_PACKAGES; do + pecl install $pkg + echo "extension=$pkg.so" > /etc/php5/apache2/conf.d/$pkg.ini + done +fi + +#rdfapi-php ? + + +A2_ENABLED_MOD=${A2_ENABLED_MOD:-ssl rewrite} +#a2enmod dav_fs ssl userdir rewrite suexec +if [ "$A2_ENABLED_MOD" ]; then + a2enmod $A2_ENABLED_MOD +fi + +/etc/init.d/apache2 restart + + +## +## Install Mail utils (for php mail command and crond script mail) +## + +MAIL_DOMAINNAME=${MAIL_DOMAINNAME:-"localdomain"} +MAIL_SATTELITE_RELAYHOST=${MAIL_SATTELITE_RELAYHOST:-} + +debconf-set-selections <<< "postfix postfix/mailname string ${LXC_NAME}.${MAIL_DOMAINNAME}" +debconf-set-selections <<< "postfix postfix/main_mailer_type select 'Local only'" + + +apt-get install -y postfix mailutils + + +postconf inet_interfaces=loopback-only + +[ -z "$MAIL_SATTELITE_RELAYHOST" ] && postconf relayhost="$MAIL_SATTELITE_RELAYHOST" +postfix reload + diff --git a/precise/lamp/hooks/start b/precise/lamp/hooks/start new file mode 100755 index 0000000..88e357a --- /dev/null +++ b/precise/lamp/hooks/start @@ -0,0 +1,7 @@ +#!/bin/bash + +## XXX: will need to add route: + +route add -net VPN_NET gw LXC_NAME + +juju-log "Nothing to Start for base." diff --git a/precise/lamp/hooks/stop b/precise/lamp/hooks/stop new file mode 100755 index 0000000..170162b --- /dev/null +++ b/precise/lamp/hooks/stop @@ -0,0 +1,3 @@ +#!/bin/bash + +juju-log "Nothing to stop for base." diff --git a/precise/lamp/metadata.yaml b/precise/lamp/metadata.yaml new file mode 100644 index 0000000..99faa02 --- /dev/null +++ b/precise/lamp/metadata.yaml @@ -0,0 +1,16 @@ +name: lamp +summary: "Linux Apache Mysql Php stack" +maintainer: "Valentin Lab " +inherit: base-0k +description: | + Installs a Linux Apache Mysql Php stack +config-resources: + - /etc/apache2 + - /etc/php + - /etc/postfix + - /etc/mysql +data-resources: + - /var/www + - /var/lib/mysql + - /var/backups/mysql + - /var/log/apache2/ diff --git a/precise/lamp/revision b/precise/lamp/revision new file mode 100644 index 0000000..573541a --- /dev/null +++ b/precise/lamp/revision @@ -0,0 +1 @@ +0 diff --git a/precise/lamp/shorewall b/precise/lamp/shorewall new file mode 100644 index 0000000..bafe234 --- /dev/null +++ b/precise/lamp/shorewall @@ -0,0 +1,9 @@ +DNAT net lan:%%NAME%%:80 tcp 80 +DNAT net lan:%%NAME%%:443 tcp 443 + +DNAT lan lan:%%NAME%%:80 tcp 80 - %%HOST_INTERNET_IP%% +DNAT lan lan:%%NAME%%:443 tcp 443 - %%HOST_INTERNET_IP%% + +DNAT fw lan:%%NAME%%:80 tcp 80 - %%HOST_INTERNET_IP%% +DNAT fw lan:%%NAME%%:443 tcp 443 - %%HOST_INTERNET_IP%% +