julik live

Сайтов много - Мак один

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

В итоге около года назад родился скриптик (запускается только через sudo):

#!/usr/bin/env ruby
SitesDir = '/Sites'
DomainSuffix = `hostname`.gsub('.local', '').downcase.gsub(/\s/, '')

###############################################
`nidump hosts .`.split("\n").uniq.sort.each do | dir |
  next unless (dir.split('.').pop == DomainSuffix)
  host = dir.split("\t").pop
  cmd = `niutil -destroy . /machines/#{host}`
end

Dir.entries(SitesDir).each do | entry |
  next if (!File.stat("#{SitesDir}/#{entry}").directory? || entry == '.' || entry == '..')
  puts "> Adding website #{entry}.#{DomainSuffix}"
  `niutil -create . /machines/#{entry}.#{DomainSuffix}`
  `niutil -createprop . /machines/#{entry}.#{DomainSuffix} ip_address 127.0.0.1`
end

Что оно делает? Сканирует папку Sites, и создает для каждой подпапки ссылку в NetInfo (подобии /etc/hosts только удобнее и веселее) на локальную машину, где имя папки - домен второго уровня, а первого - имя машины. Допустим, одну мою машину зовут exile а другую turbine (да, только латиницей и без пробелов - иначе вам не сюда). При этом в папке Sites есть подпапки search, blog, live и client. Это автоматически создаст нам следующие домены ссылающиеся на локальную машину:

  • search.exile и search.turbine
  • blog.exile и blog.turbine
  • live.exile и live.turbine
  • client.exile и client.turbine

После этого пользуясь mass virtual hosting в Апаче можно просто подцеплять сайты автоматически, без всяких Денверов. Имя машины задается в системной панели Sharing.

P.S. С помощью NetInfo можно делать много других занятных штук - например, автоматически создавать маунты сетевых папок с общими шрифтами, музыкой и настройками программ. Подробнее тут. К слову, все это было (и работало по IP-сети) еще до того как вышел Windows for Workgroups. Один из компьютеров с NetInfo подарил нам первый в мире веб-сайт и веб-браузер, а потом другой компьютер с ним же был первым веб-сервером.

Suspects: Веб-стройка Mac

 
comments powered by Disqus

Aspirine not included.