#!/bin/bash # # /usr/local/sbin/localezcreate # Copyright 2001-2002 Jonas Smedegaard # # $Id: localezcreate,v 1.16 2002-12-06 23:38:37 jonas Exp $ # # Create local eZ Publish site # # This script makes use of the Debian package wwwconfig-common if installed # # TODO: Ask for and set default language and theme # TODO: Make a note about installed languages and themes (for smooth upgrades) # TODO: Make md5 of all files (for smooth upgrades) 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" defaultuid="www-data" defaultdomain="ez."`hostname -d` defaultmaildomain=`cat /etc/mailname 2> /dev/null || echo $defaultdomain` defaultdbname="ez_2_2_$host" defaultgid="www-data" defaultdbserver="localhost" defaultdballow="localhost" template_tarballs="" language_tarballs="en_GB en_GB_org" if [ -e /etc/local/localezcreate.conf ]; then . /etc/local/localezcreate.conf fi 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 ($defaultdbname)" echo " dbuser: MySQL database user ()" echo " mailuser: User part of mail address ()" echo " gid: System group id ($defaultgid)" echo " dbserver: IP or host of MySQL server ($defaultdbserver)" echo " dballow: IP or host of eZ server ($defaultdballow)" 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 uid=${2:-$defaultuid} fqdn=${3:-$host.$defaultdomain} maildomain=${4:-$defaultmaildomain} dbname=${5:-$defaultdbname} dbuser=${6:-$uid} mailuser=${7:-$uid} gid=${8:-$defaultgid} dbserver=${9:-$defaultdbserver} dballow=${10:-$defaultdballow} home=`getent passwd $uid | awk -F: '{print $6}';` basedir="$home/webphpsites/$fqdn" adminhost="admin.$fqdn" adminbasedir="$basedir/admin" webcfg="/etc/apache/vhosts.d/$fqdn" # Attempt to figure out dbpass, dbadmin and dbadmpass, else ask for them 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 $dbuser: " read -s dbpass echo fi fi 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 #TODO: Make sure $basedir, $dbname, $dbuser and $webcfg doesn't exist # Do not force TCP/IP access when connecting locally optdbserver="" if [ "$dbserver" != "localhost" ]; then optdbserver="-p$dbserver" fi #if [ "$(basename $0)" = "${pkg}betarecreate" ]; then # mysqladmin -u$dbadmin -p$dbadmpass $optdbserver 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 $optdbserver 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 for h in `echo "localhost $dballow" | sort -u`; do echo "GRANT INDEX ON $dbname.* TO '$dbuser'@$h IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass $optdbserver done else for h in `echo "localhost $dballow" | sort -u`; do echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $dbname.* TO '$dbuser'@$h IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass $optdbserver done 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 $optdbserver $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 $optdbserver $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 Server=$dbserver 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..."