Добро пожаловать на форум, Гость!
Войдите или зарегистрируйтесь!
Имя пользователя:   Пароль:  
Запомнить меня 




Начать новую тему Ответить на тему   [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 16 фев 2012, 16:58 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Появилась задача, в ходе решения которой родилось текущее решение.
Что получилось: самомодифицирующийся скрипт, который генерит конфиг виртуалхоста для апача по шаблону.
Код:
<VirtualHost *:81>
        ServerAdmin webmaster@${DOMAIN}
        ServerName $PROJECT.${DOMAIN}

        DocumentRoot /var/www/vhosts/$PROJECT
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/vhosts/$PROJECT >
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/$PROJECT.${DOMAIN}-error.log
        LogLevel warn
        CustomLog /var/log/apache2/$PROJECT.${DOMAIN}-access.log combined
</VirtualHost>

Натравливаеться на папку /var/www/vhosts
Синтаксис: [ Загрузить ] [ Скрыть ]
Используется подсветка синтаксиса python
#!/usr/bin/env python
# Author: Gen1us2k
# Adding apache default config to new virtual host
# This script self-modifying and storing all your projects located at vdir
#
from socket import gethostname
import re, os, inspect, sys, io

def main():
    domain = "kg"
    conf = "/path/to/vhost/template/vhost.conf"
    apache_path = "/etc/apache2/sites-available/"
    vdir = "/var/www/vhosts/"
    projects = '[www1, www2]'
    projects = projects[1:-1].split(', ')
    projects.sort()
    cprojects = []
    nprojects = []

    for project in os.listdir(vdir):
        path  = vdir + "/" + project
        if os.path.isdir(path):
            cprojects.append(project)
            cprojects.sort()
    srcfile = inspect.getsourcefile(sys.modules[__name__])
    src = open(srcfile, 'r').read()
    match = re.search ("projects = '(.*)", src)
    for cproject in cprojects:
        if not cproject in projects:
            print "Adding apache configuration for " + cproject + " virtual host"
            config = open(apache_path + cproject + domain, 'w')
            for line in  io.open(conf, 'r'):
                line = line.replace('$PROJECT', cproject)
                line = line.replace('${DOMAIN}', cproject + "." + domain)
                config.write(line)

            config.close()
            nprojects.append(cproject)

    for project in projects:
        if not project in cprojects:
            print "Removing apache configuration for " + project + " virtual host"
            os.popen("rm /etc/apache2/sites-enabled/" + project + "." + domain)
            os.popen("rm /etc/apache2/sites-available/" + project + "." + domain)
            os.popen("/etc/init.d/apache2 reload").readline()
            projects.remove(project)
            projects.sort()

    if match:
        src = src[:match.start(1)] + "[" + ", ".join(projects) + ", " + ", ".join(nprojects) + "]'" + src[match.end(1):]
        f = open(srcfile, 'w')
        f.write(src)
        f.close()
    print os.popen('/etc/init.d/apache2 stop').readline()
    os.popen("sudo chown -R www-data:www-data /var/www/vhosts")

if __name__=='__main__':
    main()
 
Обработано за 0.017 секунд, используется GeSHi 1.0.8.4


domain = "kg"
conf = "/path/to/vhost/template/vhost.conf"
apache_path = "/etc/apache2/sites-available/"
vdir = "/var/www/

Эти переменные редактируем на свой лад, запускаем, радуемся.
ЗЫ подогнано для Debian
На гитхабе: https://github.com/gen1us2k/bash-script ... nerator.py


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 фев 2012, 17:03 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2898
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 121 раз.
ОС: RHEL 6.7
В мемориз!!! Думаю переточить под другую ось труда особого не составит - апач он и в африке апач)))


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 фев 2012, 17:05 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
Raven
ну дык )


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 фев 2012, 17:07 
Модератор
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 803

Зарегистрирован: 02 мар 2010, 16:13
Благодарил (а): 6 раз.
Поблагодарили: 12 раз.
А да. Скрипт изначально предпологался для других целей. Поэтому может быть что то лишнее в нем.


Изображение

Home: Windows Heaven
Home: Debian 6
For Servers: Debian || RHEL Based || Gentoo || FreeBSD


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 фев 2012, 17:07 
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 1887

Зарегистрирован: 03 мар 2010, 11:25
Благодарил (а): 4 раз.
Поблагодарили: 39 раз.
ОС: Slackware-current
Raven
Осталось только тебе еще это дело под лайтег переточить %)


Изображение

Изображение

Work: Slackware Linux 14.0 х 'all Servers'
Laptop: Slackware64-current / Xfce 4.10 / Linux 3.10.5


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Перенесенная ^_^

в форуме Linux

root

3

38

02 мар 2010, 16:15

Gen1us2k Перейти к последнему сообщению

Перенесенная Документация по Gentoo

в форуме Linux

Gen1us2k

0

4

05 мар 2010, 18:54

Gen1us2k Перейти к последнему сообщению



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Собрано Raven. Русская поддержка phpBB
phpBB SEO