Для того, чтобы не ползать править постоянно /etc/hosts при каждом заведении нового проекта ...
Для того, чтобы не ползать править постоянно
/etc/hosts при каждом заведении нового проекта на локалке хорошо бы заставить машину ломится по определенному домену на локальную машину всегда. Я как-то уже
писал на эту тему, но решение там мягко говоря не самое простое. Я тут и там слышал про dnsmasq но как-то все не доходили руки разобраться. В общем, это совсем-совсем просто.
- sudo apt-get install dnsmasq (ну или brew install dnsmasq, кстати с brew была какая-то проблема небольшая, сейчас не вспомню на ходу)
- Идем открываем редактором файл конфигурации /etc/dnsmasq.conf (внутри конфига все расписано, но все опции закоменчены; в случае с brew конфиг лежит /usr/local/etc/dnsmasq.conf)
- Добавляем (или ищем и раскоментируем+правим то что уже есть в конфиге) две строки
address=/.dev/127.0.0.1 # прибиваем гвоздями домен к ip
listen-address=127.0.0.1 # слушать будем на этом ип
Создаем папку (если нет)
sudo mkdir /etc/resolver
Создаем такой файлик под зону
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'
Теперь все хосты вида *.dev будут завернуты на 127.0.0.1
Любопытные граждане гуглят и читают комментарии в конфиг файле.
- Последний штрих, идем в свойства текущего сетевого соединения и в его свойствах указываем дополнительный DNS как свой локальный 127.0.0.1 (в формах настройки есть разница, но я думаю это просто и пояснения не нужны)
- И совсем последний штрих - перезапускаем dnsmasq
sudo service dnsmasq restart
Как это делается на маке я не помню, нужно поглядеть brew info dnsmasq
Вот собственно и все. Теперь
/etc/hosts можно оставить в покое и прописывать везде локальные хосты в домене
.dev
Жаль я забыл что у меня там с brew сломалось, но фикс нагуглился минут за 20, ничего серьезного.
P.S.:
А если ещё в
nginx добавить что-то вида
server {
server_name ~^(.*)\.my\.dev$;
set $projectFolder $1;
root /home/luke/projects/php/$projectFolder/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
то ещё и в конфиги сервера можно будет ползать значительно реже.
В этом примере будет достаточно просто размещать проекты на диске вот так
/home/luke/projects/php/project-one/public -> http://project-one.my.dev
/home/luke/projects/php/project-two/public -> http://project-two.my.dev
/home/luke/projects/php/project-three/public -> http://project-three.my.dev
/home/luke/projects/php/project-four/public -> http://project-four.my.dev