可以在 NTFS 分区中创建虚拟主机吗?

可以在 NTFS 分区中创建虚拟主机吗?

我正在使用 Ubuntu 和 Windows。当我使用 Windows 时,我无法访问var/wwwLinux 分区中的文件。因此,我尝试在 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

这是你解决问题所需要的

https://stackoverflow.com/questions/89118/apache-gives-me-403-access-forbidden-when-documentroot-points-to-two-different-d

基本上你需要在 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

至于怎么运作,只在局部进行,我相信不会有什么大的风险。

相关内容