summaryrefslogtreecommitdiff
path: root/localezcreate
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2002-12-05 04:20:19 +0000
committerJonas Smedegaard <dr@jones.dk>2002-12-05 04:20:19 +0000
commitbbeb3bc53067e45c433232a46eb234721ff45652 (patch)
tree979ed38347264e96ffde9e9ddaec48a53739c968 /localezcreate
parent533d3ab00c409a01029651533a79af6719c78683 (diff)
Respect /etc/mailname (but still fallback to hostname -d.
Make use of wwwconfig-common scripts if available. Look for root and user MySQL password in /root/.my.cfg. Install locale and template tarballs. Load overrides to defaults from /etc/local/localezcreate.conf. Shorten output lines when invoking --help. Add demo data as root, not user. Use shell constructs to check values, instead of test.
Diffstat (limited to 'localezcreate')
-rwxr-xr-xlocalezcreate173
1 files changed, 123 insertions, 50 deletions
diff --git a/localezcreate b/localezcreate
index badde13..d06fb57 100755
--- a/localezcreate
+++ b/localezcreate
@@ -3,112 +3,184 @@
# /usr/local/sbin/localezcreate
# Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk>
#
-# $Id: localezcreate,v 1.12 2002-10-22 03:30:39 jonas Exp $
+# $Id: localezcreate,v 1.13 2002-12-05 04:20:19 jonas Exp $
#
# Create local eZ Publish site
#
+# This script makes use of the Debian package wwwconfig-common if installed
set -e
# Defaults
-defaultmaildomain=`hostname -d`
-defaultdomain="ez.$defaultmaildomain"
+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"
+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
dbuser="$1"
host="$2"
fqdn="$3"
-db="$4"
+dbname="$4"
mailuser="$5"
maildomain="$6"
uid="$7"
gid="$8"
-dbpasswd="$9"
+dbpass="$9"
+
if [ $# \< 2 -o $# \> 9 ]; then
- echo "\$#: $#"
- echo "Usage: `basename $0` dbuser host [fqdn [db [mailuser [maildomain [ uid [ gid [dbpasswd ]]]]]]]"
+ echo "Usage: `basename $0` dbuser host [fqdn [dbname [mailuser [maildomain"
+ echo " [ uid [ gid [dbpass ]]]]]]]"
echo
echo " dbuser: MySQL database user"
- echo " host: hostname (and only that - no dots!)"
- echo " fqdn: Fully qualified domain name (default here is <host>.$defaultdomain)"
- echo " db: MySQL database name"
- echo " mailuser: User part of mail address (default is <dbuser>)"
- echo " maildomain: Domain part of mail address (default here is $defaultmaildomain)"
- echo " uid: System user id (default is $defaultuid)"
- echo " gid: System group id (default is <uid>"
- echo " dbpasswd: MySQL database password (default is to ask for it)"
+ echo " host: hostname (without domain - no dots!)"
+ echo " fqdn: Complete domain name (default: <host>.$defaultdomain)"
+ echo " dbname: MySQL database name (default: ez_2_2_<host>)"
+ echo " mailuser: User part of mail address (default: <dbuser>)"
+ echo " maildomain: Domain part of mail address (default: $defaultmaildomain)"
+ echo " uid: System user id (default: $defaultuid)"
+ echo " gid: System group id (default: <uid>"
+ echo " dbpass: MySQL password (default: attempt to resolve or ask)"
+ echo
+ echo " dbpass resolving is done by looking in file $HOME/.my.cnf of <uid>."
echo
echo " Example: `basename $0` bilbo news news.forum.com"
exit 1
fi
-# Attempt to find MySQL root password
-if [ -f /root/.my.cnf ]; then
- dbrootpw=$(grep password /root/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g')
-else
+# 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 dbrootpw
+ read -s dbadmpass
echo
fi
-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"
-
-[ "x$uid" == "x" ] && uid="$defaultuid"
-gid="$uid"
-[ "x$fqdn" == "x" ] && fqdn="$host.$defaultdomain"
-[ "x$db" == "x" ] && db="ez_2_2_$host"
-[ "x$mailuser" == "x" ] && mailuser="$uid"
-[ "x$maildomain" == "x" ] && maildomain="$defaultmaildomain"
-if [ "x$dbpasswd" == "x" ]; then
- echo -n "Enter MySQL password for $dbuser: "
- read -s dbpasswd
- echo
-fi
+uid=${uid:-$defaultuid}
+gid=${gid:-$uid}
+fqdn=${fqdn:-$host.$defaultdomain}
+dbname=${dbname:-ez_2_2_$host}
+mailuser=${mailuser:-$uid}
+maildomain=${maildomain:-$defaultmaildomain}
home=`getent passwd $uid | awk -F: '{print $6}';`
-basedir="$home/web_$fqdn"
+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, $db, $dbuser and $webcfg doesn't exist
+#TODO: Make sure $basedir, $dbname, $dbuser and $webcfg doesn't exist
if [ "$(basename $0)" = "${pkg}betarecreate" ]; then
- mysqladmin -uroot -p$dbrootpw drop $db
+ mysqladmin -u$dbadmin -p$dbadmpass drop $dbname
rm -rf $basedir
fi
-echo "Creating database $db"
-mysqladmin -uroot -p$dbrootpw create $db
-echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $db.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpasswd';" | mysql -uroot -p$dbrootpw
+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"
-cat $sqldir/$sqlfile | mysql -uroot -p$dbrootpw $db
+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 "
- mkdir $basedir
+ 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"
-mysql -u$dbuser -p$dbpasswd $db < $sqldir/$sqlfile2
+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
@@ -123,9 +195,9 @@ SiteAuthor=someone at $maildomain
SiteCopyright=someone &copy; 2001
SiteDescription=a web application suite
SiteKeywords=Content Management System, CMS, e-commerce
-Database=$db
+Database=$dbname
User=$dbuser
-Password=$dbpasswd
+Password=$dbpass
[eZUserMain]
DefaultCountry=58
@@ -181,6 +253,7 @@ echo "# Generated for $pkg by $(basename $0)
ServerName www.$fqdn
RewriteEngine On
RewriteRule / http://$fqdn/ [R]
+ TransferLog /dev/null
</VirtualHost>" > $webcfg
echo "Done!"