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

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

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

Синтаксис:

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

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

[email protected]:~# mkdir /usr/share/apache2/templates
[email protected]:~# mkdir -p /usr/share/nginx/templates

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

 [email protected]:~# cp apache2-template.conf /usr/share/apache2/templates
 [email protected]:~# cp nginx-template.conf /usr/share/nginx/templates

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

[email protected]:~# cp a2addvh /usr/local/bin

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

# E-mail администратора:
admin_email="[email protected]"
# Кодировка:
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="[email protected]"
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 "[email protected]" 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|@@[email protected]@|${domain}|g;s|@@[email protected]@|${user}|g;s|@@[email protected]@|${admin_email}|g;s|@@[email protected]@|${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|@@[email protected]@|${domain}|g;s|@@[email protected]@|${domain_ip}|g;s|@@[email protected]@|${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 @@[email protected]@
       ServerAdmin @@[email protected]@
       ServerAlias [email protected]@[email protected]@
       DocumentRoot /home/@@[email protected]@/www/@@[email protected]@
       SuexecUserGroup @@[email protected]@ @@[email protected]@
       <Directory /home/@@[email protected]@/www/@@[email protected]@>
               Options FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>
       CustomLog /var/log/apache2/@@[email protected]@.access.log combined
       ErrorLog /var/log/apache2/@@[email protected]@.error.log
       AddDefaultCharset @@[email protected]@
</VirtualHost>

Для nginx:

server {
       listen   @@[email protected]@:80;
       server_name @@[email protected]@ [email protected]@[email protected]@;
       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/@@[email protected]@/www/@@[email protected]@;
               access_log /var/log/nginx/@@[email protected]@.access;
       }
}

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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