mf napisał(a)
Chcę, aby np. wirtualne hosty były dodawane onfly, co nie wymga rekonfiguracji aktywnych instancji. Sygnał nie może powiedzieć, co przeładować. Skrypt natomiast domniemam, że używałby finalnie właśnie sygnału.
IMHO nadmierna kombinacja. Zobacz jak robi to Lighttpd. Tam możesz sobie skonfigurować, że root wirtualki znajduje się w katalogu /gdzieś/kiedyś/tld/1lvl/2lvl, np. foo.example.org jest w /gdzieś/kiedyś/org/example/foo. Dodanie nowej wirtualki sprowadza się do utworzenia odpowiedniego katalogu. Nic nie musisz przeładowywać. Jeśli rozłożenie wartości nagłówka Host nie rozwinie się na istniejący katalog, serwujesz domyślną/pierwszą wirtualkę, lub zwracasz 40*.
mf napisał(a)
Poprzez mechanizm będący ekwiwalentem dbusa, można byłoby szarpnąć się o bardziej złożone rządania, które byłyby już precyzyjne :)
OK, to może uściślijmy jakie parametry konfiguracyjne chcesz zmieniać.
mf napisał(a)
Co prawda (teraz w sumie pomyślałem o tym), można by zastosować właśnie sygnał. Wystarczy przygotować skrypt, który generowalby dodatkowy plik informacyjny (serv-update vhost nowy1) i on w pierwszej kolejności byłby wczytywany przez serwer po otrzymaniu wspomnianego sygnału.
Idziesz w dobrym kierunku, ale nadal nie rozumiem potrzeby wczytywania jakiegoś specjalnego pliku. Czy nie to samo uzyskasz zmieniając plik konfiguracyjny wirtualek?
Konfiguracja serwera powinna być spójna. Co z tym plikiem po przeładowaniu konfiguracji? Co ze zmianami w nim zapisanymi, w jaki sposób zostaną one naniesione na właściwe pliki konfiguracyjne?
mf napisał(a)
Wracając jeszcze do INode. Dobrze zaprojektowane pliki konfiguracyjne, pozwalają na wydzielanie dowolnych aspektów konfiguracji pomiędzy różne pliki. Ot, chociażby dla przejrzystości. Jeżeli założymy obecność takiej cechy, zmiana w każdym pliku wywoła rekonfigurację, pomimo iż cały proces zmian ustawień nie dobiegł końca, gdyż wymaga edycji jeszcze kilku.
Inotify to nie jest automat restartujący. Jak sobie jego obsługę napiszesz, tak będziesz miał. On Cię tylko poinformuje, że coś się zmieniło.
mf napisał(a)
Piszę w C. Oba wspomniane tryby serwera są dwoma innymi programami, wykorzystującymi wspólną bibliotekę, która w rzeczywistości dostarcza funkcje serwerowe. Przy okazji kompilacja produkcyjna pozbawiona jest kilku jej zbędnych, dodatkowych bibliotek jeszcze na poziomie dynamicznego linkowania (np. obsługi argumentów przesyłanych z linii poleceń).
Tylko nie przesadź z tym wycinaniem niepotrzebnych (Twoim zdaniem) funkcji... np. parsowania argumentów wywołania, które akurat jest dość potrzebne na produkcji :)
mf napisał(a)
Trzeba również zaznaczyć, że omawiany problem jest bardziej związany z moim pedantycznym podejściem do programowania. I nie rozchodzi się o wewnętrzną potrzebę stworzenia wyczesanego oprogramowania, a o znalezeinie najbardziej optymalnego rozwiązania, który oprócz pełniania swojej roli dawałby jeszcze wiele możliwości na potem.
No to tym bardziej powinieneś się trzymać plików konfiguracyjnych. Sygnały to jest eleganckie rozwiązanie, nie toporny mechanizm, który trzeba zastąpić czymś "nowocześniejszym". Pamiętaj też o biednym administratorze, który później będzie musiał się z Twoim serwerem użerać. On potrzebuje konfiguracji, którą da się hurtowo zmienić sed'em, awk'iem i grepem oraz przeładowywania konfiguracji sygnałami, bo na serwerach wszystko jest zautomatyzowane i bezobsługowe. U mnie np. mógłbyś zapomnieć o instalacji demona D-Bus na produkcji, czy uruchamianiu serwera WWW, któremu nie można w argumencie wywołania wskazać lokalizacji plików konfiguracyjnych i którego trzeba przeładowywać jakimiś wynalazkami nieprzystającymi do reszty systemu :)
Ok, rób jak chcesz. Według mnie ten pomysł jest zły, a proponowane przez Ciebie zmiany są niepotrzebne i nadmiernie całość komplikują. Nie przekonałeś mnie niczym co do zasadności Twojego rozwiązania, więc nic więcej do dyskusji nie jestem w stanie wnieść :)
Moja rada jest taka: zanim zaczniesz wymyślać mechanizmy porozmawiaj z jakimś developerem oraz administratorem, bo to dla nich ma być ten serwer, a nie dla Twojej samorealizacji :)