Вот скриптик, созданный собой и для себя давным давно. первый опыт написания шелл скриптов =)
Создаем файлик vh, ставим ему права на исполнение
usage: sudo vh test1.ru
#!/bin/bash # Automatic creation of virtualhosl # author Horrower # date 20.10.2009 if [ `whoami` != 'root' ]; then echo "You must be running with root privileges to run this script." echo "Rerun using: sudo $0 $*" exit 1 fi # my directory with virtualhosts files APACHE_VH_DIR="/etc/apache2/sites" # my directory with virtualhosts files NGINX_VH_DIR="/etc/nginx/hosts" #my workspace folder ROOT="/www/" # const ip address for virtualhost IP_ADDRESS="127.0.0.1" # hosts file path HOSTS_FILE="/etc/hosts" # apache control APACHE_CTL="/usr/sbin/apachectl" # apache control NGINX_CTL="/usr/bin/nginx" host_exists() { if grep -q -e $1$ /etc/hosts ; then return 0 else return 1 fi } create_nginx_vhost() { date=`/bin/date` echo " server { listen 80; server_name $1 www.$1; access_log $ROOT$1/nginx_access.log ; error_log $ROOT$1/nginx_error.log debug; # Main location location / { proxy_pass http://$1:8080; #proxy_redirect off; proxy_set_header Host \$host; proxy_set_header X-Real-IP \$remote_addr; proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } location /_nginx/ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ROOT$1/public_html/\$fastcgi_script_name; include fastcgi_params; } # Static files location location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$ { root $ROOT$1/public_html/; expires 1h; } location ~ /\.ht { deny all; } } " >> $NGINX_VH_DIR/$1.conf } create_apache_vhost() { date=`/bin/date` echo " # name : $1 # created : $date <VirtualHost $IP_ADDRESS:80> ServerName $1 ServerAlias www.$1 DocumentRoot $ROOT/$1/public_html <Directory $ROOT/$1/public_html> Options Includes -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog $ROOT/$1/error_log CustomLog $ROOT/$1/access_log common # <Location /svn/> # DAV svn # SVNParentPath /usr/local/svn/$1 # SVNListParentPath on # </Location> </VirtualHost> " >> $APACHE_VH_DIR/$1 } usage() { echo " Usage: sudo vh <name> " exit 1 } VIRTUALHOST=$1 if [ -z $1 ]; then usage fi if ! echo $VIRTUALHOST | grep -q -E '^[A-Za-z0-9]+' ; then echo "Sorry, '$VIRTUALHOST' is not a valid host name to use. It must start with a letter or number." exit 1 fi echo -n " Create http://$VIRTUALHOST/? [Y/n]: " read continue case $continue in n*|N*) exit esac # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # If the host is not already defined in /etc/hosts, define it... # if ! host_exists $VIRTUALHOST ; then echo " Creating a virtualhost for '$VIRTUALHOST'... " echo -n "+ Adding '$VIRTUALHOST' to /etc/hosts... " echo -n "$IP_ADDRESS $VIRTUALHOST" >> /etc/hosts echo "done" echo -n "+ Creating apache virtualhost file in $APACHE_VH_DIR/$VIRTUALHOST... " create_apache_vhost $VIRTUALHOST echo "done" #echo -n "+ Creating nginx virtualhost file in $NGINX_VH_DIR/$VIRTUALHOST.conf... " #create_nginx_vhost $VIRTUALHOST echo "done" if ! [ -d $ROOT/$VIRTUALHOST/public_html ] ; then echo -n "+ Creating web directory and index file... " mkdir $ROOT/$VIRTUALHOST mkdir $ROOT/$VIRTUALHOST/public_html fi if ! [ -f $ROOT/$VIRTUALHOST/public_html/index.php ] ; then echo "<? phpinfo(); ?>" >> $ROOT/$VIRTUALHOST/public_html/index.php echo "done" fi echo -n "+ Setting up permissions for web directory..." chown -R $SUDO_USER $ROOT/$VIRTUALHOST chmod -R 777 $ROOT/$VIRTUALHOST #find $ROOT/$VIRTUALHOST/. -type d -exec chmod +a "_www allow read,write" {} \; echo "done" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Restart apache for the changes to take effect # echo -n "+ Flushing cache... " dscacheutil -flushcache sleep 1 curl --silent http://$VIRTUALHOST/ 2>&1 >/dev/null echo "done" dscacheutil -q host | grep -q $VIRTUALHOST sleep 1 echo -n "+ Restarting Apache... " $APACHE_CTL graceful 1>/dev/null 2>/dev/null echo "done" echo -n "+ Restarting Nginx... " $NGINX_CTL -s reload 1>/dev/null 2>/dev/null echo "done" echo -n " http://$VIRTUALHOST/ is setup and ready for use. " else echo -n "Same virtualhost config already exists " fi