在CentOS7下安裝TFS及Nginx-TFS(分布式文件系統TFS、Nginx-TFS模塊、TFS RESTful API)


1、編譯 gcc4.1.2

TFS太久沒更新了, 要用gcc4.1.2來編譯才比較順利

請參考我另一博客:在CentOS7.3上編譯gcc4.1.2 (gcc4.1.2、淘寶TFS) 


2、安裝一些依賴包

# yum install -y automake.noarch libtool.x86_64 readline-devel.x86_64 zlib-devel.x86_64 e2fsprogs-devel.x86_64 google-perftools.x86_64
# yum install -y e2fsprogs-devel uuid-devel libuuid-devel



3、安裝tb-common-utils

TFS要依賴淘寶的這個什么庫,反正我照着它的說明安裝吧!


1)、設置TBLIB_ROOT環境變量

在~/.bash_profile文件中加入,export TBLIB_ROOT=path_to_tbutil , 然后執行source ~/.bash_profile

2)、下載源碼

# svn co -r 18 http://code.taobao.org/svn/tb-common-utils/trunk tb-common-utils
注意: 這里不要checkout最新版本,version18以后的修改導致部分接口不能前向兼容。

3)、編譯安裝

# cd tb-common-utils
# sh build.sh



4、安裝TFS


1)、下載源碼

# svn co http://code.taobao.org/svn/tfs/branches/dev_for_outer_users tfs

2)、編譯安裝

# cd tfs
# sh build.sh init
# ./configure --prefix=/usr/local/tfs --with-release --without-tcmalloc
# make
# make install

(提示:上面第一步,把gcc替換為4.1.2版本了,所以這里安裝成功后,建議把gcc恢復回原來的版本)


5、配置TFS

tfs的配置說明,字段比較多,請參考官方文檔,這里圈出一些當前的配置;
一般使用,可以只要兩個配置文件,ds.conf 和 ns.conf,如果安裝目錄沒有,請從源碼conf目錄復制過來。


ns.conf的配置如下:


ns.conf的配置如下:


(注意:上面 ip_addr_list一定要兩個ip以上,如果只有一個ip,其它的請寫不存在的ip)



6、初始化dataserver


首先掛載一塊ext4格式的硬盤到 /data/disk1,(可參考: 格式化和掛載數據盤
然后修改 ds.conf文件,如圖:


(注意:mount-maxsize 不能超過你掛載的硬盤的大小)


執行格式化命令,后面的1代表的是第一塊硬盤,如下:

./scripts/stfs format 1


7、啟動tfs

#啟動nameserver
./bin/nameserver -f conf/ns.conf -d
#啟動dataserver
./bin/dataserver -f conf/ds.conf -i 1 -d
啟動后,可以試用是否正常,如下(寫文件和讀文件):
echo 'hello tfs'>testfile
./bin/tfstool -s 192.168.1.237:8100 -i "put testfile"
./bin/tfstool -s 192.168.1.237:8100 -i "get T1QEBXXDpXXXXXXXXX localfile"

(至此, TFS的安裝已經完成, 下面是安裝  Nginx-TFS模塊, 從而通過 http方式操作TFS文件)



8、安裝nginx-tfs模塊


1)、安裝yajl

unzip yajl-master.zip
./configure
make && make install
#提示沒有安裝cmake, yum -y install cmake


如果出現下面錯誤


檢查下gcc版本,如果是前面安裝的那個4.1.2會出錯,切換回原來的!切換后 make clean 后再 make就可以了。


2)、安裝pcre

tar xvf pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre
make
make install


3)、解壓nginx-tfs模塊

我這里解壓到 /usr/local/nginx-tfs 目錄



4)、安裝nginx

tar xvf nginx-1.2.9.tar.gz
cd nginx-1.2.9
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-tfs
make
make install

如果執行 ./configure 有報下面錯誤:


執行“yum -y install pcre-devel”安裝 pcre-devel 后再次執行 ./configure 即可!


5)、配置nginx

在nginx.conf配置文件中添加下圖圈的內容。


(注意:type要為ns,server就是nameserver服務器的ip和端口)


配置完成后,就可以啟動nginx

/usr/local/nginx/sbin/nginx
如果啟動報了如下錯誤:

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libyajl.so.2: cannot open shared object file: No such file or directory
解決方法:
ln -s /usr/local/lib/libyajl.so.2 /usr/lib64/libyajl.so.2
然后再次啟動即可!



9、用Web訪問文件


先寫入一個文件,參考官方說明,命令如下(testfile這文件自己創建):

cd /usr/local/tfs/
./bin/tfstool -s 192.168.1.237:8100 -i "put testfile"

如果上傳成功,會有“success”相關提示,記錄好文件id,這里是“ T1kRJTByJT1RCvBVdK“


根據上面文件id,得知鏈接是:http://192.168.1.237/v1/tfs/T1kRJTByJT1RCvBVdK,訪問如圖:



具體的文件操作接口,請參考官方文檔,這里主要是安裝與測試是否能使用!



10、測試文件上傳


根據API,我這里弄了個上傳頁(注意:由於服務端把整個Post體當作文件內容,所以這個頁上傳的文件會被在開頭追加一些內容,我這示例是有問題的),
這里只為了測試能否寫入文件。(我把上傳頁也保存在tfs中,鏈接:http://192.168.1.237/v1/tfs/T1YaJTByJT1RXx1p6K.html)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="http://192.168.1.237/v1/tfs" >
<input type="file" name="file" value="選擇文件" />
<br /><br /> <!-- 注意:這個上傳是有問題的,服務端接收了整個Post體當作文件內容 -->
<input type="submit" value="開始上傳" />
</form>
</body>
</html>


對於上傳大文件,可以調一下nginx的大小限制,在nginx.conf的http區域中添加"client_max_body_size",如下:




11、優化下nginx配置


配置 nginx在 /v1/tfs 和 /file 開頭的URI時才用 tfs,如:

        location /v1/tfs {
root html;
index index.html index.htm;
tfs_pass tfs://tfs_rc;
}


location /file {
root html;
index index.html index.htm;
rewrite ^/file(.*)$ /v1/tfs$1 break;
tfs_pass tfs://tfs_rc;
}


location / {
root html;
index index.html index.htm;
}

如圖:



(完)


參考: TFS官方文檔:https://github.com/alibaba/tfs/blob/master/INSTALL.md Nginx-TFS官方文檔: https://github.com/alibaba/nginx-tfs TFS - nginx-tfs模塊:http://blog.csdn.net/wei_xiaox126/article/details/42176689 TFS的nginx模塊配置:http://ylw6006.blog.51cto.com/470441/1558631/ CentOS 5下安裝tfs並使用Nginx做訪問:http://www.linuxidc.com/Linux/2014-07/104896.htm


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com