授予服务器创建文件夹的权限

Grant the server the permission of creating a folder

我在 DigitalOcean 上有一个 Ubuntu 服务器,它托管了一些网站。我刚刚在我的 mac 上构建了一个 mean.js 堆栈应用程序,我计划将其部署到生产环境,从而部署到这个现有服务器。

我按照 this link 安装了 node.jsmongodb 等。然后,我没有克隆 mean.js 的示例应用程序,而是从github:

sudo git clone https://github.com/softtimur/myapp.git /opt/myapp
cd /opt/myapp
sudo mkdir public/tmp/
sudo npm install
npm start

然后,我在浏览器中输入 https://xxx.xx.xx.xx:3000/#/new。在服务器端,我得到一个错误:

router.post /mkdir
{ Error: EACCES: permission denied, mkdir 'public/tmp/sAlTI6NDo5NQcO-lAAAA/'
    at Error (native)
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: 'public/tmp/sAlTI6NDo5NQcO-lAAAA/' }

这是因为在我的应用程序后端,它试图通过 fs.mkdir(...)public/tmp/ 中创建一个文件夹,其中 fs = require('fs').

那么有人知道如何给服务器这个权限吗?

PS: 我也试过 运行

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

但这并没有帮助。

问题是您将 public/tmp/ 创建为根用户:

sudo mkdir public/tmp/

但是您 运行 应用 $USER,很可能不允许写入该目录。

修复:

sudo chown -R $USER:$GROUP public/tmp/