一般一個小型系統的圖片,保存在應用服務器的項目目錄下便可,可是對於一箇中型規模的系統,就須要使用獨立的圖片服務器,單獨分離圖片的訪問。目的是一方面緩解應用服務器的訪問壓力,另外一方面,一旦服務器作了集羣配置,那麼圖片資源的同步和共享就是問題。nginx
1. 分擔web服務器的訪問壓力,對於圖片的訪問壓力轉移到圖片服務器中。c++
2. 圖片服務器可以專門針對圖片訪問進行優化。【有專門的換存方案,提升響應速度。】web
3. 提升擴展性,圖片文件的量急劇增加【社交網站,門戶網站,電商網站等。】apache
4. 解決集羣架構中,圖片文件數據不一致的問題。服務器
1. 安裝gcc架構
yum -y install gcc gcc-c++maven
2. 安裝openssltcp
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel工具
3. 安裝Nginx測試
① 解壓
tar zxvf nginx-x.x.x.tar.gz
② 執行configure文件
./configure
③ 編譯
make
④ 編譯安裝
make install
4. 使用
a) 啓動
執行 /usr/local/nginx/sbin/nginx 命令,默認端口號是80
./nginx -c /usr/work/nginx/conf/nginx.conf
b) 中止
./nginx -s stop
c) 從新加載配置並生效
./nginx -s reload
5. 配置Nginx服務器中默認的服務器位置:
修改nginx.conf配置文件。
1. 安裝vsftpd服務
yum -y install vsftpd
2. 添加一個訪問ftp的用戶
useradd baizhi --- 添加用戶百知ftp
passwd baizhi --- 修改密碼
3. 防火牆放行21端口,ftp的默認訪問端口
--添加開放端口
/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
/etc/init.d/iptables save --保存配置
service iptables restart --重啓防火牆服務
4. 設置ftp訪問
1. 啓動ftp
/etc/init.d/vsftpd start
2. 關閉ftp
/etc/init.d/vsftpd stop
3. 關閉匿名訪問
編vsftp的配置文件:/etc/vsftpd/vsftpd.conf
1. 使用主動模式,不要使用被動模式鏈接。
2. 設置FTP開機啓動
chkconfig vsftpd on
1. 將Nginx的location目錄,與FTP的用戶關聯起來
1. 將ftp用戶目錄的讀權限開放755權限
chmod -R 755 /home/baizhi
測試經過Nginx服務器訪問服務器端資源
1. FTPClinet簡介
a) 是apache提供的commons-net包中的一個API,做用是使用FTP協議遠程操做服務器端文件資源。
2. FTPClient的資源maven座標
API介紹
//1. 準備本地文件輸入流 FileInputStream in = new FileInputStream(new File("D:/text1.xls")); //2. 建立FTP客戶端工具對象。 FTPClient ftp = new FTPClient(); //3. ftp客戶端鏈接遠程FTP服務器,url表明FTP服務器的ip地址,port表明ftp端口號,默認是21。 ftp.connect("192.168.137.137", 21); //4. 登錄FTP服務器,username和password分別是FTP服務器(CentOS系統)的用戶名和密碼。 ftp.login("baizhi", "admins"); //5. 得到當前客戶端對於FTP服務器的狀態嗎 int replyCode = ftp.getReplyCode(); //6. 判斷當前的狀態嗎是否可使用FTP服務器。[官方文檔上要求寫上] if (!FTPReply.isPositiveCompletion(replyCode)) { ftp.disconnect(); System.out.println("FTP服務器不可用異常"); } //7. 設置緩衝大小爲1k ftp.setBufferSize(1024); //8. 設置文件類型爲二進制文件 ftp.setFileType(FTP.BINARY_FILE_TYPE); //9. 切換當前操做的目錄 ftp.changeWorkingDirectory("www/baizhi/images/"); //10. 將in輸入流中的文件保存在FTP服務器的切換後的目錄中,而且文件名爲filename。 ftp.storeFile("text.xls", in);// //11. 關閉輸入流 in.close(); //12. 退出登錄 ftp.logout(); //13. 斷開ftp客戶端鏈接。 if (ftp.isConnected()) { ftp.disconnect(); }
|
2. 整合SpringMVC
a) 須要將SpringMVC接受文件的MultipartFile對象,轉化成輸入流。
multipartFile.getInputStream();而後使用ftp.storeFile(文件名,上傳文件的輸入流)便可完成上傳。