由于公司要做一个app需要用到fastdfs上传问件,由于之前没有玩过,所以花了几天的时间,从零搭建fastdfs和ngnix。不多说废话,直接写教程。
博主的电脑是win7的,机子上已经安装了VMware,于是找来了一个CentOS Release 6.9的镜像直接全新安装。安装步骤不就像傻瓜式的安装。不过有一点要提的是,联网方式博主用的是桥接模式,为的是不让IP随便改变
然后修改虚拟机-》编辑-》虚拟网络编辑器,子网IP的网段要和自己本地的win的网段要一致。
然后检查虚拟机是否能上网,互ping一下是否能通,如果Ok那就没问题了。
基本的配置完了后面要开始正式操作了。
准备安装包
http://pan.baidu.com/s/1cEpFoq
安装过程
由于fastdfs5.0.5依赖libfastcommon,所以我们先安装libfastcommon,为了方便操作,首先切换到root用户,如果没有切换root用户,也可以用su root 回车+密码来切换root用户
su root
安装libfastcommon
我们把需要的安装包都上传到/usr/local文件目录下面,除了fastdfs-client-java-1.25.jar包
cd /usr/local
tar -xvf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh install
注意安装过程中的输出信息,如果没有报错就表示libfastcommon安装成功了。 由于libfastcommon.so默认安装到了/usr/lib64/libfastcommon.so,而FastDFS主程序设置的lib目录是/usr/local/lib,所以需要设置软连接:
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
至此libfastcommon安装成功了,接下来安装FastDFS
安装FastDFS_v5.05
首先解压fastdfs-5.05:
tar -xvf fastdfs-5.05.tar.gz
进入fastdfs-5.05目录:
cd fastdfs-5.05
依次执行下面命令
./make.sh
./make.sh install
如果没报错就表示安装成功了,创建了上面的软链接安装基本就没问题了
配置前的准备
先复制3份配置文件:
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf
我的CentOS的ip地址是:192.168.3.58(修改成自己机器上的ip地址就OK了), 用vim或者是gedit修改配置文件:
配置tracker
打开tracker.conf
gedit tracker.conf
修改配置文件的这几项(根据数据情况修改):
base_path=/home/test/fastdfs
bind_addr=192.168.3.58
启动trackerd服务:
fdfs_trackerd tracker.conf
通过如下命令查看trackerd服务是否启动:
netstat -tupln | grep trackerd
输出如下类似的信息表示已经启动了:
tcp 0 0 192.168.199.130:22122 0.0.0.0:* LISTEN 11309/fdfs_trackerd
也可以通过查看日志文件看下有没有出错(/home/test/fastdfs是前面配置的路径),如果没有报错,应该trackerd服务启动了:
vim /home/zq/fastdfs/logs/trackerd.log
配置storage
打开storage.conf:
gedit storage.conf
修改配置文件的这几项(根据数据情况修改):
base_path=/home/test/fastdfs
bind_addr=192.168.3.58 (这个可以为空)
store_path0=/home/test/fastdfs(上传文件的存储路径)
tracker_server=192.168.3.58:22122(指定trackerd服务的地址)
启动storaged服务:
fdfs_storaged storage.conf
通过如下命令查看storaged服务是否启动:
netstat -tupln | grep storaged
输出如下类似的信息表示已经启动了:
tcp 0 0 192.168.3.58:23000 0.0.0.0:* LISTEN 11413/fdfs_storaged
也可以通过查看日志文件看下有没有出错(/home/test/fastdfs是前面配置的路径),如果没有报错,应该storaged服务启动了:
gedit /home/test/fastdfs/logs/storaged.log
配置client并测试上传
打开client.conf:
gedit client.conf
修改配置文件的这几项(根据数据情况修改):
base_path=/home/test/fastdfs
tracker_server=192.168.3.58:22122
上传测试:
fdfs_upload_file client.conf client.conf.sample
将会上传client.conf.sample文件,如果看到类型下面的信息,那么恭喜你,配置成功了:
group1/M00/00/00/wKjHglYshRGAfbrTAAAFtTzeg5c.sample
安装和配置nginx插件
配置fastdfs-nginx-module
1 解压fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
2 修改config文件
cd fastdfs-nginx-module/src/
gedit config
修改配置,找到下面这行
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。(很重要,很重要,很重要)
3修改mod_fastdfs.conf,先复制一份到/etc/fdfs目录下
cp mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
gedit mod_fastdfs.conf
修改如下几项:
tracker_server=192.168.3.58:22122
store_path0=/home/test/fastdfs
base_path=/home/test/fastdfs
url_have_group_name = true(配置多个tracker时,应该将此项设置为true)
4建立文件服务器的软连接,并做一些需要的操作
建立软连接(配置文件中storage存放数据的路径):
ln -s /home/test/fastdfs/data /home/test/fastdfs/data/M00
将fastdfs-5.05配置目录下的2个文件复制到/etc/fdfs目录下:
cp /usr/local/fastdfs-5.05/conf/http.conf /etc/fdfs
cp /usr/local/fastdfs-5.05/conf/mime.types /etc/fdfs
安装nginx依赖
nginx依赖以下模块:
l gzip模块需要 zlib 库
l rewrite模块需要 pcre 库
l ssl 功能需要openssl库
1.安装pcre
获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
解压缩pcre-xx.tar.gz包。
进入解压缩目录,执行./configure。
依次执行make 和 make install命令
2.安装openssl
获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
解压缩openssl-xx.tar.gz包。
进入解压缩目录,执行./config。
依次执行make 和 make install命令
3.安装zlib
获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
解压缩zlib-xx.tar.gz包。
进入解压缩目录,执行./configure。
依次执行make 和 make install命令
安装和配置nginx:
解压nginx-1.7.8.tar.gz
tar -zxvf nginx-1.7.8.tar.gz
安装nginx(–prefix指定nginx安装到哪里, –add-module指定fastdfs-nginx-module的目录),
./configure –prefix=/usr/local/nginx –add-module=/usr/local/fastdfs-nginx-module/src/
执行完成后可以看到最后的输出:
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
然后依次执行下面的命令:
make
make install
配置nginx
打开nginx.conf配置文件
cd /usr/local/nginx/conf
gedit nginx.conf
在server节点加入下面的配置
#在最前面 把user的改为root
user root;
...
location /group1/M00{
root /home/test/fastdfs/data;
ngx_fastdfs_module;
}
打开浏览器输入:http://127.0.0.1,能看到下面的界面表示安装成功了!
接下来测试fdfs上传的文件是否也能显示,首先在桌面上准备一张图片:2.jpg,输入下面的命令
fdfs_upload_file /etc/fdfs/client.conf /home/zq/Desktop/2.jpg
返回的文件信息是:group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg
在浏览器输入:http://127.0.0.1/group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg,能看到如下的显示表示配置完成了:
至此配置完成了!
配置多台服务器的说明
1)nginx.conf
在server中增加配置:
访问路径不带group名(storage只有一个group的情况),如/M00/00/00/xxx:
location /M00 {
ngx_fastdfs_module;
}
访问路径带group名(storage对应有多个group的情况),如/group1/M00/00/00/xxx:
location ~ /group([0-9])/M00 {
ngx_fastdfs_module;
}
2)mod_fastdfs.conf
将fastdfs-nginx-module_v1.16解压目录fastdfs-nginx-module/src下的mod_fastdfs.conf复制到-DFDFS_MOD_CONF_FILENAME配置的目录下,如/etc/fdfs/。
修改配置:
tracker_server=192.168.199.130:22122 – tracker server的ip和端口,此处可以写多个tracker server,每行一个
url_have_group_name = true –访问路径带group时为true否则为false,多个group的情况下,必须为true,为false时,group_count必须为0
storage只有一个group的情况:
group=group1 –storage对应的group
store_path0=/home/zq/fastdfs –storage存储路径
group_count = 0
storage对应有多个group的情况:
url_have_group_name = true –必须设置为true才能支持多个group
group_count = 2 –storage的group个数
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/zq/fastdfs
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/zq/fastdfs2
Demo
在项目里导入fastdfs_client_v1.24.jar包
public class Fast {
/*
* 1、初始化全局配置。加载一个配置文件。
* 我的是client.conf里面的内容是tracker_server=192.168.206.133:22122(<span style="color:#ff0000;">这个ip是trackerIP就是在配置文件里经常配置的IP,里一个端口就不多说了</span>)
* */
public static void main(String[] args) throws Exception {
ClientGlobal.init("D:/project/Java6/src/client/client.conf");
//2.创建一个TrackerClient对象
TrackerClient trackerClient=new TrackerClient();
//3.创建一个TrackerServer对象
TrackerServer trackerServer=trackerClient.getConnection();
//4.声明一个StorageServer对象,为null
StorageServer storageServer=null;
//5.获得StorageClient对象
StorageClient storageClient=new StorageClient(trackerServer, storageServer);
//6.直接调用StorageClient对象方法上传文件即可。
String[] strs=storageClient.upload_file("C:/Users/WLSQ28/Desktop/d730ffebd2fefd6f906fc612a0c4f5ea.jpg", "jpg", null);
//7.可以打印出文件的地址,可以拼成URL访问
for(String str:strs){
System.out.println(str);
}
}
}