Witam,

Mam pytanie, w jaki sposób przekonać httpd, żeby wystartował
bez sprawdzania czy istnieją wszystkie ścieżki do podkatalogów?

Część moich zasobów leży na szyfrowanym dysku (lokalnym),
który mapuję (lub nie) przez TrueCypta dopiero po starcie systemu.
Niestety przed podłączeniem tego dysku Apache już nie wystartuje
ponieważ nie znajduje tych dodatkowych lokalizacji (z obserwacji
wynika, że sprawdza tylko czy istnieje tylko dany dysk).

Chciałbym aby serwer uruchamiał się bez względu na to czy
dana lokalizacja istnieje czy nie. W jaki sposób to osiągnąć?

Apache w wersji 2.4.3 dla Windows (Xampp).

Pozdrawiam,
sworduke


Udało mi się obejść ten problem dzięki naprowadzeniu na forum apachelounge.

Pełny wątek:

http://www.apachelounge.com/viewtopic.php?p=25314#25314

W skrócie pomysł jest taki, żeby przed uruchomieniem usługi httpd zamapować wirtualny dysk w miejsce przyszłych danych za pomocą polecenia subst. W ten sposób w systemie pojawi się dysk, do którego odwołuje się apache przy starcie po czym usługa uruchamia się bez błędów. Kolejnym krokiem jest tylko podmiana danych, czyli odmontowanie dysku wirtualnego i podmontowanie danych truecrypta.

Zamontowanie wirtualnego dysku musi nastąpić przed uruchomieniem httpd więc sam proces trzeba również skonfigurować jako serwis zależny od niego.

Kroki:

1. Zainstalować Windows Server 2003 Resource Kit Tools:

http://www.microsoft.com/en-us/download/de...s.aspx?id=17657

2. Skopiować poniższe pliki z c:\program files (x86)\windows resource kits\tools\ do "c:\windows\system32"

autoexnt.exe
servmess.dll
instexnt.exe

3. Pozostając w tej lokalizacji utworzyć batch startowy

autoexnt.bat

np. subst s: d:\public_html\tempdrive

4. Zainstalować usługę

instexnt install

5. Dodać zależności usług (sprawdzić wcześniej jakie są aktualne "sc qc Apache2.4"):

sc config Apache2.4 depend= "AutoExNT/LanmanWorkstation/Tcpip/Afd"

6. Sprawdzić uruchomienie usługi

net start autoexnt

6'. W moim przypadku (win7 x64) musiałem zmienić położenie plików ponieważ serwis "autoexnt" nie chciał wystartować

w rejestrze:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AutoExNT
ImagePath -> "c:\Program Files (x86)\Windows Resource Kits\Tools\autoexnt.exe"

przenieść:

autoexnt.bat -> c:\windows\syswow64

7. Przed zamontowaniem docelowego dysku odmontować ten wirtualny w jakimś pliku np. "dane.bat":

subst s: /d
truecrypt /q /v \Device\Harddisk2\Partition1 /ls

8. Utworzenie struktury katalogów w wirtualnej lokalizacji pozwoli uniknąć błędu 404 przy odwołaniu do tej lokalizacji.

Pozdrawiam,
sworduke