Linux下玩轉FastDFS
引言
FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。
FastDFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。
FastDFS環境搭建
安裝環境準備
FastDFS是C語言開發,建議在linux上運行,本教程使用Centos6.8作爲安裝環境。
- 安裝gcc 依賴環境(
yum install gcc-c++ -y
) - 安裝libevent(
yum -y install libevent
) - 安裝perl庫(
yum install perl*
) - 安裝zlib(
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
)
以上4個命令依次執行即可
安裝libfastcommon
將要用到的工具包上傳到centos的opt目錄下
可通過命令查看opt目錄下的文件
使用命令chmod +x 對剛剛傳輸過來的文件進行授權
- 解壓libfastcommonV1.0.7.tar.gz(
tar -zxvf libfastcommonV1.0.7.tar.gz
) - 進入到解壓後的文件夾中(
cd libfastcommon-1.0.7/
) - 進行編譯(
./make.sh
) - 安裝(
./make.sh install
) - 注意:libfastcommon安裝好後會自動將庫文件拷貝至/usr/lib64下,由於FastDFS程序引用usr/lib目錄所以需要將/usr/lib64下的庫文件拷貝至/usr/lib下(
cp /usr/lib64/libfastcommon.so /usr/lib/
)
以上命令無需截圖,按順序執行下來就行了,親測有效.
安裝tracker(FastDFS_v5.05.tar.gz)
- 在opt目錄下新建一個目錄fastdfs用於存儲文件(
mkdir /opt/fastdfs
) - 解壓FastDFS_v5.05.tar.gz(
tar -zxvf FastDFS_v5.05.tar.gz
) - 進入目錄(
cd FastDFS
) - 進行編譯(
./make.sh
) - 安裝(
./make.sh install
) - 進入conf配置目錄將文件都拷貝到/etc/fdfs(安裝時自動生成)(
cd /FastDFS/conf
)(cp * /etc/fdfs
) - 進入/etc/fdfs/,配置tracker.conf(
vi /etc/fdfs/tracker.conf
)
替換成以下配置(base_path=/opt/fastdfs
)
- storage的配置(storage不需要安裝,因爲安裝tracker時已經同時安裝)(
vi storage.conf
)這個文件也在/etc/fdfs目錄下
- fdfs_storage這個目錄需要新建
base_path=/opt/fastdfs
store_path0=/opt/fastdfs/fdfs_storage
tracker_server=192.168.219.130:22122(換成自己的Ip即可)
別忘了在/opt/fastdfs/目錄下新建fdfs_storage目錄
配置tracker和storage的啓動服務
- 進入/etc/init.d啓動腳本目錄,默認fastdfs已經生成(
cd /etc/init.d
) - 編輯fdfs_trackerd腳本文件(
vi fdfs_trackerd
)
- 因爲啓動腳本還在安裝目錄下,所以我們新建/usr/local/fdfs目錄,並且將啓動腳本cp到該目錄(
mkdir /usr/local/fdfs
) - 進入安裝目錄/opt/FastDFs(
cd /opt/FastDFS
) cp restart.sh /usr/local/fdfs
cp stop.sh /usr/local/fdfs
- 配置storage啓動服務(restart和stop腳本已經拷貝到/usr/local/fdfs下,所以storage只需要配置/etc/init.d/fdfs_storage腳本就可以了
cd /etc/init.d
) vi fdfs_storaged
- 將啓動腳本加入linux服務
chkconfig --add fdfs_trackerd
chkconfig --add fdfs_storaged
- 啓動腳本
service fdfs_trackerd start
service fdfs_storaged start
- 輸入
ps -ef|grep fdfs
查看進程!
測試
- 編輯/etc/fdfs/目錄下client.conf文件
vi /etc/fdfs/client.conf
base_path=/opt/fastdfs
tracker_server=192.168.216.130:22122
傳輸一張圖片到root目錄下
- 進入root目錄
cd /root
- 執行
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/1.jpg
可以看到上傳後的圖片地址,現在到windows上是不能訪問的。
要想windows能訪問,需要藉助nginx
可以到cd /opt/fastdfs/fdfs_storage/data
目錄下看到文件
安裝FastDFS-nginx-module插件
- 進入opt目錄(
cd /opt
) - 解壓fastdfs-nginx-module_v1.16.tar.gz(
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
) - 進入目錄(
cd fastdfs-nginx-module
) - 進入src目錄(
cd src
) - 編輯config文件(
vi config
)
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
- 將FastDFS-nginx-module插件整合fdfs的配置文件拷貝到fdfs的配置目錄下(整合fdfs的配置文件)
FastDFS-nginx-module/src下的mod_fastdfs.conf拷貝至/etc/fdfs/下(這裏面是兩個路徑) cp mod_fastdfs.conf /etc/fdfs
- 編輯
/etc/fdfs/mod_fastdfs.conf
文件(vi /etc/fdfs/mod_fastdfs.conf
)
base_path=/opt/fastdfs
tracker_server=192.168.216.129:22122
url_have_group_name = true
store_path0=/opt/fastdfs/fdfs_storage
安裝nginx
- 創建nginx/client目錄(
mkdir -p /var/temp/nginx/client
) - 進入opt目錄(
cd /opt
) - 解壓nginx-1.12.2.tar.gz(
tar -zxvf nginx-1.12.2.tar.gz
) - 進入解壓目錄(
cd nginx-1.12.2
)
一次性執行
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/opt/fastdfs-nginx-module/src
看到以下界面就說明執行成功了
-
編譯(
make
) -
安裝(
make install
) -
修改nginx配置文件(
vi /usr/local/nginx/conf/nginx.conf
)
-
進入/usr/local/nginx目錄(
cd /usr/local/nginx
) -
進入sbin(
cd sbin
) -
啓動nginx(
./nginx
)
需要關閉防火牆
service iptables stop
永久關閉chkconfig iptables off
到windows訪問
設置開機啓動nginx
vi /etc/rc.d/rc.local
touch /var/lock/subsys/local
/usr/local/nginx/sbin/nginx
下期再見。。。