缺少 /var/www 目录

缺少 /var/www 目录

我在 AWS 上创建了一个 CentOS 7 EC2 实例,并安装了 nginx 作为我的 Web 服务器。然而,与 Apache 不同的是,它没有创建 /var/www 文件夹,而是创建了 /usr/share/nginx/html。

我更愿意将我的网站文件上传到 /var/www。虽然我对 Linux 终端有一些经验(我主要是 Windows 开发人员),但我想知道为 PHP 网站(Yii2 Framework)创建 /var/www 文件夹的正确方法是什么。

我确实使用了 mkdir,但 Filezilla 在上传文件和创建子目录时出现权限被拒绝错误。我可以对目录进行 chown,但我不确定这是否安全或正确的做法。我要设置该文件夹什么权限?

编辑

也许这个问题有点令人困惑......

Filezilla 配置正确,我可以上传到其他目录。这是一个文件/文件夹权限问题,我需要在 mkdir 之前添加 sudo 前缀来创建 /var/www 文件夹或其中的任何文件夹,而 Filezilla 不这样做。

问题不在于如何重新配置​​ nginx 文件夹,而是在为 nginx 创建 /var/www 文件夹时应该记住什么(安全性)。我应该授予什么权限,这样我就不需要 sudo mkdir。我假设最好不要将所有权(chown)授予根或其他东西。

只是想确定一下,因为这将是一个生产服务器。

答案1

在安装了 Apache 的典型系统上,/var/www确实如您所期望的那样存在,但它由 root 用户拥有:

~$ ls -ld /var/www
drwxr-xr-x 3 root root 4096 Aug  7  2016 /var/www

如果您希望网站的内容由 root 以外的用户拥有,则需要创建一个由您希望管理网站文件的用户拥有的目录(作为 root),或者创建一个符号链接/var/www/html指向 ngnix 已经为你创建的文档根目录。不管怎样,该目录可能是由 root 用户拥有。您可以将chown其分配给要管理网站内容的角色用户,创建一个指向该角色用户拥有的不同目录的虚拟主机(使用 Apache 的说法),或者找到类似的解决方案。

如果文档根目录由 root 用户拥有,则只有 root 用户可以更改其内容,这意味着您必须以 root 身份进行身份验证才能上传新文件。更换所有者或从不同的位置提供服务可能是最好的选择。

用 ngnix 的话说,虚拟主机也称为服务器块;您可以找到/etc/ngnix/sites-available/可以链接到的示例(通常)/etc/ngnix/sites-enabled。使用服务器块时的关键是使用server_name(ngnix) 或ServerName(Apache) 指令来指示要在 HTTP 请求标头中查找的主机名。示例 ngnix 服务器块文件可能类似于:

server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

root指令指定在文件系统上的何处查找要提供的实际文件。如果您有一个 user websiteadmin,您可以将其指定为/home/websiteadmin/var/www/html或您喜欢的任何目录。

相关内容