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