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

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;
       }
}

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

Автор статьи lumian
Закладка Постоянная ссылка.

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

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