關於文件服務器很多實現方法,比如采用阿里的分布式文件系統FastDFS,以及自己內部搭建FTP服務器,這里記錄一下關於nginx搭建FTP文件系統流程。
- ftp服務器搭建的步驟網上也是很多,這里打算詳細說明,只是貼一下安裝好ftp后如何添加用戶名和密碼,方便以后參考:
- yum -y install vsftpd
- useradd ftpuser (添加用戶)
- passwd ftpuser (對ftpuser添加密碼,需要重復輸入2次,最好是8位密碼)
上面的3個步驟是安裝FTP和創建用戶和設置密碼。
- 默認的yum安裝 ftp的路徑是在/etc/vsftpd,這時候通過上面創建的 用戶從 FTP登陸后,進入 home目錄就可以查看到ftpuser文件夾
上圖這里有個小細節就是在Linux中,創建一個文件時,該文件的擁有者都是創建該文件的用戶,因為我是創建了一個ftpuser用戶,所以這個文件夾所有者是ftpuser。這時候我們想要通過瀏覽器訪問圖片的話需要通過 ftp://username:password@ip 這種方式來獲取圖片,但是這個很不安全,因為把用戶名,密碼,ip都暴漏出去了, 所以這時候需要一個代理來訪問FTP下面的圖片,這時候就可以通過nginx的代理機制來實現我們外部對ftp文件的訪問,主要配置很簡單,就是修改nginx.conf的配置文件,如下圖:
上面紅色框框是我存放圖片的路徑, 重啟nginx訪問圖片出現了403(禁止訪問),后來排查了ftp的問題、檢查nginx的配置,更改文件夾的所有者ftpuser變為root 還是一直403;最后才發現nginx.conf頂部有個user被注釋了,后來嘗試打開后再次訪問,能正常看到圖片,所以問題就是這里,默認的是nobody,沒有權限組,需要打開注釋並賦給有權限的用戶
修改后如下:
重啟nginx再次刷新頁面,可以發現圖片加載出來了,之前出現的403權限問題也就解決了 
總結
盡管通過這種方式能實現分布式文件存儲,但也存在弊端,就是FTP很容易被入侵,而且小型的網站使用FTP作為文件服務器是沒問題的,但是項目訪問量持續增加的話,必要考慮文件服務器的擴展性與高可用,目前成熟的文件服務器也有很多,例如FastDFS,可以快速的進行線性擴容。