Совместное использование конфигурации Apache между тестированием по сравнению с производством

Этот вопрос имеет миллион ответов, и большинство из них не будет право для Вас.

Это - операционная система определенные, конкретные аппаратные средства и конкретная загрузка.

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

2-я часть этой проблемы является управлением. Когда поместить систему для сна и когда проснуться, она создает резервную копию снова. Не зная, как Ваш кластер управляет рабочей нагрузкой, Вы действительно не получите ответ на это.

Лично я выполняю веб-ферму, которая имеет подсистему балансировки нагрузки впереди. Трафик направлен к паре хостов вплоть до определенного уровня и затем этого циклические алгоритмы остальные. Когда те другие серверы не показывают действия в течение часа или после 18:00 часов, они помещаются в состояние сна. Когда snmp сценарии показывают, что пользовательский объем растет на подсистеме балансировки нагрузки, те хосты сна отправляются wakeonlan волшебный пакет, и кластер возвращается к полной силе. Это могло быть более мелкомодульным, но я могу действительно только экспериментировать в живом, таким образом, это было мало перемещений, в которых я уверен.

Аплодисменты M.

1
задан 23 May 2010 в 15:43
5 ответов

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

Это заменяет значениями конфигурации в generic.tmpl.conf (который является сайтом внутренняя конфигурация), затем делает результат доступным как ${conf} для использования в test.tmpl.conf и production.tmpl.conf, которые имеют блок VirtualHost, содержащий ${conf}, файлы журнала и другая такая определенная для хоста информация.

#!/usr/bin/python

import string
from optparse import OptionParser

# ---

parser = OptionParser()
parser.add_option("--clean", dest="clean", action="store_true", default=False,
                  help="Clean files instead of creating them.")
(options, args) = parser.parse_args()
if len(args) != 0:
  parser.error("No non-option arguments expected.")

# ---

def readconf(name):
  return string.Template(open(name).read())

def writeconf(out, outer, inner, fields):
  outerfields = fields.copy()
  outerfields["conf"] = inner.substitute(fields).replace("\n", "\n\t")
  out.write(outer.substitute(outerfields))
  out.close()

# ---

if options.clean:
  os.remove("production.conf")
  os.remove("test.conf")
else:
  commonconf = readconf("generic.tmpl.conf")
  liveconf = readconf("production.tmpl.conf")
  testconf = readconf("test.tmpl.conf")

  writeconf(open("production.conf", "w"), liveconf, commonconf, {
    # ... configuration values redacted ...
  })

  writeconf(open("test.conf", "w"), testconf, commonconf, {
    # ... configuration values redacted ...
  })
0
ответ дан 4 December 2019 в 10:56

Мой собственный ответ: То, о чем я думал, должно использовать SetEnv для хранения путей для текущей машины в переменных среды, затем Включать общий конфигурационный файл с $ {} везде существует что-то конкретная машина. Но я никогда не использовал эти средства прежде, и я не знаю, существует ли некоторый протест.

0
ответ дан 4 December 2019 в 10:56
  • 1
    Оказывается, что эта функция, которая я думал, что читал о где-нибудь, doesn' t на самом деле существуют.Неважно! –  Kevin Reid 31 May 2010 в 23:18

Теперь это не прямой ответ на Ваш вопрос, потому что он включает изменение установки, но избегать точно этой проблемы, я виртуализирую и свою систему тестирования и свой рабочий сервер. Я надеюсь, что это даст мне меньше стычки с конфигурацией, поскольку я выполню идентичные изображения и добавлю легкую масштабируемость или дублирование в будущем.

Возможно, у Вас есть возможность работать виртуализированный....

Необходимо также взглянуть на те два потока о конфигурациях сервера управления версиями и дублирования и перемещении установленных Linux между платформами

0
ответ дан 4 December 2019 в 10:56

Это могло быть возможно просто открыть некоторые леса с помощью sym/hardlinks, изменить точки монтирования и т.д. так, чтобы тестовая среда соединила производство соответствия каналом. В зависимости от Вашей конкретной установки это могло быть довольно легко, или это могло бы быть и ужасно и сложно..

Для доступа к тестовой среде используйте, это - IP, или Вы могли добавить дополнительный ServerAlias с именем, которое указывает на Вашу тестовую среду, или Вы могли бы просто настроить то же название обеих машин и использовать Ваш локальный/etc/hosts для переключения, к какому Вы хотите получить доступ.

0
ответ дан 4 December 2019 в 10:56
  • 1
    Машины являются совсем другими платформами; создание их подобный было бы грязно для обоих. Я хочу способ варьироваться конфигурация Apache, не все остальное. И использование /etc/hosts в особенности было бы слишком широко, так как я хочу смочь получить доступ к своему собственному живому сайту от моей персональной машины. –  Kevin Reid 23 May 2010 в 18:51
  • 2
    Хорошо, затем использование некоторой формы подстановки переменных наиболее вероятно хорошая идея. Я не могу действительно помочь многому со что хотя, но удача Вам! Если это перестало работать по некоторым причинам, Вы могли бы всегда использовать sed сценарий или подобный для автоматизации редактирований поисковой замены..:) –  sajb 23 May 2010 в 19:10

Попытайтесь использовать <Location> вместо <Directory> если это возможно, так, чтобы изменение DocumentRoot покроет большинство Ваших изменений. Это - вероятно, самый легкий способ заботиться о нем.

Include директива может также быть Вашим другом - можно засунуть ее внутри a <Directory> или <Location> блок для включения частей конфигурации, которая не изменится между машинами.

Это - немного больше взлома, но Вы могли также использовать DirectoryMatch соответствовать и Вашим каталогам тестирования и производства в одном разделе.

-1
ответ дан 4 December 2019 в 10:56
  • 1
    Используя <Location> кажется хорошей идеей независимо, но этим won' t на самом деле помогают здесь, потому что установка тестирования http://localhost/test-site/foo в противоположность http://live-site.example.com/foo. –  Kevin Reid 24 May 2010 в 05:50
  • 2
    В этом случае, возможно, что-то как < LocationMatch / (испытательная площадка/)? foo> работал бы. Более оптимальный вариант мог бы состоять в том, чтобы настроить тест-site.localhost как доменный псевдоним, таким образом, у Вас может быть / нечто быть тем же повсюду. Я don' t завидуют установке, которая имеет различные пути в тестировании по сравнению с живым. –  Steve Simms 25 May 2010 в 03:40

Теги

Похожие вопросы