Vhost для apache2+nginx в одно нажатие

Перенос большого кол-ва сайтов на новый сервер занимает много времени? Ничего подобного. Скрипт представленный ниже сделает все за вас!

Возможности:
1. Создание 2-х конфигурационных файлов для apache2 и nginx;
2. Создание необходимых каталогов для сайта;
3. Выставление необходимых прав доступа к папкам домена;
4. Создание символических ссылок для включения домена на обоих серверах;
5. Reload обоих серверов.

Синтаксис:

a2addhv [domain] [domain-ip] [user]

Установка:
1. Создайте необходимые пути:

root@srv:~# mkdir /usr/share/apache2/templates
root@srv:~# mkdir -p /usr/share/nginx/templates

2. Скопируйте шаблоны:

 root@srv:~# cp apache2-template.conf /usr/share/apache2/templates
 root@srv:~# cp nginx-template.conf /usr/share/nginx/templates

3. Скопируйте исполняемый файл в /usr/local/bin:

root@srv:~# cp a2addvh /usr/local/bin

4. Теперь выполните настройку внутри скрипта:

# E-mail администратора:
admin_email="webmaster@domain.ru"
# Кодировка:
codepage="windows-1251"
# Путь до шаблонов apache
apache2_templ_path="/usr/share/apache2/templates"
# Путь до шаблонов nginx
nginx_templ_path="/usr/share/nginx/templates"
# Путь до конфигов apache
apache2_conf_path="/etc/apache2"
# Путь до конфигов nginx
nginx_conf_path="/etc/nginx"

Скрипт:

#!/bin/bash

# Settings:
admin_email="webmaster@domain.ru"
codepage="windows-1251"

apache2_templ_path="/usr/share/apache2/templates"
nginx_templ_path="/usr/share/nginx/templates"
apache2_conf_path="/etc/apache2"
nginx_conf_path="/etc/nginx"

domain=$1
domain_ip=$2
user=$3

case "$@" in
    "")
        echo "Syntax: a2addvh [domain] [domain ip] [user]"
        echo ""
        ;;
    *)
        clear
        echo "Adding new VHost: $domain"
        echo
        echo "Creating a directory tree:"
        mkdir -p /home/$user/www/$domain
        echo "/home/$user/www/$domain"
        echo
        echo "Creating index.php file (for testing)."
        echo "< ?php phpinfo(); ?>" > /home/$user/www/$domain/index.php
        echo
        echo "Changing the owner for /home/$user/www/"
        chown -R $user:$group /home/$user/www/
        echo
        echo "Creating vhost file on apache2 ($apache2_conf_path/sites-available/$domain)"
        sed -e "s|@@DOMAIN@@|${domain}|g;s|@@USER@@|${user}|g;s|@@ADMIN_EMAIL@@|${admin_email}|g;s|@@CODEPAGE@@|${codepage}|g" $apache2_templ_path/apache2-template.conf > $apache2_conf_path/sites-available/$domain
        echo "Creating vhost file on nginx ($nginx_conf_path/sites-available/$domain)"
        sed -e "s|@@DOMAIN@@|${domain}|g;s|@@DOMAIN_IP@@|${domain_ip}|g;s|@@USER@@|${user}|g;" $nginx_templ_path/nginx-template.conf > $nginx_conf_path/sites-available/$domain
        echo
        echo "Enable vhost:"
        echo "Enable on Apache2..."
        ln -s $apache2_conf_path/sites-available/$domain $apache2_conf_path/sites-enabled/$domain
        echo "Enable on nginx..."
        ln -s $nginx_conf_path/sites-available/$domain $nginx_conf_path/sites-enabled/$domain
        echo
        echo "Reloading servers:"
        /etc/init.d/apache2 reload
        /etc/init.d/nginx reload
        echo
        echo "All done!"
    ;;
esac

Шаблоны:
Для apache2:

<VirtualHost *:8080>
       ServerName @@DOMAIN@@
       ServerAdmin @@ADMIN_EMAIL@@
       ServerAlias www.@@DOMAIN@@
       DocumentRoot /home/@@USER@@/www/@@DOMAIN@@
       SuexecUserGroup @@USER@@ @@USER@@
       <Directory /home/@@USER@@/www/@@DOMAIN@@>
               Options FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>
       CustomLog /var/log/apache2/@@DOMAIN@@.access.log combined
       ErrorLog /var/log/apache2/@@DOMAIN@@.error.log
       AddDefaultCharset @@CODEPAGE@@
</VirtualHost>

Для nginx:

server {
       listen   @@DOMAIN_IP@@:80;
       server_name @@DOMAIN@@ www.@@DOMAIN@@;
       location / {
               proxy_pass http://127.0.0.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;
       }
       location ~* ^.+\.(jpg|jpeg|gif|png|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|tgz|gz|rar|doc|xls|txt|bmp|tcl)$ {
               root /home/@@USER@@/www/@@DOMAIN@@;
               access_log /var/log/nginx/@@DOMAIN@@.access;
       }
}

Данные шаблоны не идеальны и они даны лишь для примера, советую настроить их под себя!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.