Я использую Ubuntu и Windows. Когда я использую Windows, я не могу получить доступ к своему файлу в var/www
моем разделе Linux. Поэтому я пытаюсь создать виртуальный хост и DirectoryRoot в моем разделе NTFS.
Я объединяю каталог WAMP в Windows и корневой каталог виртуального хоста в Ubuntu, но это не работает. Всегда появляется error 403 forbidden access
. И когда я меняю разрешения, chmod
ничего не меняется.
Что я должен делать?
решение1
Настройки для раздела NTFS
Сначала вам нужно иметь доступ к разделу NTFS через Ubuntu. Выполните следующие шаги, если у вас этого нет.
sudo apt-get install ntfs-3g
Найдите имя вашего раздела(ов) NTFS. Пример:
sudo fdisk -l | grep NTFS
Получите UUID вашего раздела NTFS.
$ sudo blkid
/dev/sda1: LABEL="windows" UUID="4ED2A451B2A23F59" TYPE="ntfs"
Настройте раздел в /etc/fstab (на всякий случай сделайте резервную копию).
sudo cp /etc/fstab /etc/fstab.bak
sudo vim /etc/fstab
Я создал свой следующим образом (на основе UUID). Следующие параметры устанавливают разрешения на чтение, запись и выполнение, а uid=1000 устанавливает вас в качестве пользователя раздела NTFS во время загрузки ОС. Это также гарантирует, что пользователь Apache сможет получить доступ к вашему направлению виртуального хоста (это и решило мою проблему).
/dev/disk/by-uuid/4ED2A451B2A23F59 /media/windows ntfs-3g defaults,permissions,users,uid=1000,utf8 0 0
Если вы хотите смонтировать раздел от имени www-data
пользователя, найдите www-data
идентификатор пользователя и замените его uid=1000
на него:
id -u www-data
Обратите внимание, что вам может потребоваться создать каталог /media/windows, если он не существует.
cd /media
sudo mkdir windows
sudo chown sagun:users windows
Перезагрузите компьютер и убедитесь, что ваш диск NTFS автоматически монтируется с включенными разрешениями на чтение, запись и выполнение.
Параметры для настройки виртуального хоста в Apache
Создайте каталоги для размещения ваших лог-файлов (при желании):
sudo mkdir /var/log/apache2/projects.dev
Создайте новый файл конфигурации внутри каталога /etc/apache2/sites-available. Пример:
sudo vim /etc/apache2/sites-available/projects.dev.conf
Настройте конфигурацию, подобную этой, и сохраните файл:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName projects.dev
ServerAlias projects
DocumentRoot /media/windows/Users/sagun/Dropbox/projects
<Directory />
Options FollowSymLinks
AuthType None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory /media/windows/Users/sagun/Dropbox/projects/>
Require all granted
Options Indexes FollowSymLinks MultiViews
AuthType None
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/projects.dev/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/projects.dev/access.log combined
</VirtualHost>
Далее отредактируйте файл /etc/hosts.
sudo vim /etc/hosts
Добавьте следующую строку и сохраните:
127.0.0.1 projects.dev
Активируйте хост с помощью следующей команды:
sudo a2ensite projects.dev
Перезапустить Apache
sudo service apache2 restart
Наконец-то я смог зайти http://projects.dev
из браузера со всем моим кодом, находящимся в разделе NTFS как из Windows, так и из Ubuntu. Надеюсь, кто-то найдет это полезным. Ура!
решение2
Вот что вам нужно, чтобы решить проблему
По сути, вам нужна такая запись в вашем файле httpd.conf
<Directory "physical path to the directory">
Order Allow,Deny
Allow from All
# Any other directory-specific stuff
</Directory>
решение3
Лучшим решением для меня было сменить пользователя Apache. Это может быть рискованно, но в моем случае это сработало.
sudo vim /etc/apache2/envvars
решение4
Если вы настроили автоматическое монтирование жесткого диска, вероятно, процесс редактирования envvars не сработает, поскольку раздел будет находиться в /mnt.
Эта процедура может быть не такой безопасной, но она работала в течение мин. Я оставил пользователя www-data даже в envvars и добавил пользователя apache в группу root.
sudo usermod -G root www-data
Поскольку это работает только локально, я считаю, что серьезных рисков нет.