blob: c212564f18609cf7f90f2f2a69bb6dfa6667cbb9 (
plain) (
tree)
|
|
#!/bin/zsh
#
# Ein Skript, das fuer jede Splinenutzerin eine
# Subdomain <user>[.userpage].spline[.inf.fu-berlin].de
# anlegt.
# 2003-04-09 [stb]
# 2003-05-25 [yann] Anpassung um Logfiles und cgi-bin
# 2005-11-15 [stb] Anpassung an neues Serverlayout
# 2005-11-16 [yann] Ergaenzung ohne "userpage"
#
exec 3>&1
if [[ "$1" != "--debug" ]]
then
exec >/dev/null
fi
SPLINEUSERS=$(ldapsearch -LLL -x -b "ou=People,dc=spline,dc=inf,dc=fu-berlin,dc=de" uid | grep "^uid" | cut -d" " -f2 | sort)
TMPFILEDNS=$(mktemp /tmp/userSubGenerate-dns.XXXXXX)
TMPFILEAPACHEVHOSTS=$(mktemp /tmp/userSubGenerate-apache-vhosts.XXXXXX)
TMPFILEAPACHEGLOBAL=$(mktemp /tmp/userSubGenerate-apache-global.XXXXXX)
TMPFILEPHP=$(mktemp /tmp/userSubGenerate-php-fpm.XXXXXX)
cat <<EOF > $TMPFILEDNS
; Diese Datei wird automatisch generiert!
; Eintragungen von Hand sind sinnlos!
;
; Siehe plonk:/usr/local/bin/userSubGenerate
;
;
; Fuer jede Nutzerin bei spline gibt es eine Subdomain
; <user>[.userpage].spline[.inf.fu-berlin].de, die dann vom
; Apache auf ~<user> aufgeloest wird.
EOF
cat <<EOF > $TMPFILEAPACHEVHOSTS
# Diese Datei wird automatisch generiert!
# Eintragungen von Hand sind sinnlos!
#
# Siehe plonk:/usr/local/bin/userSubGenerate
#
# Fuer jede Nutzerin bei spline gibt es eine Subdomain
# <user>[.userpage].spline[.inf.fu-berlin].de, die vom
# Apache auf ~<user> aufgeloest wird.
EOF
cat <<EOF > $TMPFILEAPACHEGLOBAL
# Diese Datei wird automatisch generiert!
# Eintragungen von Hand sind sinnlos!
#
# Siehe plonk:/usr/local/bin/userSubGenerate
#
#
# Für jeden User gibt es hier spezifische Einstellungen,
# die wir im vhost und im /~user/ brauchen.
AddHandler php-fastcgi .php .php3 .php4 .php5
DirectoryIndex index.html index.htm index.php
EOF
cat <<EOF > $TMPFILEPHP
; Diese Datei wird automatisch generiert!
; Eintragungen von Hand sind sinnlos!
;
; Siehe plonk:/usr/local/bin/userSubGenerate
;
;
; Hier wird ein php-pool fuer jeden user generiert.
EOF
echo "Generiere $TMPFILEDNS, $TMPFILEAPACHEVHOSTS, $TMPFILEAPACHEGLOBAL und $TMPFILEPHP..." >&3
for SPLINEUID in $(echo $SPLINEUSERS)
do
echo $SPLINEUID
FULLNAME=$(ldapsearch -LLL -x -b "dc=spline,dc=inf,dc=fu-berlin,dc=de" "(uid=$SPLINEUID)" cn | grep "^cn" | cut -d" " -f2-)
cat <<EOF >> $TMPFILEDNS
; $SPLINEUID.userpage.spline[.inf.fu-berlin].de fuer $FULLNAME
$SPLINEUID.userpage IN CNAME userpage.spline.inf.fu-berlin.de.
www.$SPLINEUID.userpage IN CNAME userpage.spline.inf.fu-berlin.de.
$SPLINEUID IN CNAME userpage.spline.inf.fu-berlin.de.
www.$SPLINEUID IN CNAME userpage.spline.inf.fu-berlin.de.
EOF
if [ -d /var/users/$SPLINEUID/public_html ]; then
cat <<EOF >> $TMPFILEAPACHEGLOBAL
# php fuer $SPLINEUID ($FULLNAME)
FastCGIExternalServer /home/$SPLINEUID/php-worker -socket /var/run/php5-fpm/$SPLINEUID.sock
ScriptAlias /home/$SPLINEUID/php-worker.fcgi /home/$SPLINEUID/php-worker
<Directory /home/$SPLINEUID/>
Action php-fastcgi /home/$SPLINEUID/php-worker.fcgi
</Directory>
<Directory /home/$SPLINEUID/php-worker>
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory /home/$SPLINEUID/public_html/webroot>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
<Directory /home/$SPLINEUID/public_html/cgi-bin>
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
EOF
cat <<EOF >> $TMPFILEAPACHEVHOSTS
# http://$SPLINEUID.userpage.spline[.inf.fu-berlin].de fuer $FULLNAME
<VirtualHost *:80>
ServerAlias $SPLINEUID.userpage.spline.inf.fu-berlin.de
ServerAlias $SPLINEUID.userpage.spline.de
ServerAlias $SPLINEUID.spline.de
ServerAlias $SPLINEUID.spline.inf.fu-berlin.de
ServerAlias www.$SPLINEUID.userpage.spline.inf.fu-berlin.de
ServerAlias www.$SPLINEUID.userpage.spline.de
ServerAlias www.$SPLINEUID.spline.de
ServerAlias www.$SPLINEUID.spline.inf.fu-berlin.de
ErrorLog /home/$SPLINEUID/public_html/logs/error.log
CustomLog /home/$SPLINEUID/public_html/logs/access.log combined
DocumentRoot /home/$SPLINEUID/public_html/webroot
SuexecUserGroup $SPLINEUID users
<Location "/php-status">
SetHandler php-fastcgi-status
Action php-fastcgi-status /home/$SPLINEUID/php-worker.fcgi virtual
</Location>
</VirtualHost>
EOF
cat <<EOF >> $TMPFILEPHP
[$SPLINEUID]
user = \$pool
group = nogroup
listen = /var/run/php5-fpm/\$pool.sock
listen.owner = www-data
listen.group = nogroup
listen.mode = 0600
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 10s
pm.status_path = /php-status
catch_workers_output = yes
security.limit_extensions = .php .php3 .php4 .php5
EOF
fi # -d /var/users/$SPLINEUID/public_html
done
echo "Kopiere $TMPFILEPHP nach userpage:/etc/php5/fpm/pool.d/users.conf ..." >&3
scp $TMPFILEPHP www-data@userpage.spline.inf.fu-berlin.de:/etc/php5/fpm/pool.d/users.conf
echo "Starte den php-fpm auf userpage neu." >&3
ssh www-data@userpage.spline.inf.fu-berlin.de sudo /etc/init.d/php5-fpm reload
echo "Kopiere $TMPFILEAPACHEVHOSTS nach userpage:/etc/apache2/user-site.d/user-vhosts.conf ..." >&3
scp $TMPFILEAPACHEVHOSTS www-data@userpage.spline.inf.fu-berlin.de:/etc/apache2/user-site.d/user-vhosts.conf
echo "Kopiere $TMPFILEAPACHEGLOBAL nach userpage:/etc/apache2/user-site.d/globals.conf ..." >&3
scp $TMPFILEAPACHEGLOBAL www-data@userpage.spline.inf.fu-berlin.de:/etc/apache2/user-site.d/globals.conf
echo "Starte den Apache auf userpage neu." >&3
ssh www-data@userpage.spline.inf.fu-berlin.de sudo /etc/init.d/apache2 reload
echo "Kopiere $TMPFILEDNS nach beep:/etc/bind/dns-sources/common.userpage" >&3
scp $TMPFILEDNS wartung@beep.spline.inf.fu-berlin.de:/etc/bind/dns-sources/common.userpage
echo "Erstelle die DNS-Eintraege neu" >&3
ssh wartung@beep.spline.inf.fu-berlin.de sudo /usr/bin/make -C /etc/bind/dns-sources/ install || echo "Fehler beim Erstellen der neuen DNS-Eintraege." >&3
# cleanup
rm $TMPFILEPHP
rm $TMPFILEAPACHEVHOSTS
rm $TMPFILEAPACHEGLOBAL
rm $TMPFILEDNS
|