2013-10-12 5 views
0

Этот скрипт создает папки внутри каталога /home. Мне нужно изменить этот каталог на /var/www.Неправильный синтаксис regex

# Modify the following to match your system 
NGINX_CONFIG='/etc/nginx/sites-available' 
NGINX_SITES_ENABLED='/etc/nginx/sites-enabled' 
PHP_INI_DIR='/etc/php5/fpm/pool.d' 
WEB_SERVER_GROUP='www-data' 
NGINX_INIT='/etc/init.d/nginx' 
PHP_FPM_INIT='/etc/init.d/php5-fpm' 
# --------------END 
SED=`which sed` 
CURRENT_DIR=`dirname $0` 

if [ -z $1 ]; then 
    echo "No domain name given" 
    exit 1 
fi 
DOMAIN=$1 

# check the domain is valid! 
PATTERN="^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$"; 
if [[ "$DOMAIN" =~ $PATTERN ]]; then 
    DOMAIN=`echo $DOMAIN | tr '[A-Z]' '[a-z]'` 
    echo "Creating hosting for:" $DOMAIN 
else 
    echo "invalid domain name" 
    exit 1 
fi 

# Create a new user! 
echo "Please specify the username for this site?" 
read USERNAME 
HOME_DIR=$USERNAME 
adduser $USERNAME 
# ------- 
# CentOS: 
# If you're using CentOS you will need to uncomment the next 3 lines! 
# ------- 
#echo "Please enter a password for the user: $USERNAME" 
#read -s PASS 
#echo $PASS | passwd --stdin $USERNAME 

echo "Would you like to change to web root directory (y/n)?" 
read CHANGEROOT 
if [ $CHANGEROOT == "y" ]; then 
    echo "Enter the new web root dir (after the public_html/)" 
    read DIR 
    PUBLIC_HTML_DIR='/public_html/'$DIR 
else 
    PUBLIC_HTML_DIR='/public_html' 
fi 

# Now we need to copy the virtual host template 
CONFIG=$NGINX_CONFIG/$DOMAIN.conf 
cp $CURRENT_DIR/nginx.vhost.conf.template $CONFIG 
$SED -i "s/@@[email protected]@/$DOMAIN/g" $CONFIG 
$SED -i "s#@@[email protected]@#\/home\/"$USERNAME$PUBLIC_HTML_DIR"#g" $CONFIG 
$SED -i "s/@@[email protected]@/\/home\/$USERNAME\/_logs/g" $CONFIG 
$SED -i "s#@@[email protected]@#/var/run/"$USERNAME"_fpm.sock#g" $CONFIG 

echo "How many FPM servers would you like by default:" 
read FPM_SERVERS 
echo "Min number of FPM servers would you like:" 
read MIN_SERVERS 
echo "Max number of FPM servers would you like:" 
read MAX_SERVERS 
# Now we need to create a new php fpm pool config 
FPMCONF="$PHP_INI_DIR/$DOMAIN.pool.conf" 

cp $CURRENT_DIR/pool.conf.template $FPMCONF 

$SED -i "s/@@[email protected]@/$USERNAME/g" $FPMCONF 
$SED -i "s/@@[email protected]@/\/home\/$USERNAME/g" $FPMCONF 
$SED -i "s/@@[email protected]@/$FPM_SERVERS/g" $FPMCONF 
$SED -i "s/@@[email protected]@/$MIN_SERVERS/g" $FPMCONF 
$SED -i "s/@@[email protected]@/$MAX_SERVERS/g" $FPMCONF 
MAX_CHILDS=$((MAX_SERVERS+START_SERVERS)) 
$SED -i "s/@@[email protected]@/$MAX_CHILDS/g" $FPMCONF 

usermod -aG $USERNAME $WEB_SERVER_GROUP 
chmod g+rx /home/$HOME_DIR 
chmod 600 $CONFIG 

ln -s $CONFIG $NGINX_SITES_ENABLED/$DOMAIN.conf 

# set file perms and create required dirs! 
mkdir -p /home/$HOME_DIR$PUBLIC_HTML_DIR 
mkdir /home/$HOME_DIR/_logs 
mkdir /home/$HOME_DIR/_sessions 
chmod 750 /home/$HOME_DIR -R 
chmod 700 /home/$HOME_DIR/_sessions 
chmod 770 /home/$HOME_DIR/_logs 
chmod 750 /home/$HOME_DIR$PUBLIC_HTML_DIR 
chown $USERNAME:$USERNAME /home/$HOME_DIR/ -R 

$NGINX_INIT reload 
$PHP_FPM_INIT restart 

echo -e "\nSite Created for $DOMAIN with PHP support" 

Я попытался заменить строку

$SED -i "s/@@[email protected]@/\/home\/$USERNAME/g" $FPMCONF 

с

$SED -i "s/@@[email protected]@/\/var\/www\/$USERNAME/g" $FPMCONF 

Нет успеха. Какие-либо предложения?

+0

Вы пропустили один. – Patrick

ответ

0

По внешнему виду модификация регулярного выражения в порядке.

Я подозреваю, что проблема в том, что, обновляя FPMCONF, вы не обновили раздел скрипта, который создает каталоги и устанавливает разрешения; то есть строки mkdir и chmod по-прежнему указывают на /home/$username вместо /var/www/$username.

Смежные вопросы