在之前的博客中,我有说到,我最喜欢用Yum在线安装的方式安装软件,简单省事儿。现在看来,也不尽然,关键是,无法快速找到我要的文件,整个whereis 也很累。所以,现在觉得,还是乖乖的整个压缩包,自行安装比较和我心意。
首先,要用到的压缩包列表:
安装步骤概况:
1,安装运行环境包libevent工具包
2,安装libfastcommon工具包
3,安装Tracker服务
4,安装storage服务
5,安装Nginx提供HTTP服务
5.1,需要重新编译Nginx,所以需要处理fastdfs-nginx-module插件(简单)
详细安装步骤:
友情提示:最好是把需要的压缩包聚集到一个目录下,然后解压的时候,在一个自己知道的地方,没什么别的意思或者深意,只是为了自己方便找一些文件,然后操作文件的时候快一点。(你要是写半天的cp或者rm,结果发现写不出目录,就呵 呵影响心情了)
1,安装运行环境包libevent工具包
这一步是极其简单粗暴的,一行命令:yum -y install libevent
2,安装libfastcommon工具包
1, 解压缩: tar -zxvf 压缩包所在位置
2, ./make.sh
3, ./make.sh install
4, 把/usr/lib64/libfastcommon.so文件向/usr/lib/下复制一份
备注:编译安装的时候,注意一下当前所在文件的位置。 不跟我这个猴子派来的DB学习,当前,我可是在根目录下执行./make.sh,还傻傻闹不懂,为毛不成功
3,安装Tracker服务
2、./make.sh
3、./make.sh install
安装后在/usr/bin/目录下有以fdfs开头的文件都是编译出来的。
配置文件都放到/etc/fdfs文件夹
4、把/root/FastDFS/conf目录下的所有的配置文件都复制到/etc/fdfs下。
5、配置tracker服务。修改/root/FastDFS/conf/tracker.conf文件。
重启使用命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
4,安装storage服务
/usr/bin/fdfs_storaged/etc/fdfs/storage.confrestart
5,安装Nginx提供HTTP服务
./configure \
--prefix=/var /nginx \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/nginx/client\
--http-proxy-temp-path=/var/nginx/proxy\
--http-fastcgi-temp-path=/var/nginx/fastcgi\
--http-uwsgi-temp-path=/var/nginx/uwsgi\
--http-scgi-temp-path=/var/nginx/scgi\
--add-module=/usr/local/fastdfs-nginx-module/src
附录:最开始的config配置
./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
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
4、make
5、makeinstall
6、把/root/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下。编辑四个地方:1,base_path=/tmp(日志存放路径) 2,tracker_server=IP:22122(tracker服务器地址) 3,url_have_group_name=true 4,store_path0=/home/fastdfs/storage (图片保存路径,注意和storage服务配置相对应)7、配置nginx
在nginx的配置文件中添加一个Server:
server {
listen 80;
server_name 192.168.101.3;
location /group1/M00/{
#root /home/FastDFS/fdfs_storage/data;
ngx_fastdfs_module;
}
}
8、将libfdfsclient.so拷贝至/usr/lib下
cp/usr/lib64/libfdfsclient.so /usr/lib/
9、启动nginx
附:使用的基本代码
1,FastDFSClient
package taotao.utils; import org.csource.common.NameValuePair; import org.csource.fastdfs.*; /** * Created by Angelina on 2017/6/7. */ public class FastDFSClient { private TrackerClient trackerClient = null; private TrackerServer trackerServer = null; private StorageServer storageServer = null; private StorageClient1 storageClient = null; public FastDFSClient(String conf) throws Exception { if (conf.contains("classpath:")) { String url = this.getClass().getResource("/").getPath(); url = url.substring(1); conf = conf.replace("classpath:", url); } ClientGlobal.init(conf); trackerClient = new TrackerClient(); trackerServer = trackerClient.getConnection(); storageServer = null; storageClient = new StorageClient1(trackerServer, storageServer); } public String uploadFile(String fileName, String extName, NameValuePair[] metas) throws Exception { return storageClient.upload_file1(fileName, extName, metas); } public String uploadFile(String fileName, String extName) throws Exception { return storageClient.upload_file1(fileName, extName, null); } public String uploadFile(String fileName) throws Exception { return storageClient.upload_file1(fileName, null, null); } public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) throws Exception { return storageClient.upload_file1(fileContent, extName, metas); } public String uploadFile(byte[] fileContent, String extName) throws Exception { return storageClient.upload_file1(fileContent, extName, null); } public String uploadFile(byte[] fileContent) throws Exception { return storageClient.upload_file1(fileContent, null, null); } }2,应用实例
@Value("${IMAGE_SERVER_BASE_URL}") private String IMAGE_SERVER_BASE_URL; @Override public PictureResult uploadPic(MultipartFile picFile){ PictureResult result=new PictureResult(); //check the picture if (picFile.isEmpty()){ result.setError(1); result.setMessage("the file not found"); return result; } //upload the picture to the server try{ //get the file's extension String originalFilename=picFile.getOriginalFilename(); String extName=originalFilename.substring(originalFilename.lastIndexOf(".")+1); FastDFSClient client=new FastDFSClient("classpath:properties/client.conf"); String url=client.uploadFile(picFile.getBytes(),extName); //stitching the URL url=IMAGE_SERVER_BASE_URL+url; result.setError(0); result.setUrl(url); }catch(Exception e){ e.printStackTrace(); } return result; }