Как стать автором
Обновить

Поддержка nginx в IntelliJ IDEA

Время на прочтение2 мин
Количество просмотров6.8K
idea nginx plugin
Я использую nginx как фронт сервер для своего проекта. Сам проект пишется на Java в IntelliJ IDEA. Захотелось редактировать конфиги nginx и запускать nginx сразу в IDEA. Сел и написал плагин.

Версия для Maia (IDEA 9) тоже есть. Пришлось собирать отдельно т.к. при мажорном релизе традиционно поменялись некоторые API.

Настройка похожа на настройку серверов приложений. Сначала в настройках создаем сервер:
Настройка сервера nginx в IDEA

При выборе исполняемого файла он запускается с ключом -V и, если это был nginx, вычитываются параметры заданые при компиляции. Нам нужны --conf-path, --pid-path и --prefix. Из них конструируются абсолютные пути к конфигу и файлу с pid, которые и будут в итоге использваться при запуске. При желании ничто не мешает их поменять.
Настройка запуска тоже похожа на настройку запуска сервера приложений:
Настройка запуска nginx в IDEA

В консоли кроме кнопок «Rerun» и «Stop» появляется кнопка «Reload», которая шлет процессу SIGHUP на Linux/Mac или делает nginx -s reload на Windows. Непосредственно перед перезагрузкой конфига я делаю nginx -t для заданой конфигурации. И если вдруг что-то пошло не так, nginx об этом сообщит, указав где и что стряслось. Ссылка в консоли кликабельна и открывает указаный файл на указаной строчке. В текущей версии (0.8.7) я заметил, что номер строки порой врет. Но это уже проблема nginx, а не моя. Как-нибудь напишу Игорю Сысоеву об этом.
Консоль nginx в IDEA

Тултип на предыдущем скриншоте говорит о том, что я знаю что такое конфиг nginx и что должно быть в конфиге, а чего не должно. Файлов конфигурации не видно в дереве проекта, но их можно открыть шорткатом ctrl+shift+n (go to file). Все файлы лежащие рядом с файлом конфигурации и на одну папку глубже становятся досутпны для открытия по ctrl+shift+n и расцениваются как файлы nginx. Возможно, надо открывать/метить как файлы nginx только те файлы, которые указаны в include в корневом конфиге. Но пока не уверен, что это нужно. При текущем подходе надо учитывать, что если файл конфигурации nginx лежит в вашей папке Program Files, то ничего хорошего не будет. Я надеюсь, обычно люди кладут все конфиги nginx в одну папку.
Открытие файлов конфигурации nginx в IDEA

Как сказано выше, синтаксис и семантика конфига учитывается. Для этого я выкусываю из сишных исходников список всех возможных директив, их ограничения на количество аргументов, контекст в котором они могут оказаться итд. Автодополнение тоже работает и учитывает контекст в котором мы находимся.
Автодополнение в конфиге nginx в IDEA

Кроме прочего, проверяется количество аргументов директивы, возможность открытия дочернего контекста, работает folding (схлопывание блоков стрелочками на левой границе редактора), работает комментирование по ctrl+/ и может быть еще что-то о чем я забыл.

Чего пока нет: автоформатирования, inline-документации по ctrl+q, распознавания встроенных переменных ($host итп), открытия файлов указаных в include по ctrl+click/ctrl+b, отдельного таба рядом с консолью для вывода лога, проверки валидности значений директив, ещё чего-то нужного.

Что будет сделано: все то, чего еще не сделано.

Плагин опенсорсный, под лицензией Apache 2.0. Живет на code.google.com/p/idea-nginx. Работает в Windows/Linux/Mac, то есть везде где работает IDEA.

UPD: с момента публикации сделаны табы для логов рядом с консолью, поддержка встроенных переменных, просмотр документации (ctrl+q)
Теги:
Хабы:
Всего голосов 40: ↑36 и ↓4+32
Комментарии18

Публикации