blob: f00db8d1ce0a8a884e456620a4d8671ea72d0368 (
plain)
- #!/bin/bash
- #
- # /usr/local/sbin/localezcreate
- # Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk>
- #
- # $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 (<host>.$defaultdomain)"
- echo " maildomain: Domain part of mail address ($defaultmaildomain)"
- echo " dbname: MySQL database name ($defaultdbname)"
- echo " dbuser: MySQL database user (<uid>)"
- echo " mailuser: User part of mail address (<dbuser>)"
- 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 <dbuser> can be stored in \$HOME/.my.cnf of <uid>."
- 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)
- <VirtualHost *>
- ServerName $fqdn
- ServerAdmin $mailuser@$maildomain
- DocumentRoot $basedir
- user $uid
- group $gid
- <Directory $basedir>
- Options FollowSymLinks
- AllowOverride None
- </Directory>
- 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
- </VirtualHost>
- <VirtualHost *>
- ServerName $adminhost
- ServerAdmin $mailuser@$maildomain
- DocumentRoot $basedir
- user $uid
- group $gid
- <Directory $basedir>
- Options FollowSymLinks
- AllowOverride None
- </Directory>
- 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
- </VirtualHost>
- <VirtualHost *>
- ServerName www.$fqdn
- RewriteEngine On
- RewriteRule / http://$fqdn/ [R]
- TransferLog /dev/null
- </VirtualHost>" > $webcfg
- echo "Done!"
- echo "Remember to reload Apache..."
|