我在DigitalOcean上有一个Ubuntu服务器,它托管一些网站。我刚刚在我的mac上构建了一个mean.js
堆栈应用程序,我计划将其部署到生产环境,从而部署到现有的服务器上。
我跟着this link安装了node.js
和mongodb
等等。然后,我没有克隆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/' }
这是因为在我的应用程序的后端,它尝试在public/tmp/
fs.mkdir(...)
fs = require('fs')
内创建一个文件夹。
所以有人知道如何向服务器授予此权限吗?
PS:我也尝试过运行
sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
但它没有帮助。
答案 0 :(得分:0)
问题是您以root身份创建了public/tmp/
:
sudo mkdir public/tmp/
但您正在以$USER
运行该应用,很可能不会允许该应用写入该目录。
修复:
sudo chown -R $USER:$GROUP public/tmp/