Установщик PHP-скриптов (распаковка из одного файла install.php)

12 3
BrokenBrake
На сайте с 03.03.2007
Offline
194
4003

Кто делал свои установщики для своих PHP-скриптов, поймут, как важно делать эти установщики максимально простыми для пользователя. В идеале от пользователя не нужно требовать вообще никаких технических знаний. Рассуждая об этом, я пришёл к выводу, что лучше всего делать один-единственный PHP-файл, в который уже будет встроен архив будущего приложения, чтобы инсталлятор его распаковывал (а можно и не встраивать, а делать eval прямо со своего сервера).

Только вот таких решений очень мало, все идут накатанной дорожкой. Давайте обсудим?

Вопрос: кто что думает про это, у кого есть опыт разработки установщиков?

Мне удалось нарыть по теме следующее:

http://www.seocoder.org/2009/04/30/instalyator-php-skriptov-apdejty-skriptov/

http://habrahabr.ru/blogs/webdev/46443/ (есть дельные мысли в комментариях)

http://jijawi.org/ (пока нет даже бета-версии, но перспективно, IMHO)

Вот ещё древние и свежие классы со всем известного сайта:

http://www.phpclasses.org/browse/package/2192.html

http://www.phpclasses.org/browse/package/715.html

http://www.phpclasses.org/browse/package/5373.html

Кроме того, я знаю пока только одну CMS, установщик которой выполнен по такой схеме:

http://irokez.org/

Но наверняка есть и другие решения.

Пишите, высказывайтесь, делитесь ссылками!

BrokenBrake добавил 20.10.2009 в 14:16

+ дополнительно в будущем думаю предоставить пользователям возможность автоустановки дистрибутива по FTP. Что скажете? Будет ли востребовано, какие проблемы могут всплыть?

KF
На сайте с 06.10.2007
Offline
40
#1

Имхо нельзя написать универсального установщика. Востребовано - полюбому будет, а вот насчет реализации я сильно сомневаюсь.

90% установщиков требуют ввести обязательные начальные данные:

1) локальный путь

2) веб путь

3) конфиг базы данных

4) аккаунт админа

Тут что автоустановщик, что - нет, данные все равно придется вводить. А значит пользователю придется смотреть инфу, создавать базу (нельзя же расчитывать на create database).

В итоге от автоустановщика, остается только простая скачка дистрибутива и распаковка.

Вообщем теже яйца, только в профиль.

Лично я, никогда бы не воспользовался автоустановкой скрипта от разработчиков.

Аля есть форма у них на сайте, где вводить базу, пути, аккаунт и ихний скрипт ставит на твой сервер скрипт и настраивает его.. Как-то это небезопасно чтоли или как-то так, доверия не внушает.

V1
На сайте с 30.03.2006
Offline
52
#2
BrokenBrake:
В идеале от пользователя не нужно требовать вообще никаких технических знаний.

Правильные установщики спрашивают "как установить быстро (с настройками по умолчанию) или долго (сам настройки вбиваешь)". Лично меня, для php скриптов устраивает один файл с говорящим названием (config.php итд) и хорошими комментариями к каждой строке.

BrokenBrake
На сайте с 03.03.2007
Offline
194
#3
KeFiR:
1) локальный путь
2) веб путь

А смысл? Из PHP-скрипта можно без проблем определить эти данные, на кой чёрт кошмарить пользователя? IMHO, просто так типа принято, ну и инерция, разработчики не думая повторяют шаблонные решения.

KeFiR:
3) конфиг базы данных

Опять же, какие проблемы? Можно ввести конфиг и даже сохранить в PHPшном конфиг-файле.

KeFiR:
4) аккаунт админа

См. выше.

Создавать базу нужно, когда приложение в ней нуждается, но это не всегда так. Я вот сейчас делаю продукт, для которого БД будет лишней, нет смысла просто усложнять.

KeFiR:
Как-то это небезопасно чтоли или как-то так, доверия не внушает.

Насчёт установки по FTP да, вопрос доверия самый острый.

Vladimir1:
Правильные установщики спрашивают "как установить быстро (с настройками по умолчанию) или долго (сам настройки вбиваешь)".

