2017-10-10 92 views
0

我已经建立了一个Ubuntu服务器(16.04),安装了nodejs和nginx,并使它们一个一个正常工作。端口3000上的nodejs和端口80上的nginx。让nginx和node.js拥有一个共同的根文件夹

现在我唯一的问题是ftp。我想让nodejs的js文件驻留在nginx www文件夹的子文件夹中,反之亦然。所以我可以一次上传所有文件。

我试图在nginx/var/www/html/my_web_project中创建一个符号链接,导致nodejs中的文件夹/ home/admin/www/my_web_project。 ..但是我遇到了访问被拒绝的无穷无尽的问题。

管理员主文件夹被加密,也许可能导致问题?

无论如何,我不介意在某个地方有一个文件夹,nginx和nodejs都希望在各自的子文件夹中找到他们的文件。

这是一个很好的方式去,有人可以给我一些建议如何做到这一点?

+0

使用'/ usr/share/nginx/html'通常是默认的Nginx位置。确保运行Node的用户具有对这些文件的读取访问权限(在有关用户和组的Linux文件权限中进行了读取)。 **不要以root用户的身份运行Nginx和Node!**我还建议阅读Linux [目录结构](http://www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/fhs.html)以了解所有这些地点的意思。 – Svenskunganka

+0

在我的安装中,nginx驻留在/ var/www/html中,我认为它是一样的。你的意思是我把节点文件(在我的情况下是一个单一的JavaScript文件),我会完成。我明天会考验这个,回来吧,累死了。 :)非常感谢。 – Snorvarg

+0

它似乎有所不同,在我的安装中,nginx指向'/ usr/share/nginx/html',但'/ var/www/html'很好。但是,如果它是一个Node脚本(你不应该发送给浏览器),你应该把它放在Nginx无法访问的地方,例如'/ usr/local/myapp'或类似的地方。 – Svenskunganka

回答

0

Linux有一个陡峭的学习曲线,但它实际上是值得的麻烦,因为我终于得到了一个工作解决方案。

从安装nginx开始。即使你要在nodejs中进行大部分开发,你也需要一个工作的web服务器,它是nginx。

我撇去这些指南:

https://serverfault.com/questions/433265/how-do-i-change-the-nginx-user

https://nevyan.blogspot.se/2016/01/install-setup-nginx-php-mysql-and-ftp.html

的导游归结为以下命令:

sudo apt-get install nginx 
sudo nano /etc/nginx/nginx.conf  
sudo nano /etc/nginx/sites-available/default 

编辑nginx.conf,Nginx的指导与用户身份运行“ my_user':

user my_user; 

编辑默认的配置,这里的关键行:

root /home/my_user/ftp/files; 

然后重新启动nginx的服务器。

应该是什么结果?简单;我可以通过ftp将文件上传到我的网络服务器。

  1. 我通过ftp或sftp连接'my_user',并且由于它是我的用户主文件夹,所以我可以覆盖这些文件。避免Linux文件安全性方面的大部分困难。 (我很难掌握所有这些。)
  2. 由于nginx正在运行用户'my_user',它也可以访问/ home/my_user/ftp/files文件夹! (我几乎疯了让这一步工作)
  3. nginx的根文件夹设置为/ home/my_user/ftp/files,所以当我上传新版本的index.html到该文件夹​​时,nginx立即使用它。

工程。 :)

nodejs很容易安装,它似乎“只是开箱即用”。我基本上遵循本指南:https://kyup.com/tutorials/install-run-node-js-application/

我想要的WebSocket也一样,这是最容易的部分:

sudo npm install websocket 

希望它可以帮助别人,我很开心做这项工作。 :)

相关问题