[size=x-large]一、前期准备[/size]
安装nginx和FastDFS,并保证能正常运行。
下载nginx和FastDFS的集成模块,fsatdfs-nginx-module_v1.16.tar.gz,存放到/usr/local/FastDFS目录下,并执行tar –zxvf fsatdfs-nginx-module_v1.16.tar.gz解压.
[size=x-large]二、集成[/size]
进入/usr/local/hjlc_file/nginx-1.6.2(这是nginx的源码路径,不是nginx的安装路径),执行configure进行配置,命令如下:
上述命令成功执行后,再执行make进行编译(注意:这里不需要覆盖安装,不要执行make install),编译过后,将源码目录中objs目录下的nginx复制到nginx安装目录的sbin下即可。
然后将fastdfs-nginx-module模块的src目录下的mod_fastdfs.conf文件复制到/etc/fdfs/目录下。
[size=x-large]三、配置[/size]
配置mod_fastdfs.conf,修改以下信息:
#保存日志目录
base_path=/usr/local/FastDFS/logs
#tracker服务器的IP地址以及端口号
tracker_server=172.18.8.35:22122
#storage服务器的端口号
storage_server_port=23000
#文件url中是否有group名
url_have_group_name= true
#存储路径个数,需要和store_path个数匹配
store_path_count=1
#存储路径,多个路径用1,2,3..来区分如store_path1,store_path2,store_path3
store_path0=/usr/local/fast_dfs_storage
配置好后,重启nginx和FastDFS。
配置/usr/local/nginx/conf/nginx.conf,通过url,将请求转到FastDFS的存储目录,
增加一个server节点,监听13110端口,FastDFS返回url格式为group1/M00/00/00/xxxx,location ~.*/M00就是配置当遇到FastDFS请求时,访问存储目录。
[size=x-large]四、java客户端开发[/size]
下载FastDFS的java客户端jar包fastdfs_client_v1.20.jar。
在项目中增加fdfs_client.conf配置文件,内容如下:
connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
tracker_server = 172.18.8.35:22122
Java代码:
安装nginx和FastDFS,并保证能正常运行。
下载nginx和FastDFS的集成模块,fsatdfs-nginx-module_v1.16.tar.gz,存放到/usr/local/FastDFS目录下,并执行tar –zxvf fsatdfs-nginx-module_v1.16.tar.gz解压.
[size=x-large]二、集成[/size]
进入/usr/local/hjlc_file/nginx-1.6.2(这是nginx的源码路径,不是nginx的安装路径),执行configure进行配置,命令如下:
./configure --with-pcre=/usr/local/hjlc_file/pcre-8.38 --with-zlib=/usr/local/hjlc_file/zlib-1.2.7 --with-openssl=/usr/local/hjlc_file/ openssl-1.0.0a --add-module=/usr/local/FastDFS/fastdfs-nginx-module/src
上述命令成功执行后,再执行make进行编译(注意:这里不需要覆盖安装,不要执行make install),编译过后,将源码目录中objs目录下的nginx复制到nginx安装目录的sbin下即可。
然后将fastdfs-nginx-module模块的src目录下的mod_fastdfs.conf文件复制到/etc/fdfs/目录下。
[size=x-large]三、配置[/size]
配置mod_fastdfs.conf,修改以下信息:
#保存日志目录
base_path=/usr/local/FastDFS/logs
#tracker服务器的IP地址以及端口号
tracker_server=172.18.8.35:22122
#storage服务器的端口号
storage_server_port=23000
#文件url中是否有group名
url_have_group_name= true
#存储路径个数,需要和store_path个数匹配
store_path_count=1
#存储路径,多个路径用1,2,3..来区分如store_path1,store_path2,store_path3
store_path0=/usr/local/fast_dfs_storage
配置好后,重启nginx和FastDFS。
配置/usr/local/nginx/conf/nginx.conf,通过url,将请求转到FastDFS的存储目录,
server {
listen 13110;
server_name 127.0.0.1;
charset utf-8;
location ~.*/M00 {
root /usr/local/fast_dfs_storage/data/;
ngx_fastdfs_module;
}
}
增加一个server节点,监听13110端口,FastDFS返回url格式为group1/M00/00/00/xxxx,location ~.*/M00就是配置当遇到FastDFS请求时,访问存储目录。
[size=x-large]四、java客户端开发[/size]
下载FastDFS的java客户端jar包fastdfs_client_v1.20.jar。
在项目中增加fdfs_client.conf配置文件,内容如下:
connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
tracker_server = 172.18.8.35:22122
Java代码:
//初始化(通过文件),忽略异常处理
String url = getClass().getResource("/fdfs_client.conf").getFile();
url = java.net.URLDecoder.decode(url,"utf-8");
ClientGlobal.init(url);
也可以通过自己设置参数来初始化,代码如下:
//初始化(手动初始化参数)
ClientGlobal.setG_connect_timeout(3000);
ClientGlobal.setG_charset(“UTF-8”);
ClientGlobal.setG_network_timeout(30000);
ClientGlobal.setG_tracker_http_port(80);
ClientGlobal.setG_anti_steal_token(false);
InetSocketAddress[] group = new InetSocketAddress[1];
group[i] = new InetSocketAddress(“172.18.8.35”,22122);
ClientGlobal.setG_tracker_group(new TrackerGroup(group));
//上传,忽略异常处理
String url = "";
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = null;
FileInputStream fis = null;
trackerServer = trackerClient.getConnection();
StorageServer storageServer = null;
StorageClient client = new StorageClient(trackerServer, storageServer);
fis = new FileInputStream(file);
byte[] file_buff = null;
if(fis != null){
int len;
len = fis.available();
file_buff = new byte[len];
fis.read(file_buff);
}
String[] result = null;
result = client.upload_file(file_buff, FilenameUtils.getExtension(file.getName()), null);
result为返回的参数result[0]为分组名,如group1,result[1]为目录地址:如/M00/00/00/XXXX
//删除,忽略异常处理
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = null;
trackerServer = trackerClient.getConnection();
StorageServer storageServer = null;
StorageClient1 client = new StorageClient1(trackerServer, storageServer);
if(url.indexOf("/") == 0)
{
url = url.substring(1);
}
client.delete_file1(url);