Люблю писать bash скрипты, в них нет ничего сложного но при этом они могут решать довольно большие проблемы.
Такой вот скрипт стоит у меня для добавления домена в nginx, точнее скрипт создания конфига для домена.
Usage - nginx_domain.sh   
1 
sudo ./nginx_domain.sh testdomain.com
 
 
nginx_domain.sh   
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
#!/bin/bash 
 #config 
web_root='/usr/share/nginx/' 
config_dir='/etc/nginx/' 
hosts_file="/etc/hosts" 
 if  [  -z  " $1"  ] 
then 
         #user input 
         echo  -e  "Enter  domain  name:" 
         read  DOMAIN 
         echo  "Creating  Nginx  domain  settings  for:  $DOMAIN" 
 
         if  [  -z  " $DOMAIN"  ] 
         then 
                 echo  "Domain  required" 
                 exit  1 
         fi 
 fi 
 if  [  -z  " $DOMAIN"  ] 
then 
        DOMAIN= $1 
 fi 
 ( 
cat  <<EOF 
server  { 
       listen        80 ; 
       server_name   $DOMAIN.  www. $DOMAIN ; 
 
       root         $web_root/$DOMAIN/public/ ; 
       index        index.php  index.html ; 
 
       charset  utf8 ; 
 
       location  =  /favicon.ico  { 
               log_not_found  off ; 
               access_log  off ; 
       } 
 
       location  =  /robots.txt  { 
               allow  all ; 
               log_not_found  off ; 
               access_log  off ; 
       } 
 
       location  /  { 
           try_files  $uri  $uri/  /index.php? $query_string ; 
       } 
 
       location  ~  \.php  { 
               fastcgi_pass   127.0.0.1 : 9000 ; 
               fastcgi_index  index.php ; 
               include  fastcgi_params ; 
               fastcgi_param   PHP_VALUE  "upload_max_filesize=15M" ; 
               fastcgi_param    APPLICATION_ENV   dev ; 
               fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name ; 
               fastcgi_param  PATH_INFO  $fastcgi_script_name ; 
       } 
 
       access_log  $web_root/$DOMAIN/log/access_log.txt ; 
       error_log  $web_root/$DOMAIN/log/error_log.txt  error ; 
 
 } 
EOF 
)  >   $config_dir/sites-available/$DOMAIN.conf 
 ( 
cat  <<EOF 
127 .0.0.1  $domain 
127 .0.0.1  www. $domain 
EOF 
)  >>   hosts_file 
 echo  "Making  web  directories" 
mkdir  -p  $web_root/"$DOMAIN" 
mkdir  -p  $web_root/"$DOMAIN"/{public,private,log,backup} 
ln  -s  $config_dir/sites-available/"$DOMAIN".conf  $config_dir/sites-enabled/"$DOMAIN".conf 
/etc/init.d/nginx  reload 
echo  "Nginx  -  reload" 
chown  -R  www-data:www-data  $web_root/"$DOMAIN" 
chmod  755  $web_root/"$DOMAIN"/public 
echo  "Permissions  have  been  set" 
echo  " $DOMAIN  has  been  setup" 
 
Конечно, скрипт подойдет не всем, все зависит от того как установлен и настроен сервер, но подкорректировать довольно просто используя переменные конфигурации, ну и если вообще не подходит то подкорректировать сам скрипт,
так же можно задавать вопросы в коменты, всегда рад помочь.