| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Установка модулей с параметрами подключения к БД |
| Автор: errrrr 9.4.2009, 20:39 |
| Есть скрипт и модули, использующие в своей работе БД. Нужно передать их заказчику (предполагается, что MySQL и прочие необходимые вещи у него уже установлены). Перед выполнением Makefile.pl и тестов нужно, чтобы уже существовали БД и пользователь, от имени которого будем подключаться. Т.е. весь вопрос в том, каким образом устанавливать в своём скрипте пользовательские хост/порт/пользователя/пароль и кто должен создавать объекты БД. Требовать от пользователя сделать всё вручную перед установкой (включая правку моего скрипта, чтобы установить его параметры БД)? В общем, хотелось бы знать как это принято делать. |
| Автор: shamber 9.4.2009, 21:11 |
| Уважаемый errrrr, лично я создавал таблицы MySQL в скрипте "сам". Ставил DBI драйвер-> создание БД-> создание таблиц |
| Автор: sir_nuf_nuf 10.4.2009, 00:22 |
| Хм, а может стоит а) вынести конфиг базы (хост, порт, имя и т.п) в отдельный файл - дабы заказчик мог их выбрать сам ? (ну допустим конфиг приложения) б) в систему сборки (Makefile) добавить отдельный трагет "installdb", а "install" сделать от него зависимым. в) в таргете installdb - запускать скрипт, который создает схему БД (можно хоть чистый SQL, а можно интерактивный, который будет спрашивать параметры у пользователя, а заодно создавать конфиг для вашего модуля..) |
| Автор: errrrr 10.4.2009, 20:58 | ||
Думаю это то, что нужно, но не знаю как имеено делать. Дистрибутив делаю с помощью module-starter (h2xs) - он выдаёт Makefile.PL. Я так понимаю, что чтобы привязать свой скрипт к запуску make'ом нужно его вписать каким-то параметром в "Makefile.PL". И ещё: объясните, плиз, как именно обращаться с конфиг-файлом в *nix из перл, где должен лежать и в каком виде хранить пароль. Наверное это стандартные вещи, но не нашел ничего толкового. |
| Автор: sir_nuf_nuf 11.4.2009, 18:37 |
| обращаться - как вам угодно. Т.е способов столько, что перечислять бессмысленно. Поищите в инете - что то типа "parsing configs with perl" Где должен находится: зависит от вашего модуля. Если это отдельное приложение (программа), то в /etc или /usr/local/etc (в общем случае в $PERFIX/etc) Как дописать это к Makefile.PL - читайте документацию по ExtUtils::MakeMaker |
| Автор: errrrr 12.4.2009, 19:13 |
| Таки да, нашел. Называется PL_FILES. Насчет файла конфигурации в общем-то всё понятно, но не ясно как лучше. По аналогии с win параметры можно хранить общими для всех или только для конкретного пользователя и гарантированно можно узнать путь к соответствующей папке системными функциями или чтением реестра, чтобы не хардкодить. В убунте обнаружилась только переменная окружения "HOME", но это не то. Что можете посоветовать по поводу безопасности? - пароль к БД придется хранить в открытом виде. Нашел несколько обсуждений на эту тему - там все сводится к ограничениям средствами файловой системы. |
| Автор: sir_nuf_nuf 13.4.2009, 20:47 |
| Ну вообщем по поводу безопасности - у вас скорее всего нет другого выбора. Но я думаю проблема решается так: 1) сервер БД не открывает доступ кому попало (т.е. только нужным хостам) 2) на файл конфигурации накладываем права -rw------- 0600 - т.е. доступ только владельцу это решит большинство проблем. По поводу того, как правильно - не заморачивайтесь сильно. Сделай лучше "просто". Правильного решения в такой задачи просто нет, о чем говорит разнообразие файлов конфигурации в UNIX |
| Автор: errrrr 14.4.2009, 19:58 |
| Ok, спасибо. |