摘要:新建文件夾嘗試啟動(dòng)為默認(rèn)監(jiān)聽(tīng)端口看到已經(jīng)在監(jiān)聽(tīng)端口,說(shuō)明啟動(dòng)成功。修改修改為的路徑,我這里為修改為你的監(jiān)聽(tīng)的和端口號(hào),我這里為保存退出。即為上傳圖片成功
于前不久,公司論壇的圖片終于將服務(wù)器給擠爆了,已經(jīng)達(dá)到了恐怖的34G,服務(wù)器總?cè)萘坎?0G。如果直接加硬盤(pán)的話,那么discuz中的邏輯幾乎就要全改,所以不行。如果將所有圖片扔到對(duì)象存儲(chǔ)的話,那么這會(huì)是一大筆支出(雖然錢(qián)不是我出),所以還是不行。沒(méi)辦法,只能自己來(lái)弄個(gè)圖片服務(wù)器。
FastDFS是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題。特別適合以文件為載體的在線服務(wù),如相冊(cè)網(wǎng)站、視頻網(wǎng)站等等。
最重要的是:當(dāng)存儲(chǔ)空間不足或即將耗盡時(shí),可以動(dòng)態(tài)添加卷。只需要增加一臺(tái)或多臺(tái)服務(wù)器,并將它們配置為一個(gè)新的卷,這樣就擴(kuò)大了存儲(chǔ)系統(tǒng)的容量。這樣的話,如果服務(wù)器上掛的硬盤(pán)滿(mǎn)了,只需要添加硬盤(pán),再修改一下配置即可繼續(xù)使用。
安裝 FastDFS
下載并安裝 FastDFS 依賴(lài)包 libfastcommon
下載可以到 這里 直接下載再 scp 復(fù)制到服務(wù)器上。
root@ubuntu:/home/leung# unzip libfastcommon-master.zip root@ubuntu:/home/leung# cd libfastcommon-master root@ubuntu:/home/leung# ./make.sh root@ubuntu:/home/leung# ./make.sh install
安裝完成如下圖:
下載并安裝FastDFS
下載可以到 這里 直接下載再 scp 復(fù)制到服務(wù)器上。
root@ubuntu:/home/leung# tar -xf FastDFS_v5.08.tar_2.gz root@ubuntu:/home/leung# cd FastDFS root@ubuntu:/home/leung# ./make.sh root@ubuntu:/home/leung# ./make.sh install
查看是否有 fdfs 的命令可用:
配置跟蹤服務(wù)器(tracker server)
先將 fdfs 的默認(rèn)配置復(fù)制到 fdfs 的配置路徑中: /etc/fdfs
root@ubuntu:/home/leung/FastDFS# cp -r conf/* /etc/fdfs/ root@ubuntu:/home/leung/FastDFS# ls /etc/fdfs/ anti-steal.jpg http.conf storage.conf tracker.conf client.conf mime.types storage_ids.conf
修改 tracker 的配置文件, tracker.conf.其中最基本的修改配置為:
bind_addr: 修改為 YOUR_SERVER_IP ,我這里設(shè)置為虛擬機(jī)的IP: 192.168.0.144
base_path: 修改為自定義的存儲(chǔ)路徑,我這里為 /data/fastdfs/tracker
保存退出。
新建 tracker 文件夾: mkdir -p /data/fastdfs/tracker
嘗試啟動(dòng) tracker : (22122 為tracker默認(rèn)監(jiān)聽(tīng)端口)
root@ubuntu:/etc/fdfs# fdfs_trackerd /etc/fdfs/tracker.conf root@ubuntu:/etc/fdfs# ss -lntup | grep 22122 tcp LISTEN 0 128 192.168.0.144:22122 *:* users:(("fdfs_trackerd",pid=82767,fd=5))
看到tracker已經(jīng)在監(jiān)聽(tīng)22122端口,說(shuō)明啟動(dòng)成功。
配置存儲(chǔ)服務(wù)器(storage server)
修改 storage 的配置文件storage.conf。其中最基本的修改配置為:
bind_addr: 修改為 YOUR_SERVER_IP ,我這里設(shè)置為虛擬機(jī)的IP: 192.168.0.144
base_path: 修改為自定義的存儲(chǔ)路徑,我這里為 /data/fastdfs/storage
storage_path0: 修改為自定義的存儲(chǔ)路徑,我這里為 /data/fastdfs/storage
tracker_server: 修改為你的 tracker 監(jiān)聽(tīng)的ip和端口號(hào),我這里為 192.168.0.144:22122
http.server_port: 修改為你的 Nginx 監(jiān)聽(tīng)的端口號(hào),我這里是80端口
保存退出。
新建 storage 文件夾: mkdir -p /data/fastdfs/storage
嘗試啟動(dòng) storage : (23000 為tracker默認(rèn)監(jiān)聽(tīng)端口)
root@ubuntu:/etc/fdfs# fdfs_storaged /etc/fdfs/storage.conf root@ubuntu:/etc/fdfs# ss -lntup | grep 23000 tcp LISTEN 0 128 192.168.0.144:23000 *:* users:(("fdfs_storaged",pid=82800,fd=5))
看到storage已經(jīng)在監(jiān)聽(tīng)23000端口,說(shuō)明啟動(dòng)成功。
文件上傳測(cè)試
基本配置完成之后,需要上傳個(gè)文件測(cè)試看是否真的可用。
修改 client.conf :
base_path: 修改為tracker的路徑,我這里為 /data/fastdfs/tracker
tracker_server: 修改為你的 tracker 監(jiān)聽(tīng)的ip和端口號(hào),我這里為 192.168.0.144:22122
保存退出。
使用 fdfs_upload_file 測(cè)試上傳是否成功:
root@ubuntu:/home/leung# fdfs_upload_file /etc/fdfs/client.conf /home/leung/gal_gadot.jpg group1/M00/00/00/wKgAkFk3zbeANnOvAAODyc0cLwA944.jpg root@ubuntu:/home/leung#
看到返回來(lái)了一個(gè) file_id (看上去像是文件路徑,在 fdfs系統(tǒng)中稱(chēng)之為 file_id )表明上傳圖片成功,該 tracker 和 storage 均是可用的。
在 Nginx 上使用 FastDFS現(xiàn)在圖片是傳上去了,但是怎么能查看到呢?
這時(shí)候需要配置 Nginx 了。(Apache沒(méi)試過(guò))
先下載 Nginx 的 fdfs 模塊,并修改模塊配置文件(這里有個(gè)坑,不修改的話,可能在安裝的時(shí)候報(bào)錯(cuò))
root@ubuntu:/home/leung/# wget https://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz root@ubuntu:/home/leung/# tar xf fastdfs-nginx-module_v1.16.tar.gz root@ubuntu:/home/leung/# cd fastdfs-nginx-module/src/ root@ubuntu:/home/leung/fastdfs-nginx-module/src/# vim config // 進(jìn)入編輯后,直接輸入 `:%s+/usr/local/+/usr/+g` 包括 `:` ,替換全文的 `/usr/local` 配置路徑,保存退出
拷貝fastdfs-nginx-module模塊中配置文件到/etc/fdfs目錄中并編輯:
root@ubuntu:/home/leung/fastdfs-nginx-module/src# cp mod_fastdfs.conf /etc/fdfs/ root@ubuntu:/home/leung/fastdfs-nginx-module/src# cd /etc/fdfs/ root@ubuntu:/etc/fdfs# vi mod_fastdfs.conf
修改配置項(xiàng):
connect_timeout: 連接超時(shí)時(shí)間,我這里設(shè)置為 10 秒
base_path: 路徑,我這里沒(méi)動(dòng),默認(rèn)為/tmp
tracker_server:服務(wù)器tracker 的監(jiān)聽(tīng)ip和端口,我這里設(shè)置為 192.168.0.144:22122
storage_server_port:storage 監(jiān)聽(tīng)端口,我這里是默認(rèn)的 23000
url_have_group_name:url是否帶上 group_name,這里最好設(shè)置為true,要不待會(huì) Nginx 會(huì)報(bào)400的錯(cuò)誤
store_path0:修改為storage的存儲(chǔ)路徑,我這里為 /data/fastdfs/storage
group_name:設(shè)置為默認(rèn)group1即可。
編輯完畢,保存退出。
安裝 Nginx 依賴(lài)庫(kù):
For Ubuntu: apt-get install libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev -y
For CentOS: yum install -y pcre-devel zlib-devel
因?yàn)樘摂M機(jī)剛剛安裝,所以先安裝 Nginx。
root@ubuntu:/home/leung# wget https://nginx.org/download/nginx-1.13.1.tar.gz root@ubuntu:/home/leung# ls FastDFS FastDFS_v5.08.tar_2.gz gal_gadot.jpg libfastcommon-master libfastcommon-master.zip nginx-1.13.1.tar.gz root@ubuntu:/home/leung# tar -xf nginx-1.13.1.tar.gz root@ubuntu:/home/leung# cd nginx-1.13.1 root@ubuntu:/home/leung/nginx-1.13.1# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src root@ubuntu:/home/leung/nginx-1.13.1# ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --add-module=/home/leung/fastdfs-nginx-module/src/ root@ubuntu:/home/leung/nginx-1.13.1# make && make install
注意,如果不是新安裝的 nginx,請(qǐng)先執(zhí)行 nginx -V 查看當(dāng)前nginx已安裝的模塊,再加上 fdfs 的模塊。并且,覆蓋安裝的話請(qǐng)不要 make install ,具體看下面的操作
如果已經(jīng)安裝過(guò)Nginx的話,只需要加上新模塊重新編譯即可。
先執(zhí)行 nginx -V 查看當(dāng)前nginx已安裝的模塊,如下圖,我的服務(wù)器之前使用 apt 安裝的,所以安裝的模塊有點(diǎn)多:
把 configure arguments: 后的參數(shù)拷貝下載,放在 ./configure 后面,再加上 --add-module=/home/leung/fastdfs-nginx-module/src/ 即可,add-module后的路徑請(qǐng)根據(jù)實(shí)際情況進(jìn)行替換.
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-file-aio --with-threads --with-ipv6 --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-cc-opt="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2" --with-ld-opt="-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" --add-module=/home/leung/fdfs/fastdfs-nginx-module/src/
完畢后只執(zhí)行 make,不要執(zhí)行 make install
先將原來(lái)的nginx 執(zhí)行文件備份:我這里的執(zhí)行路徑為上述的 /usr/sbin/nginx ,大家替換成真實(shí)的路徑。
root@localhost:~# mv /usr/sbin/nginx /usr/sbin/nginx-bak root@localhost:/home/leung/fdfs/nginx-1.13.1# cp objs/nginx /usr/sbin/nginx root@localhost:/home/leung/fdfs/nginx-1.13.1# nginx -v nginx version: nginx/1.13.1 root@localhost:/home/leung/fdfs/nginx-1.13.1# nginx -V
可以看到已經(jīng)加上 fdfs 的模塊了,這時(shí)候就可以平滑升級(jí) nginx:
root@localhost:/home/leung/fdfs/nginx-1.13.1# make upgrade /usr/sbin/nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful kill -USR2 `cat /var/run/nginx.pid` sleep 1 test -f /var/run/nginx.pid.oldbin kill -QUIT `cat /var/run/nginx.pid.oldbin` root@localhost:/home/leung/fdfs/nginx-1.13.1#
Nginx 的升級(jí)/安裝到這里就完成了。
在 Nginx 配置文件中加入一句:
location /group[0-9]/ { ngx_fastdfs_module; }
重啟 Nginx ,訪問(wèn)你的網(wǎng)站,就可以看到圖片了。
一個(gè)簡(jiǎn)易的服務(wù)器終于跑起來(lái)了,能正常上傳和下載。但是,總不可能每次上傳圖片都要用命令行吧,這樣既不安全,又麻煩。還是PHP大法好。
PHP要支持fdfs的話,就需要安裝 php 的 fdfs 拓展。
root@localhost:~# cd /home/leung/fdfs/FastDFS/php_client root@localhost:/home/leung/fdfs/FastDFS/php_client# phpize root@localhost:/home/leung/fdfs/FastDFS/php_client# ./configure --with-php-config=/usr/local/php5/bin/php-config root@localhost:/home/leung/fdfs/FastDFS/php_client# make && make install root@localhost:/home/leung/fdfs/FastDFS/php_client# cat fastdfs_client.ini >> /usr/local/php5/etc/php.ini
其中, --with-php-config 后面接的是你的 php-config 的路徑,不知道的直接 ./configure 試試(我的是 apt 安裝的直接 configure 就可以了)
運(yùn)行 php -m | grep fastdfs 查看是否安裝模塊成功
重啟 php-fpm : service php-fpm restart
root@localhost:/etc/php/7.0/fpm# cat /run/php/php7.0-fpm.pid 17904 root@localhost:/etc/php/7.0/fpm# kill -USR2 17904測(cè)試PHP上傳圖片
新建php文件:
運(yùn)行php文件:
root@localhost:/home/leung# php fdfs.php group1/M00/00/02/eBmZrlk6cU-AY-cLAAQ9NyZsxTs546.jpg root@localhost:/home/leung#可見(jiàn),該函數(shù)直接返回了一個(gè) fileId 。即為上傳圖片成功:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39590.html
摘要:新建文件夾嘗試啟動(dòng)為默認(rèn)監(jiān)聽(tīng)端口看到已經(jīng)在監(jiān)聽(tīng)端口,說(shuō)明啟動(dòng)成功。修改修改為的路徑,我這里為修改為你的監(jiān)聽(tīng)的和端口號(hào),我這里為保存退出。即為上傳圖片成功 于前不久,公司論壇的圖片終于將服務(wù)器給擠爆了,已經(jīng)達(dá)到了恐怖的34G,服務(wù)器總?cè)萘坎?0G。如果直接加硬盤(pán)的話,那么discuz中的邏輯幾乎就要全改,所以不行。如果將所有圖片扔到對(duì)象存儲(chǔ)的話,那么這會(huì)是一大筆支出(雖然錢(qián)不是我出),所...
摘要:可以將稱(chēng)為追蹤服務(wù)器或調(diào)度服務(wù)器。實(shí)際保存文件分為多個(gè)組,每個(gè)組之間保存的文件是不同的。虛擬磁盤(pán)路徑配置的虛擬路徑,與磁盤(pán)選項(xiàng)對(duì)應(yīng)。數(shù)據(jù)兩級(jí)目錄服務(wù)器在每個(gè)虛擬磁盤(pán)路徑下創(chuàng)建的兩級(jí)目錄,用于存儲(chǔ)數(shù)據(jù)文件。1.什么是FastDFS FastDFS是用 c 語(yǔ)言編寫(xiě)的一款開(kāi)源的分布式文件系統(tǒng)。FastDFS 為互聯(lián)網(wǎng)量身定制, 充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等...
摘要:項(xiàng)目比較老舊,自己修改了一下,跑在上,用的和位系統(tǒng),記錄下來(lái),以后上傳圖片都可以用。是一個(gè)開(kāi)源的輕量級(jí)分布式文件系統(tǒng),功能包括文件存儲(chǔ)文件同步文件訪問(wèn)文件上傳文件下載等。主要的有兩個(gè)角色和。 項(xiàng)目比較老舊,自己修改了一下,跑在mac上,用的IDEA和centos7 64位系統(tǒng),記錄下來(lái),以后上傳圖片都可以用。 使用場(chǎng)景:圖片上傳 如果我們把圖片全都放在上傳到webapp路徑下顯然是一種...
摘要:可以將稱(chēng)為追蹤服務(wù)器或調(diào)度服務(wù)器。虛擬磁盤(pán)路徑配置的虛擬路徑,與磁盤(pán)選項(xiàng)對(duì)應(yīng)。數(shù)據(jù)兩級(jí)目錄服務(wù)器在每個(gè)虛擬磁盤(pán)路徑下創(chuàng)建的兩級(jí)目錄,用于存儲(chǔ)數(shù)據(jù)文件。鏈接密碼把圖片服務(wù)器添加到中。要使用圖片服務(wù)器,需要保證網(wǎng)絡(luò)配置不變。 什么是FastDFS? FastDFS是用c語(yǔ)言編寫(xiě)的一款開(kāi)源的分布式文件系統(tǒng)。FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高...
摘要:可以將稱(chēng)為追蹤服務(wù)器或調(diào)度服務(wù)器。虛擬磁盤(pán)路徑配置的虛擬路徑,與磁盤(pán)選項(xiàng)對(duì)應(yīng)。數(shù)據(jù)兩級(jí)目錄服務(wù)器在每個(gè)虛擬磁盤(pán)路徑下創(chuàng)建的兩級(jí)目錄,用于存儲(chǔ)數(shù)據(jù)文件。鏈接密碼把圖片服務(wù)器添加到中。要使用圖片服務(wù)器,需要保證網(wǎng)絡(luò)配置不變。 什么是FastDFS? FastDFS是用c語(yǔ)言編寫(xiě)的一款開(kāi)源的分布式文件系統(tǒng)。FastDFS為互聯(lián)網(wǎng)量身定制,充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高...
閱讀 1862·2021-11-22 15:24
閱讀 1316·2021-11-12 10:36
閱讀 3219·2021-09-28 09:36
閱讀 1848·2021-09-02 15:15
閱讀 2762·2019-08-30 15:54
閱讀 2400·2019-08-30 11:02
閱讀 2400·2019-08-29 13:52
閱讀 3548·2019-08-26 11:53