А можно пару примеров таких установщиков? :)

[Удален]
#4

Тормоз, или я чего-то не понял или...

Вот возьмём тот же Вордпресс. Думается мне, что его простейшая установка сыграла немалую роль в превращении CMS в конструктор для домохозяек.

По этому же пути пошли многие разработчики.

Или это сложный установщик и ты изобретаешь более простое? (Хотя куда уж проще)

Лично меня, для php скриптов устраивает один файл с говорящим названием (config.php итд) и хорошими комментариями к каждой строке.

И я подписываюсь.

malls
На сайте с 08.08.2005
Offline
255
#5

А дыр то сколько???

Кроме того от чьего имени ставить????

Типа залили файлы в папку и в веб-интерфейсе (оптимальный по простоте путь) обратились к файлу install. (От имени www-data)

Дык это с самого начала дыра...

А если мудрить с правами - то этот установщик уже "не для всех"...

Так что (сугубое ИМХО) сама идея в принципе страдает одним серьезным недостатком...

KF
На сайте с 06.10.2007
Offline
40
#6
А смысл? Из PHP-скрипта можно без проблем определить эти данные, на кой чёрт кошмарить пользователя? IMHO, просто так типа принято, ну и инерция, разработчики не думая повторяют шаблонные решения.

А смысл в том что данные полученные скриптом, могут не совсем верными быть.

Например если я не хочу ставить скрипт в корень, а хочу в папку, а эту папку я алиасом привязываю к другому месту...нифига скрипт не определить мою криворукость.

Или же у меня стоит древний плеск, при котором файлы залитые по фтп нельзя редактировать с правами апача и наоборот..

Кстати, а как решать проблему прав? Где-то нужно 755 ставить, где-то 644 и т.д.

У меня например есть дешевый хостинг, там поставлен сейф-мод, бэйс-дир, отключено дохрена функция (gz*) и отрублены на уровне фаервола исходящие коннекты.

В принципе у меня там стоит форум и cms публичные, а ваш скрипт/установщик потянут все эти условия?

BrokenBrake
На сайте с 03.03.2007
Offline
194
#7
malls:
Дык это с самого начала дыра...

Почему? Можно с аргументами?

KeFiR:
Например если я не хочу ставить скрипт в корень, а хочу в папку, а эту папку я алиасом привязываю к другому месту...нифига скрипт не определить мою криворукость.

Я же пишу про установщик для обычных пользователей. Если вы хотите мудрить, вы всё равно найдёте способ это сделать :) Смысл в том, чтобы пользователь мог установить скрипт без правки конфигов и ручной распаковки.

KeFiR:
Кстати, а как решать проблему прав? Где-то нужно 755 ставить, где-то 644 и т.д.

Вот про это я тоже хотел бы поговорить отдельно. Вроде как в tar.gz сохраняются права у каталогов, так что если мы распакуем архив, то и права какие надо будут.

KeFiR:
У меня например есть дешевый хостинг, там поставлен сейф-мод, бэйс-дир, отключено дохрена функция (gz*) и отрублены на уровне фаервола исходящие коннекты.

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

[Удален]
#8

Мне кажется всё просто

1. пакуешь чистый сайт архив

2. создаешь install.php через него собираешь всю инфу, с помощью php распаковываешь архив, в install.php форма, в которую указываются данные подключения к бд, собираешь все данные $_SERVER и $_POST и далее дело техники, выполняешь что необходимо.

ИМХО, всё просто.

А с единым файлом - не везде прокатит, а если blank site весит 20-30-100мб ?

KF
На сайте с 06.10.2007
Offline
40
#9
Я же пишу про установщик для обычных пользователей. Если вы хотите мудрить, вы всё равно найдёте способ это сделать Смысл в том, чтобы пользователь мог установить скрипт без правки конфигов и ручной распаковки.

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

DeveloperRu
На сайте с 27.02.2009
Offline
72
#10

по-моему, проще залить дистрибутив, но в install.php сделать первоначальные настройки

Ответы на вопросы (http://telenok.com)
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий