Wiele aplikacji PHP używa tego modelu do instalacji i aktualizacji:
- Rozpakuj tarę źródłową.
- Skieruj Apache na źródło.
- Przejdź w przeglądarce internetowej do strony głównej.
- Przejrzyj kilka stron internetowych konfiguracji (np. Sprawdza istnienie bibliotek, prosi o informacje o połączeniu z bazą danych, tworzy lub aktualizuje schemat bazy danych itp.).
- Użytkownik zmienia nazwę
install/
katalogu na inny, aby aplikacja wiedziała, że został zainstalowany.
Nie widzę żadnego (prostego) sposobu na utworzenie z tego pakietu Debiana bez zmuszania użytkownika instalującego pakiet do wykonania wielu powyższych instrukcji. Pamiętaj, że nie jestem programistą aplikacji, więc nie jestem w stanie dokonać bezpośredniej zmiany w sposobie instalacji aplikacji.
Jakie jest typowe podejście do pakowania takiej aplikacji?
web-applications
packages
Rlandster
źródło
źródło
Odpowiedzi:
Stworzyłem kilka aplikacji internetowych PHP, które dystrybuuję (wewnętrznie) za pośrednictwem pakietów Debiana. Jest to proste dzięki skryptom (tutaj uproszczonym) do automatyzacji procesu:
create_package.sh :
finish_package.sh :
kontrola :
Wszystko to jest dość łatwe do zrobienia i działa dobrze w przypadku wewnętrznej dystrybucji pakietów, którą robię. Nie jestem pewien, czy to wystarcza do globalnej dystrybucji, ale może być podobne do tego, co robią ludzie Ubuntu i Debian, kiedy biorą pakiety źródłowe (prawdopodobnie dystrybuowane jako tarballi ze skryptami instalacyjnymi) i tworzą dla nich pakiety .deb.
Myślę, że może to sprawnie rozwiązać twoje pięć kwestii:
Pakiet Debian automatycznie dekompresuje się we właściwe miejsce w systemie docelowym, gdy jest zainstalowany.
Możesz mieć pakiet Debiana automatycznie konfigurujący Apache. Niektóre pakiety, takie jak MySQL i Apache, mają katalogi „conf.d” w / etc, do których można upuścić pliki konfiguracyjne. To jest ideał. Twój skrypt do pakowania może utworzyć katalog debian / etc / apache2 / conf.d i skopiować do niego plik konfiguracyjny. Zostanie on zainstalowany w systemie docelowym i możesz ponownie uruchomić Apache w skrypcie o nazwie postinst, który umieścisz w debian / DEBIAN.
Jest to prawdopodobnie nieuniknione, jeśli trzeba wprowadzić niestandardowe informacje, choć wielu woli systemy, które mogą działać „po wyjęciu z pudełka” bez konieczności konfiguracji.
Istnienie biblioteki można zagwarantować poprzez włączenie odpowiednich zależności pakietów w pliku kontrolnym. Informacje o połączeniu z bazą danych można zainstalować domyślnie lub zapytać administratora na stronach konfiguracji. Po wprowadzeniu strony konfiguracji powinny wywoływać idempotentne skrypty migracji bazy danych w celu zaktualizowania schematu bazy danych. Wiele frameworków internetowych (takich jak Django) ułatwia to.
Kod za stronami konfiguracji powinien oznaczać system jako skonfigurowany, a nie administratora.
Podejście, którego czasami używam, to oddzielenie instalacji konfiguracji od instalacji aplikacji poprzez utworzenie oddzielnych pakietów. Mogę wtedy mieć kilka różnych pakietów konfiguracyjnych (wydanie, programowanie itp.), Które mogę zainstalować do woli. To oddzielenie jest również korzystne, ponieważ konfiguracja i aplikacja mogą ewoluować osobno, bez zatykania się nawzajem podczas ponownej instalacji.
źródło