X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=usr%2Flocal%2Fbin%2Faddsite;h=9ef8ae46876253e7881b007541091e35d4df3897;hb=47aae9573917c701ea8548548d1fe2b0e9bc662f;hp=c7212ab63b89c44d8a000515af9ed5537485f4ed;hpb=fa0dad57ac8b38969fe2821fa0857fdc13f76e88;p=matthijs%2Fservers%2Fdrsnuggles.git diff --git a/usr/local/bin/addsite b/usr/local/bin/addsite index c7212ab..9ef8ae4 100755 --- a/usr/local/bin/addsite +++ b/usr/local/bin/addsite @@ -1,5 +1,10 @@ #!/bin/sh +if [ "$UID" -eq 0 ]; then + echo "No need to run as root." + exit 1 +fi + if [ "$1" = "-h" -o "$1" = "--help" -o $# -ne 1 ]; then echo "Usage $0 " echo " is the full path to the site, such as /var/www/example.nl" @@ -14,23 +19,32 @@ HTTPD_USERS_GID=1002 # The template to copy TEMPLATE_DIR=/data/www/template # The bases to create users under -USERBASE=ou=Users,dc=drsnuggles,dc=stderr,dc=nl -GROUPBASE=ou=Groups,dc=drsnuggles,dc=stderr,dc=nl +USERBASE="ou=Httpd Users,ou=Users,dc=drsnuggles,dc=stderr,dc=nl" +GROUPBASE="ou=Domain Groups,ou=Groups,dc=drsnuggles,dc=stderr,dc=nl" # PHP config to change the error_log setting in PHP_CONFIG=conf/php.ini.override # PHP error logfile to set error_log to PHP_ERRORLOG=logs/php.log -# Get dir, but make it absolute -cd "$1" -DIR=`pwd` - +# Get dir +DIR="$1" -if [ -e "$DIR" -a ! -d "$DIR" ]; then - echo "$DIR" must be a directory, or not exist yet. - exit 1; +if [ -e "$DIR" ]; then + if [ ! -d "$DIR" ]; then + echo "$DIR" must be a directory, or not exist yet. + exit 1; + fi + echo "Skipping creation of $DIR, it already exists"; +else + # Create $DIR from $TEMPLATE_DIR, if it does not exist yet + echo "Creating $DIR from $TEMPLATE_DIR" + cp -R "$TEMPLATE_DIR" "$DIR" fi +# Make $DIR absolute +cd "$DIR" +DIR=`pwd` + # Strip prefix SITE=`basename $DIR` @@ -77,14 +91,6 @@ else exit 1 fi -if [ -e "$DIR" ]; then - echo "Skipping creation of $DIR, it already exists"; -else - # Create $DIR from $TEMPLATE_DIR, if it does not exist yet - echo "Creating $DIR from $TEMPLATE_DIR" - cp -R "$TEMPLATE_DIR" "$DIR" -fi - echo "Setting up permissions" # Set up permissions sudo chown -R 0:$GROUP "$DIR" @@ -92,14 +98,14 @@ sudo chown -R 0:$GROUP "$DIR" # By default, let the owner have write access, the group have read access sudo setfacl -R --set d:u::rwX,d:g::rX,d:o::-,u::rwX,g::rX,o::- "$DIR" -# Give the group write access to htdocs and conf -sudo setfacl -R -m g::rwX "$DIR/htdocs" "$DIR/conf" +# Give the group write access to htdocs, applications, conf and data +sudo setfacl -R -m g::rwX,d:g::rwX "$DIR/htdocs" "$DIR/applications" "$DIR/conf" "$DIR/data" # Give lighttpd read access to the dir itself sudo setfacl -m u:$HTTPD_USER:rx "$DIR" -# Allow lighttpd to read anything in htdocs and conf -sudo setfacl -R -m d:u:$HTTPD_USER:rX,u:$HTTPD_USER:rX "$DIR/htdocs" "$DIR/conf" +# Allow lighttpd to read anything in htdocs, applications, conf and data +sudo setfacl -R -m d:u:$HTTPD_USER:rX,u:$HTTPD_USER:rX "$DIR/htdocs" "$DIR/applications" "$DIR/conf" "$DIR/data" # Allow lighttpd to write new files in logs (but not touch existing or those created by lighttpd) sudo setfacl -m u:$HTTPD_USER:rwX "$DIR/logs" @@ -117,11 +123,14 @@ sudo setfacl -m u:$SCRIPT_USER:rwX "$DIR/logs" "$DIR/data" sudo sh -c "chown -R $SCRIPT_USER \"$DIR\"/logs/php.log* \"$DIR\"/logs/wipi.log*" sudo sh -c "chown -R $HTTPD_USER \"$DIR\"/logs/access.log*" -# Now, set the error_log setting in php.ini +# Now, set the error_log setting in php.ini. This ensures each domein will have +# a separate logfile for errors, since lighttpd only supports a single error +# log (When error_log is not set, error messages will go to lighttpd's log +# automatically). echo Updating `basename $PHP_CONFIG` - sudo sed -i "s#^error_log *=.*#error_log = $DIR/$PHP_ERRORLOG#" "$DIR/$PHP_CONFIG" +sudo update-php.ini # Done!