![可以在 NTFS 分区中创建虚拟主机吗?](https://linux22.com/image/1114918/%E5%8F%AF%E4%BB%A5%E5%9C%A8%20NTFS%20%E5%88%86%E5%8C%BA%E4%B8%AD%E5%88%9B%E5%BB%BA%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E5%90%97%EF%BC%9F.png)
我正在使用 Ubuntu 和 Windows。当我使用 Windows 时,我无法访问var/www
Linux 分区中的文件。因此,我尝试在 NTFS 分区中创建虚拟主机和 DirectoryRoot。
我将 Windows 中的 WAMP 目录和 Ubuntu 上的虚拟主机根目录合并在一起,但不起作用。总是出现error 403 forbidden access
。当我更改权限时chmod
没有任何变化。
我应该怎么办?
答案1
NTFS 分区的设置
首先,您需要能够通过 Ubuntu 访问您的 NTFS 分区。如果还没有,请执行以下步骤。
sudo apt-get install ntfs-3g
找到您的 NTFS 分区的名称。例如:
sudo fdisk -l | grep NTFS
获取 NTFS 分区的 UUID。
$ 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
用户 ID 并用其替换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
从浏览器访问位于 Windows 和 Ubuntu 的 NTFS 分区中的所有代码。我希望有人觉得这很有用。干杯!
答案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 中。
此过程可能不太安全,但至少有效。我甚至在 envvars 中保留了 www-data 用户,并将 apache 用户添加到 root 组。
sudo usermod -G root www-data
至于怎么运作,只在局部进行,我相信不会有什么大的风险。