前言
在我們下載一些開(kāi)發(fā)軟件時(shí),常吃『瑁可以看到如圖的網(wǎng)頁(yè)形式井氢,事實(shí)上訪問(wèn)的就是文件服務(wù)器,我們將使用vsftpd + Nginx
在Linux下搭建一個(gè)簡(jiǎn)單的文件服務(wù)器
為什么要使用文件服務(wù)器岳链?
- 主要用于服務(wù)器集群架構(gòu)中花竞,比如使用
nginx+tomcat
做集群與負(fù)載均衡時(shí),如果將文件直接上傳到tomcat上掸哑,那么由于有多個(gè)tomcat约急,假設(shè)A上傳圖片到了tomcat1上,那么分配到其他tomcat的用戶就訪問(wèn)不到了苗分,而文件服務(wù)器就可以解決集群環(huán)境下圖片的訪問(wèn)問(wèn)題厌蔽。 - 通過(guò)Nginx的一些配置也能提高線上圖片的訪問(wèn)速度,并且線上文件服務(wù)器通常會(huì)單獨(dú)使用一臺(tái)云主機(jī)與應(yīng)用服務(wù)器相隔離摔癣,這樣也能緩解應(yīng)用服務(wù)器圖片訪問(wèn)及上傳下載的壓力躺枕。
vsftpd簡(jiǎn)介
簡(jiǎn)介
vsftpd是"very secure FTP daemon"
的縮寫(xiě),是一個(gè)完全免費(fèi)的供填、開(kāi)放源代碼的ftp服務(wù)器軟件拐云。
特點(diǎn)
vsftpd是一款在Linux發(fā)行版中最受推崇的FTP服務(wù)器程序,小巧輕快近她,安全易用叉瘩,支持虛擬用戶、支持帶寬限制等功能粘捎。
vsftpd安裝
安裝
安裝命令:yum -y install vsftpd
可通過(guò) rpm -qa| grep vsftpd
命令檢查是否已經(jīng)安裝vsftpd
默認(rèn)配置文件在 /etc/vsftpd/vsftpd.conf
創(chuàng)建虛擬用戶
# 在根目錄或者用戶目錄下創(chuàng)建ftp文件夾薇缅,這里選擇在根目錄
mkdir /ftpfile
# 添加用戶
useradd ftpuser -d /ftpfile -s /sbin/nologin
# 修改ftpfile文件夾權(quán)限
chown -R ftpuser.ftpuser /ftpfile
# 重設(shè)ftpuser密碼
passwd ftpuser
配置
cd /etc/vsftpd
# 創(chuàng)建文件chroot_list
vim chroot_list
# 添加內(nèi)容:ftpuser,保存退出
vim /etc/selinux/config
# 修改SELINUX=disabled
setenforce 0
修改主配置
修改主配置文件:vim /etc/vsftpd/vsftpd.conf
1.搜索banner
找到如下注釋攒磨,取消ftpd_banner
注釋泳桦,新增加三行配置
# You may fully customise the login banner string:
ftpd_banner=Welcome to silly FTP service.
local_root=/ftpfile
anon_root=/ftpfile
use_localtime=yes
2.繼續(xù)搜索chroot_list
,取消如下兩行配置的注釋
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
3.搜索anon
娩缰,將如下的配置項(xiàng)值修改為NO
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
4.在最底端添加被動(dòng)傳輸?shù)亩丝诰淖畲蠛妥钚《丝谥担趂tp上傳文件傳輸時(shí)需要使用的拼坎,雖然采用默認(rèn)的端口范圍也可以浮毯,但是防火墻的設(shè)置就不能太嚴(yán)格,所以線上環(huán)境為了安全考慮建議加上端口配置泰鸡,方便防火墻配置债蓝。
tcp_wrappers=YES
# 添加端口配置
pasv_min_port=61001
pasv_max_port=62000
防火墻配置
vim /etc/sysconfig/iptables
# 添加vsftpd的端口配置
-A INPUT -p TCP --dport 61001:62000 -j ACCEPT
-A OUTPUT -p TCP --sport 61001:62000 -j ACCEPT
-A INPUT -p TCP --dport 20 -j ACCEPT
-A OUTPUT -p TCP --sport 20 -j ACCEPT
-A INPUT -p TCP --dport 21 -j ACCEPT
-A OUTPUT -p TCP --sport 21 -j ACCEPT
啟動(dòng)服務(wù)
重啟防火墻:service iptables restart
啟動(dòng)vsftpd:service vsftpd start
在/ftpfile
目錄上傳一些測(cè)試文件及目錄,方便驗(yàn)證查看盛龄。
驗(yàn)證
在windows下驗(yàn)證:打開(kāi)瀏覽器饰迹,以ftp協(xié)議訪問(wèn)芳誓,如:ftp://192.168.0.108/,訪問(wèn)時(shí)會(huì)彈出窗口讓我們輸入ftp的用戶名和密碼啊鸭,輸入正確的帳號(hào)后看到如圖界面則代表訪問(wèn)成功锹淌。
在linux下的驗(yàn)證:輸入命令 ftp ip
連接服務(wù)器,需要輸入ftp的用戶和密碼莉掂,通過(guò)ls
命令或者dir
命令查看文件服務(wù)器的文件列表,輸入exit
退出千扔。
通過(guò)ftp客戶端軟件驗(yàn)證:例如cuteftp憎妙、filezilla、viperftp曲楚、flashftp厘唾、leapftp等進(jìn)行連接ftp服務(wù)器,進(jìn)行文件上傳龙誊、下載驗(yàn)證抚垃。
文件服務(wù)器搭建
環(huán)境說(shuō)明
CentOS安裝參考:Linux安裝
虛擬機(jī)使用參考:虛擬機(jī)的使用
nginx安裝參考:Linux下安裝Nginx
host配置
由于我們是在本機(jī)進(jìn)行搭建,所以需要配置host虛擬域名映射趟大,如果是線上環(huán)境有真實(shí)域名鹤树,請(qǐng)忽略此步。
修改瀏覽器所在的主機(jī)的host文件逊朽,這里修改的是windows的host文件:C:\Windows\System32\drivers\etc
在末尾添加一行配置:192.168.0.108 img.silly.com
nginx配置
1.修改nginx主配置文件nginx.conf
vim /usr/local/nginx/conf/nginx.conf
# 在注釋內(nèi)容上面添加如下內(nèi)容
include vhost/*.conf;
# another virtual host
2.在Nginx安裝目錄的conf目錄下新建一個(gè)vhost目錄罕伯,然后在vhost目錄下新建配置文件,文件名需要以.conf結(jié)尾
cd /usr/local/nginx/conf/
mkdir vhost
cd vhost/
vim img.silly.com.conf
配置文件添加如下內(nèi)容
server {
listen 80;
autoindex on;
server_name img.silly.com;
access_log /usr/local/nginx/logs/access.log combined;
index index.html index.htm index.jsp index.php;
location / {
root /ftpfile/;
add_header Access-Control-Allow-Origin *;
}
}
環(huán)境驗(yàn)證
啟動(dòng)nginx叽讳,即執(zhí)行命令:${nginx}/sbin/nginx
追他,打開(kāi)瀏覽器,訪問(wèn)自己上傳的任意一張圖片岛蚤,如:http://img.silly.com/mountain.jpg邑狸,訪問(wèn)ok則說(shuō)明環(huán)境搭建成功。
后序
我們?cè)贘ava項(xiàng)目開(kāi)發(fā)中會(huì)使用apache的一些ftp開(kāi)源包涤妒,然后我們用里面的工具進(jìn)行上傳圖片的時(shí)候单雾,會(huì)調(diào)用ftp服務(wù),將圖片上傳到ftp服務(wù)器上她紫,這時(shí)候我們就能拿到上傳圖片的文件名铁坎,而圖片服務(wù)器對(duì)應(yīng)的二級(jí)域名我們可以在項(xiàng)目中配置,所以上傳圖片的完整URL就能拿到了犁苏,那么前端就可以通過(guò)域名url展示圖片了硬萍。