2017-10-10 49 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 

希望它可以幫助別人,我很開心做這項工作。 :)

相關問題