Dutchakdev

Code, hacks and Rock and Roll.

Добавление нового домена в Nginx (скрипт)

| Comments

Люблю писать 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"

Конечно, скрипт подойдет не всем, все зависит от того как установлен и настроен сервер, но подкорректировать довольно просто используя переменные конфигурации, ну и если вообще не подходит то подкорректировать сам скрипт, так же можно задавать вопросы в коменты, всегда рад помочь.

Comments