summaryrefslogtreecommitdiff
path: root/localezcreate
blob: f00db8d1ce0a8a884e456620a4d8671ea72d0368 (plain)
  1. #!/bin/bash
  2. #
  3. # /usr/local/sbin/localezcreate
  4. # Copyright 2001-2002 Jonas Smedegaard <dr@jones.dk>
  5. #
  6. # $Id: localezcreate,v 1.16 2002-12-06 23:38:37 jonas Exp $
  7. #
  8. # Create local eZ Publish site
  9. #
  10. # This script makes use of the Debian package wwwconfig-common if installed
  11. #
  12. # TODO: Ask for and set default language and theme
  13. # TODO: Make a note about installed languages and themes (for smooth upgrades)
  14. # TODO: Make md5 of all files (for smooth upgrades)
  15. set -e
  16. # Defaults
  17. pkg="ezpublish"
  18. srcdir="/usr/src/ezpublish"
  19. sqldir="/usr/share/ezpublish/sql"
  20. bindir="/usr/share/ezpublish/bin"
  21. tarballs="lib data tpl www"
  22. sqlfile="publish_mysql.sql"
  23. sqlfile2="data_mysql.sql"
  24. defaultuid="www-data"
  25. defaultdomain="ez."`hostname -d`
  26. defaultmaildomain=`cat /etc/mailname 2> /dev/null || echo $defaultdomain`
  27. defaultdbname="ez_2_2_$host"
  28. defaultgid="www-data"
  29. defaultdbserver="localhost"
  30. defaultdballow="localhost"
  31. template_tarballs=""
  32. language_tarballs="en_GB en_GB_org"
  33. if [ -e /etc/local/localezcreate.conf ]; then
  34. . /etc/local/localezcreate.conf
  35. fi
  36. if [ $# \< 1 -o $# \> 8 ]; then
  37. echo "Usage: `basename $0` host [ uid [ fqdn [ maildomain [ dbname [ dbuser"
  38. echo " [ mailuser [ gid ]]]]]]"
  39. echo
  40. echo " OPTION DESCRIPTION DEFAULT VALUE"
  41. echo " host: hostname (without domain)"
  42. echo " uid: System user id ($defaultuid)"
  43. echo " fqdn: Complete domain name (<host>.$defaultdomain)"
  44. echo " maildomain: Domain part of mail address ($defaultmaildomain)"
  45. echo " dbname: MySQL database name ($defaultdbname)"
  46. echo " dbuser: MySQL database user (<uid>)"
  47. echo " mailuser: User part of mail address (<dbuser>)"
  48. echo " gid: System group id ($defaultgid)"
  49. echo " dbserver: IP or host of MySQL server ($defaultdbserver)"
  50. echo " dballow: IP or host of eZ server ($defaultdballow)"
  51. echo
  52. echo " MySQL password for <dbuser> can be stored in \$HOME/.my.cnf of <uid>."
  53. echo
  54. echo " Example: `basename $0` bilbo news news.forum.com"
  55. exit 1
  56. fi
  57. uid=${2:-$defaultuid}
  58. fqdn=${3:-$host.$defaultdomain}
  59. maildomain=${4:-$defaultmaildomain}
  60. dbname=${5:-$defaultdbname}
  61. dbuser=${6:-$uid}
  62. mailuser=${7:-$uid}
  63. gid=${8:-$defaultgid}
  64. dbserver=${9:-$defaultdbserver}
  65. dballow=${10:-$defaultdballow}
  66. home=`getent passwd $uid | awk -F: '{print $6}';`
  67. basedir="$home/webphpsites/$fqdn"
  68. adminhost="admin.$fqdn"
  69. adminbasedir="$basedir/admin"
  70. webcfg="/etc/apache/vhosts.d/$fqdn"
  71. # Attempt to figure out dbpass, dbadmin and dbadmpass, else ask for them
  72. if [ -z "$dbpass" ]; then
  73. if [ -f $home/.my.cnf ]; then
  74. dbpass=$(grep password $home/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g')
  75. fi
  76. if [ -z "$dbpass" ]; then
  77. echo -n "Enter MySQL password for $dbuser: "
  78. read -s dbpass
  79. echo
  80. fi
  81. fi
  82. if [ -e /usr/share/wwwconfig-common/mysql-localadmpass.get -a "$dbserver" = "localhost" ] ; then
  83. status=""
  84. . /usr/share/wwwconfig-common/mysql-localadmpass.get
  85. if [ "$status" = "error" ] ; then
  86. echo "$error"
  87. fi
  88. fi
  89. if [ -z "$dbadmpass" ]; then
  90. echo -n "Enter MySQL administrator (usually root): "
  91. read -s dbadmin
  92. echo
  93. echo -n "Enter MySQL root password: "
  94. read -s dbadmpass
  95. echo
  96. fi
  97. #TODO: Make sure $basedir, $dbname, $dbuser and $webcfg doesn't exist
  98. # Do not force TCP/IP access when connecting locally
  99. optdbserver=""
  100. if [ "$dbserver" != "localhost" ]; then
  101. optdbserver="-p$dbserver"
  102. fi
  103. #if [ "$(basename $0)" = "${pkg}betarecreate" ]; then
  104. # mysqladmin -u$dbadmin -p$dbadmpass $optdbserver drop $dbname
  105. # rm -rf $basedir
  106. #fi
  107. echo "Creating database $dbname"
  108. if [ -e /usr/share/wwwconfig-common/mysql-createdb.sh ] ; then
  109. status=""
  110. . /usr/share/wwwconfig-common/mysql-createdb.sh
  111. if [ "$status" = "error" ] ; then
  112. echo "$error"
  113. exit 1
  114. fi
  115. else
  116. mysqladmin -u$dbadmin -p$dbadmpass $optdbserver create $dbname
  117. fi
  118. if [ -e /usr/share/wwwconfig-common/mysql-createuser.sh ] ; then
  119. status=""
  120. . /usr/share/wwwconfig-common/mysql-createuser.sh
  121. if [ "$status" = "error" ] ; then
  122. echo "$error"
  123. exit 1
  124. fi
  125. for h in `echo "localhost $dballow" | sort -u`; do
  126. echo "GRANT INDEX ON $dbname.* TO '$dbuser'@$h IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass $optdbserver
  127. done
  128. else
  129. for h in `echo "localhost $dballow" | sort -u`; do
  130. echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $dbname.* TO '$dbuser'@$h IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass $optdbserver
  131. done
  132. fi
  133. echo "Inject initial data into database"
  134. if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then
  135. status=""
  136. (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh)
  137. if [ "$status" = "error" ] ; then
  138. echo "$error"
  139. exit 1
  140. fi
  141. else
  142. cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $optdbserver $dbname
  143. fi
  144. echo -n "Unpacking tarballs:"
  145. mkdir $basedir
  146. chown $uid:$gid $basedir
  147. su $uid -c "
  148. set -e
  149. cd $basedir
  150. for tarball in $tarballs; do
  151. echo -n \" \$tarball\"
  152. tar -xz -C $basedir -f $srcdir/\$tarball.tar.gz
  153. done
  154. for tarball in $language_tarballs; do
  155. echo -n \" \$tarball\"
  156. tar -xz -C $basedir -f $srcdir/lang/\$tarball.tar.gz
  157. done
  158. for tarball in $template_tarballs; do
  159. echo -n \" \$tarball\"
  160. tar -xz -C $basedir -f $srcdir/templates/\$tarball.tar.gz
  161. done
  162. echo
  163. "
  164. echo "Adding demo data to database"
  165. sqlfile=$sqlfile2
  166. if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then
  167. status=""
  168. (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh)
  169. if [ "$status" = "error" ] ; then
  170. echo "$error"
  171. exit 1
  172. fi
  173. else
  174. cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $optdbserver $dbname
  175. fi
  176. echo "Configuring website"
  177. su $uid -c "
  178. set -e
  179. cd $basedir
  180. $bindir/modfix.sh >/dev/null
  181. $bindir/secure_modfix.sh $uid $gid >/dev/null
  182. mkdir -p override
  183. echo \"[site]
  184. SiteURL=$fqdn
  185. AdminSiteURL=admin.$fqdn
  186. UserSiteURL=$fqdn
  187. SiteTitle=$host eZ site
  188. Keywords=$host $maildomain
  189. SiteAuthor=someone at $maildomain
  190. SiteCopyright=someone &copy; 2001
  191. SiteDescription=a web application suite
  192. SiteKeywords=Content Management System, CMS, e-commerce
  193. Database=$dbname
  194. User=$dbuser
  195. Server=$dbserver
  196. Password=$dbpass
  197. [eZUserMain]
  198. DefaultCountry=58
  199. [eZTradeMain]
  200. OrderSenderEmail=$mailuser@$maildomain
  201. OrderReceiverEmail=$mailuser@$maildomain
  202. mailToAdmin=$mailuser@$maildomain
  203. ForceSSL=disabled
  204. ApacheUser=UserApacheRunsAs
  205. [eZForumMain]
  206. ReplyAddress=$mailuser@$maildomain
  207. \" > override/site.ini.append
  208. "
  209. chown -R $uid:$gid $basedir
  210. echo "Configuring Apache"
  211. echo "# Generated for $pkg by $(basename $0)
  212. <VirtualHost *>
  213. ServerName $fqdn
  214. ServerAdmin $mailuser@$maildomain
  215. DocumentRoot $basedir
  216. user $uid
  217. group $gid
  218. <Directory $basedir>
  219. Options FollowSymLinks
  220. AllowOverride None
  221. </Directory>
  222. php_flag magic_quotes_gpc off
  223. RewriteEngine On
  224. RewriteRule ^/stats/store/(.*).gif\$ $basedir/ezstats/user/storestats.php [S=4]
  225. RewriteRule ^/filemanager/filedownload/([^/]+)/(.*)\$ $basedir/ezfilemanager/files/\$1 [T=\"application/oct-stream\",S=3]
  226. RewriteRule .*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=2]
  227. RewriteRule ^/xmlrpc.*\$ $basedir/index_xmlrpc.php [S=1]
  228. RewriteRule !\.(gif|css|jpg|png|jar|wbmp)\$ $basedir/index.php
  229. </VirtualHost>
  230. <VirtualHost *>
  231. ServerName $adminhost
  232. ServerAdmin $mailuser@$maildomain
  233. DocumentRoot $basedir
  234. user $uid
  235. group $gid
  236. <Directory $basedir>
  237. Options FollowSymLinks
  238. AllowOverride None
  239. </Directory>
  240. php_flag magic_quotes_gpc off
  241. RewriteEngine On
  242. RewriteRule .*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=1]
  243. RewriteRule !\.(gif|css|jpg|png|jar|wbmp) $basedir/index_admin.php
  244. </VirtualHost>
  245. <VirtualHost *>
  246. ServerName www.$fqdn
  247. RewriteEngine On
  248. RewriteRule / http://$fqdn/ [R]
  249. TransferLog /dev/null
  250. </VirtualHost>" > $webcfg
  251. echo "Done!"
  252. echo "Remember to reload Apache..."