У меня есть общий файловый ресурс SMB в моей локальной сети. Я храню все свои сайты на этом сервере. У меня есть другой сервер под управлением CentOS, на котором размещен веб-сервер Apache. Как бы вы создали виртуальный хост, который направляет на общий ресурс SMB?
Путь к серверу SMB: smb://10.0.0.177/fms%20studios/Websites
.
Это то, что у меня сейчас в моем httpd-vhosts.conf
файл.
<VirtualHost *:80>
ServerAdmin flyingmcsquid@gmail.com
ServerName tree.fmsds.xyz
ServerAlias www.tree.fmsds.xyz
DocumentRoot "smb://10.0.0.177/fms%20studios/Websites/"
<Directory "smb://10.0.0.177/fms%20studios/Websites/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Есть две разные проблемы, которые нужно решить:
Аутентификация: предположим, что ваш компьютер с Windows обслуживает "студии fms"сетевой ресурс, высоки шансы, что такая доля есть"защищенный"так что для удаленного доступа требуется пара имени пользователя и пароля;
Методы доступа: вашему Apache необходимо знать, где находится корневой каталог его виртуального хоста. Основываясь на вашем вопросе, вы «предполагаете», что префикс «smb: //» позволит Apache узнать / обработать удаленный доступ к общему ресурсу SMB.
Приступим к пункту 2. Как видно из официальная документация "DocumentRootдирективе требуется путь к каталогу. Обычно это «локальный» путь, определенный в файловой системе локальной машины.
Это не проблема для вас, поскольку вполне возможно «смонтировать» удаленный сетевой ресурс SMB «внутри» нашей локальной файловой системы. Найдите "linux smb mount" в предпочитаемой поисковой системе или начните расследование с Вот. Это позволит получить доступ к общему ресурсу SMB по пути вроде /mnt/server_win2012/fms%20studios
. Вы можете думать об этом как о эквиваленте - как для мира Windows - доступа к общему сетевому ресурсу с буквой диска, сопоставленной с удаленным путем, вместо доступа к пути UNC (... начиная с \\<something>
) прямо из проводника.
Итак, теперь вы можете разрешить Apache запрашивать доступ к общему сетевому ресурсу SMB.
Перейдем к пункту 1) "Аутентификация". Как вы можете видеть в"Общие параметры mount.cifs«раздел уже упомянутого документа можно указать»пользователь =" и "пройти ="варианты при установке ресурса.
Пожалуйста, уделите время, чтобы тщательно обдумать цель такой опции, особенно в отношении двух других дополнительных опций "uid =" и "gid =": первые два (пользователь = и пройти =) используются для удаленной аутентификации и, следовательно, должны соответствовать определенному имени пользователя. на сервере. Используется последняя пара (uid = и gid =) на клиенте чтобы сообщить локальной операционной системе, который будет пользователем и группой, которая будет «владеть» файлами, после монтирования в локальной файловой системе и, следовательно, когда они будут доступны потенциально все пользователи, определенные локально (очевидно, совершенно другой набор по сравнению с серверным - по крайней мере, в «обычных» сценариях). Поначалу это может показаться немного сложным, но ... если подумать, довольно скоро станет ясно :-)
Что касается вашего конкретного случая, я думаю, вы хотите указать uid = и gid =, соответствующие вашему локальному пользователю httpd, чтобы Apache получил доступ к удаленным ресурсам.
Я не буду углубляться в обсуждение проблем аутентификации и / или правильной конфигурации для автоматического монтирования общего ресурса SMB при загрузке, поскольку они выходят за рамки OP, поэтому, пожалуйста, действуйте самостоятельно. Тем не менее, я призываю вас действуйте очень осторожно, чтобы избежать общего разрешения на запись на веб-сервер. В более общем плане будьте предельно осторожны при предоставлении доступа к локальным / сетевым ресурсам для uid, сопоставленного с Интернет / общедоступной службой, например веб-сервером. Постарайтесь избежать такого доступа и, если это абсолютно необходимо, предоставьте ему набор разрешений абсолютно минимум (я предлагаю: начать с только чтение монтирование или монтирование для чтения и записи к общему сетевому ресурсу только для чтения и, если этого недостаточно ... попробуйте расширить его позже ...)