У меня есть сервер Apache 2.2, на котором запущен Django. У нас есть сетевой диск T:, к которому нам нужен постоянный доступ в нашем приложении Django. При запуске Apache как сервиса мы не можем получить доступ к этому диску, поскольку для любого кода Django диск не существует.
Если я добавлю...
<Directory "t:/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
в файл httpd.conf служба больше не запускается, но я могу запустить Apache как консоль, и он работает нормально, Django может найти сетевой диск, и все хорошо.
Почему есть разница между консолью и службой? Должна ли быть разница? У меня служба использует мой собственный вход, поэтому теоретически у нее должен быть такой же доступ, как и у меня.
Я бы хотел, чтобы он работал как служба, так как это гораздо менее навязчиво, когда я работаю на сервере (если только нет способа скрыть консоль?). Любая помощь будет оценена по достоинству.
решение1
Я вижу, что вы используете Windows. Подключенные диски основаны на пользователях Windows: им нужен интерактивный пользователь. Это работает «из консоли», потому что вы вошли в систему. Диск недоступен службе при запуске. Я не знаю, сработает ли это, но попробуйте изменить настройки службы для запуска под вашим пользователем. Посмотрите, поможет ли это.
Вы также можете попробовать использоватьAutoExNTслужба для запуска пакетного файла перед входом в систему, что-то вроде
net use T: \\host\share_name /PERSISTENT:YES
Подключенный диск может находиться в контексте системной учетной записи, поэтому при входе в систему из обычного сеанса вы можете не увидеть подключенный диск.
Я работаю в основном на Linux. Я думаю, что некоторые более продвинутые администраторы Windows могут придумать что-то, чтобы улучшить это или дать вам полный рецепт.