#!/bin/bash # # /usr/local/sbin/localezcreate # Copyright 2001-2002 Jonas Smedegaard # # $Id: localezcreate,v 1.15 2002-12-05 04:53:35 jonas Exp $ # # Create local eZ Publish site # # This script makes use of the Debian package wwwconfig-common if installed set -e # Defaults pkg="ezpublish" srcdir="/usr/src/ezpublish" sqldir="/usr/share/ezpublish/sql" bindir="/usr/share/ezpublish/bin" tarballs="lib data tpl www" sqlfile="publish_mysql.sql" sqlfile2="data_mysql.sql" defaultmaildomain=`cat /etc/mailname 2> /dev/null || hostname -d` defaultdomain="ez."`hostname -d` defaultuid="www-data" defaultgid="www-data" dbserver="localhost" dballow="$dbserver" template_tarballs="" language_tarballs="en_GB en_GB_org" if [ -e /etc/local/localezcreate.conf ]; then . /etc/local/localezcreate.conf fi # Input host="$1" uid="$2" fqdn="$3" maildomain="$4" dbname="$5" dbuser="$6" mailuser="$7" gid="$8" if [ $# \< 1 -o $# \> 8 ]; then echo "Usage: `basename $0` host [ uid [ fqdn [ maildomain [ dbname [ dbuser" echo " [ mailuser [ gid ]]]]]]" echo echo " OPTION DESCRIPTION DEFAULT VALUE" echo " host: hostname (without domain)" echo " uid: System user id ($defaultuid)" echo " fqdn: Complete domain name (.$defaultdomain)" echo " maildomain: Domain part of mail address ($defaultmaildomain)" echo " dbname: MySQL database name (ez_2_2_)" echo " dbuser: MySQL database user ()" echo " mailuser: User part of mail address ()" echo " gid: System group id ($defaultgid" echo echo " MySQL password for can be stored in $HOME/.my.cnf of ." echo echo " Example: `basename $0` bilbo news news.forum.com" exit 1 fi # Attempt to figure out dbadmin and dbadmpass, else ask for them if [ -e /usr/share/wwwconfig-common/mysql-localadmpass.get -a "$dbserver" = "localhost" ] ; then status="" . /usr/share/wwwconfig-common/mysql-localadmpass.get if [ "$status" = "error" ] ; then echo "$error" fi fi if [ -z "$dbadmpass" ]; then echo -n "Enter MySQL administrator (usually root): " read -s dbadmin echo echo -n "Enter MySQL root password: " read -s dbadmpass echo fi uid=${uid:-$defaultuid} gid=${gid:-$defaultgid} fqdn=${fqdn:-$host.$defaultdomain} dbname=${dbname:-ez_2_2_$host} dbuser=${dbuser:-$uid} mailuser=${mailuser:-$uid} maildomain=${maildomain:-$defaultmaildomain} home=`getent passwd $uid | awk -F: '{print $6}';` if [ -z "$dbpass" ]; then if [ -f $home/.my.cnf ]; then dbpass=$(grep password $home/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g') fi if [ -z "$dbpass" ]; then echo -n "Enter MySQL password for $uid: " read -s dbpass echo fi fi basedir="$home/webphpsites/$fqdn" adminhost="admin.$fqdn" adminbasedir="$basedir/admin" webcfg="/etc/apache/vhosts.d/$fqdn" #TODO: Make sure $basedir, $dbname, $dbuser and $webcfg doesn't exist if [ "$(basename $0)" = "${pkg}betarecreate" ]; then mysqladmin -u$dbadmin -p$dbadmpass drop $dbname rm -rf $basedir fi echo "Creating database $dbname" if [ -e /usr/share/wwwconfig-common/mysql-createdb.sh ] ; then status="" . /usr/share/wwwconfig-common/mysql-createdb.sh if [ "$status" = "error" ] ; then echo "$error" exit 1 fi else mysqladmin -u$dbadmin -p$dbadmpass create $dbname fi if [ -e /usr/share/wwwconfig-common/mysql-createuser.sh ] ; then status="" . /usr/share/wwwconfig-common/mysql-createuser.sh if [ "$status" = "error" ] ; then echo "$error" exit 1 fi echo "GRANT INDEX ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass else echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass fi echo "Inject initial data into database" if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then status="" (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh) if [ "$status" = "error" ] ; then echo "$error" exit 1 fi else cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $dbname fi echo -n "Unpacking tarballs:" mkdir $basedir chown $uid:$gid $basedir su $uid -c " set -e cd $basedir for tarball in $tarballs; do echo -n \" \$tarball\" tar -xz -C $basedir -f $srcdir/\$tarball.tar.gz done for tarball in $language_tarballs; do echo -n \" \$tarball\" tar -xz -C $basedir -f $srcdir/lang/\$tarball.tar.gz done for tarball in $template_tarballs; do echo -n \" \$tarball\" tar -xz -C $basedir -f $srcdir/templates/\$tarball.tar.gz done echo " echo "Adding demo data to database" sqlfile=$sqlfile2 if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then status="" (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh) if [ "$status" = "error" ] ; then echo "$error" exit 1 fi else cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $dbname fi echo "Configuring website" su $uid -c " set -e cd $basedir $bindir/modfix.sh >/dev/null $bindir/secure_modfix.sh $uid $gid >/dev/null mkdir -p override echo \"[site] SiteURL=$fqdn AdminSiteURL=admin.$fqdn UserSiteURL=$fqdn SiteTitle=$host eZ site Keywords=$host $maildomain SiteAuthor=someone at $maildomain SiteCopyright=someone © 2001 SiteDescription=a web application suite SiteKeywords=Content Management System, CMS, e-commerce Database=$dbname User=$dbuser Password=$dbpass [eZUserMain] DefaultCountry=58 [eZTradeMain] OrderSenderEmail=$mailuser@$maildomain OrderReceiverEmail=$mailuser@$maildomain mailToAdmin=$mailuser@$maildomain ForceSSL=disabled ApacheUser=UserApacheRunsAs [eZForumMain] ReplyAddress=$mailuser@$maildomain \" > override/site.ini.append " chown -R $uid:$gid $basedir echo "Configuring Apache" echo "# Generated for $pkg by $(basename $0) ServerName $fqdn ServerAdmin $mailuser@$maildomain DocumentRoot $basedir user $uid group $gid Options FollowSymLinks AllowOverride None php_flag magic_quotes_gpc off RewriteEngine On RewriteRule ^/stats/store/(.*).gif\$ $basedir/ezstats/user/storestats.php [S=4] RewriteRule ^/filemanager/filedownload/([^/]+)/(.*)\$ $basedir/ezfilemanager/files/\$1 [T=\"application/oct-stream\",S=3] RewriteRule .*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=2] RewriteRule ^/xmlrpc.*\$ $basedir/index_xmlrpc.php [S=1] RewriteRule !\.(gif|css|jpg|png|jar|wbmp)\$ $basedir/index.php ServerName $adminhost ServerAdmin $mailuser@$maildomain DocumentRoot $basedir user $uid group $gid Options FollowSymLinks AllowOverride None php_flag magic_quotes_gpc off RewriteEngine On RewriteRule .*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=1] RewriteRule !\.(gif|css|jpg|png|jar|wbmp) $basedir/index_admin.php ServerName www.$fqdn RewriteEngine On RewriteRule / http://$fqdn/ [R] TransferLog /dev/null " > $webcfg echo "Done!" echo "Remember to reload Apache..."