summaryrefslogtreecommitdiff
path: root/localezcreate
blob: 414d600dfe795f51ebfc3f6dcb8b1e4b88f39af5 (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.15 2002-12-05 04:53:35 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. dbuser=${dbuser:-$uid}
  80. mailuser=${mailuser:-$uid}
  81. maildomain=${maildomain:-$defaultmaildomain}
  82. home=`getent passwd $uid | awk -F: '{print $6}';`
  83. if [ -z "$dbpass" ]; then
  84. if [ -f $home/.my.cnf ]; then
  85. dbpass=$(grep password $home/.my.cnf | awk -F= '{print $2}' | head -1 | sed 's/^ //g')
  86. fi
  87. if [ -z "$dbpass" ]; then
  88. echo -n "Enter MySQL password for $uid: "
  89. read -s dbpass
  90. echo
  91. fi
  92. fi
  93. basedir="$home/webphpsites/$fqdn"
  94. adminhost="admin.$fqdn"
  95. adminbasedir="$basedir/admin"
  96. webcfg="/etc/apache/vhosts.d/$fqdn"
  97. #TODO: Make sure $basedir, $dbname, $dbuser and $webcfg doesn't exist
  98. if [ "$(basename $0)" = "${pkg}betarecreate" ]; then
  99. mysqladmin -u$dbadmin -p$dbadmpass drop $dbname
  100. rm -rf $basedir
  101. fi
  102. echo "Creating database $dbname"
  103. if [ -e /usr/share/wwwconfig-common/mysql-createdb.sh ] ; then
  104. status=""
  105. . /usr/share/wwwconfig-common/mysql-createdb.sh
  106. if [ "$status" = "error" ] ; then
  107. echo "$error"
  108. exit 1
  109. fi
  110. else
  111. mysqladmin -u$dbadmin -p$dbadmpass create $dbname
  112. fi
  113. if [ -e /usr/share/wwwconfig-common/mysql-createuser.sh ] ; then
  114. status=""
  115. . /usr/share/wwwconfig-common/mysql-createuser.sh
  116. if [ "$status" = "error" ] ; then
  117. echo "$error"
  118. exit 1
  119. fi
  120. echo "GRANT INDEX ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass
  121. else
  122. echo "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX ON $dbname.* TO '$dbuser'@localhost IDENTIFIED BY '$dbpass';" | mysql -u$dbadmin -p$dbadmpass
  123. fi
  124. echo "Inject initial data into database"
  125. if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then
  126. status=""
  127. (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh)
  128. if [ "$status" = "error" ] ; then
  129. echo "$error"
  130. exit 1
  131. fi
  132. else
  133. cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $dbname
  134. fi
  135. echo -n "Unpacking tarballs:"
  136. mkdir $basedir
  137. chown $uid:$gid $basedir
  138. su $uid -c "
  139. set -e
  140. cd $basedir
  141. for tarball in $tarballs; do
  142. echo -n \" \$tarball\"
  143. tar -xz -C $basedir -f $srcdir/\$tarball.tar.gz
  144. done
  145. for tarball in $language_tarballs; do
  146. echo -n \" \$tarball\"
  147. tar -xz -C $basedir -f $srcdir/lang/\$tarball.tar.gz
  148. done
  149. for tarball in $template_tarballs; do
  150. echo -n \" \$tarball\"
  151. tar -xz -C $basedir -f $srcdir/templates/\$tarball.tar.gz
  152. done
  153. echo
  154. "
  155. echo "Adding demo data to database"
  156. sqlfile=$sqlfile2
  157. if [ -e /usr/share/wwwconfig-common/mysql-exec.sh ] ; then
  158. status=""
  159. (cd $sqldir && . /usr/share/wwwconfig-common/mysql-exec.sh)
  160. if [ "$status" = "error" ] ; then
  161. echo "$error"
  162. exit 1
  163. fi
  164. else
  165. cat $sqldir/$sqlfile | mysql -u$dbadmin -p$dbadmpass $dbname
  166. fi
  167. echo "Configuring website"
  168. su $uid -c "
  169. set -e
  170. cd $basedir
  171. $bindir/modfix.sh >/dev/null
  172. $bindir/secure_modfix.sh $uid $gid >/dev/null
  173. mkdir -p override
  174. echo \"[site]
  175. SiteURL=$fqdn
  176. AdminSiteURL=admin.$fqdn
  177. UserSiteURL=$fqdn
  178. SiteTitle=$host eZ site
  179. Keywords=$host $maildomain
  180. SiteAuthor=someone at $maildomain
  181. SiteCopyright=someone &copy; 2001
  182. SiteDescription=a web application suite
  183. SiteKeywords=Content Management System, CMS, e-commerce
  184. Database=$dbname
  185. User=$dbuser
  186. Password=$dbpass
  187. [eZUserMain]
  188. DefaultCountry=58
  189. [eZTradeMain]
  190. OrderSenderEmail=$mailuser@$maildomain
  191. OrderReceiverEmail=$mailuser@$maildomain
  192. mailToAdmin=$mailuser@$maildomain
  193. ForceSSL=disabled
  194. ApacheUser=UserApacheRunsAs
  195. [eZForumMain]
  196. ReplyAddress=$mailuser@$maildomain
  197. \" > override/site.ini.append
  198. "
  199. chown -R $uid:$gid $basedir
  200. echo "Configuring Apache"
  201. echo "# Generated for $pkg by $(basename $0)
  202. <VirtualHost *>
  203. ServerName $fqdn
  204. ServerAdmin $mailuser@$maildomain
  205. DocumentRoot $basedir
  206. user $uid
  207. group $gid
  208. <Directory $basedir>
  209. Options FollowSymLinks
  210. AllowOverride None
  211. </Directory>
  212. php_flag magic_quotes_gpc off
  213. RewriteEngine On
  214. RewriteRule ^/stats/store/(.*).gif\$ $basedir/ezstats/user/storestats.php [S=4]
  215. RewriteRule ^/filemanager/filedownload/([^/]+)/(.*)\$ $basedir/ezfilemanager/files/\$1 [T=\"application/oct-stream\",S=3]
  216. RewriteRule .*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=2]
  217. RewriteRule ^/xmlrpc.*\$ $basedir/index_xmlrpc.php [S=1]
  218. RewriteRule !\.(gif|css|jpg|png|jar|wbmp)\$ $basedir/index.php
  219. </VirtualHost>
  220. <VirtualHost *>
  221. ServerName $adminhost
  222. ServerAdmin $mailuser@$maildomain
  223. DocumentRoot $basedir
  224. user $uid
  225. group $gid
  226. <Directory $basedir>
  227. Options FollowSymLinks
  228. AllowOverride None
  229. </Directory>
  230. php_flag magic_quotes_gpc off
  231. RewriteEngine On
  232. RewriteRule .*/ezmediacatalogue/catalogue/(.*)\$ $basedir/ezmediacatalogue/catalogue/\$1 [T=\"application/oct-stream\",S=1]
  233. RewriteRule !\.(gif|css|jpg|png|jar|wbmp) $basedir/index_admin.php
  234. </VirtualHost>
  235. <VirtualHost *>
  236. ServerName www.$fqdn
  237. RewriteEngine On
  238. RewriteRule / http://$fqdn/ [R]
  239. TransferLog /dev/null
  240. </VirtualHost>" > $webcfg
  241. echo "Done!"
  242. echo "Remember to reload Apache..."