--软件包下载 for centos7
https://pan.baidu.com/s/16ZpdAZk9IxWibNkG3ltqsg 提取码:12ie
--1.1 安装libfastcommon
--上传软件包到/opt
cd /opt
unzip libfastcommon-master.zip
cd libfastcommon-master
./make.sh
./make.sh install
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
--File exists
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
--1.2安装FastDFS
cd /opt
unzip fastdfs-5.11_2.zip
cd fastdfs-5.11
./make.sh
./make.sh install
cd /etc/fdfs/
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
1.3安装tracker
mkdir -p /usr/yong.cao/dev/fastdfs/fastdfs_tracker
vim /etc/fdfs/tracker.conf
disabled=false #默认开启
port=22122 #默认端口号
base_path=/usr/yong.cao/dev/fastdfs/fastdfs_tracker #我刚刚创建的目录
http.server_port=6666 #默认端口是8080
service fdfs_trackerd start
--如果不能启动,或提示用systemctl可改用命令:
#systemctl start fdfs_trackerd
--目录中多了data和log两个目录
ll /usr/yong.cao/dev/fastdfs/fastdfs_tracker/
chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local
service fdfs_trackerd start
netstat -unltp|grep fdfs
--1.4 安装storage
mkdir -p /usr/yong.cao/dev/fastdfs/fastdfs_storage_data
mkdir -p /usr/yong.cao/dev/fastdfs/fastdfs_storage
ll /usr/yong.cao/dev/fastdfs/
--base_path,base_path0,store_path0修改为正确的路径web可以访问图片
vim /etc/fdfs/storage.conf
disabled=false
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
base_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data #实际文件存储路径
tracker_server=192.168.92.97:22122 #我CentOS7的ip地址
http.server_port=8888 #设置 http 端口号
#修改store_path0
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data
ln -s /usr/bin/fdfs_storaged /usr/local/bin
service fdfs_storaged start
--如果不能启动,或提示用systemctl可改用命令:
#systemctl start fdfs_storaged
vim /etc/rc.d/rc.local
service fdfs_storaged start
netstat -unltp | grep fdfs
--校验整合,storage是否注册到了tracker中去
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
--成功后可以看到:
ip_addr = 192.168.92.97 (localhost.localdomain) ACTIVE
vim /etc/fdfs/client.conf
base_path=/usr/yong.cao/dev/fastdfs/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.92.97:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker的设置对应起来
--1.5 FastDFS整合nginx
--测试
mkdir -p /usr/yong.cao/ftp
--上传architecture-V4.8.jpg到/usr/yong.cao/ftp
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/yong.cao/ftp/architecture-V4.8.jpg
--成功后会返回图片的路径:group1/M00/00/00/architecture-V4.8.jpg
组名:group1
磁盘:M00
目录:00/00
文件名称:wKhcYV5uHJuAFbgKACFk3PeyYRw5.8.jpg
--data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件
cd /usr/yong.cao/dev/fastdfs/fastdfs_storage_data
ls
cd 00
ls
--http协议,我们去浏览器用http请求访问一下刚刚的图片:此时无法访问,需要集成nginx模块做反向代理
http://192.168.92.97:8888/group1/M00/00/00/wKhcYV5uHJuAFbgKACFk3PeyYRw5.8.jpg
--FastDFS的nginx模块安装
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
mkdir -p /usr/yong.cao/dev/nginx
mv nginx-1.12.0.tar.gz /usr/yong.cao/dev/nginx
mv fastdfs-nginx-module-1.20.zip /usr/yong.cao/dev/nginx
cd /usr/yong.cao/dev/nginx/
tar -zxvf nginx-1.12.0.tar.gz
--不能用fastdfs-nginx-module-master.zip
unzip fastdfs-nginx-module-1.20.zip
--设置软连接不可以 ln -s /usr/include /usr/local/include
vim /usr/yong.cao/dev/nginx/fastdfs-nginx-module-1.20/src/config 修改为,保持原位置不变
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cd /usr/yong.cao/dev/nginx/nginx-1.12.0
./configure --prefix=/usr/local/nginx --add-module=/usr/yong.cao/dev/nginx/fastdfs-nginx-module-1.20/src #解压后fastdfs-nginx-module所在的位置
--如果报错的话,很可能是版本的原因
--/opt/fastdfs-nginx-module-master/src/config文件按照如上修改,解决error:/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory
--忽略 make[1]: Leaving directory `/usr/yong.cao/dev/nginx/nginx-1.12.0'
make
make install
--root /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data,fastdfs_storage_data修改为fastdfs_storage
--8888端口应该与/etc/fdfs/storage.conf的http.server_port一致
vi /usr/local/nginx/conf/nginx.conf
server {
listen 8888;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~/group1/M00 {
root /usr/yong.cao/dev/fastdfs/fastdfs_storage/data;
ngx_fastdfs_module;
}
}
cd /opt/fastdfs-5.11/
cp http.conf mime.types /etc/fdfs/
scp /usr/yong.cao/dev/nginx/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
--fdfs的对应nginx模块的配置,修改为storage.conf对应目录
vim /etc/fdfs/mod_fastdfs.conf
base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage #保存日志目录
tracker_server=192.168.92.97:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data #存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
--#在文件的最后,设置group
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data
store_path1=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data
# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage/data
--ln -s /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data/ /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data/M00
ln -s /usr/yong.cao/dev/fastdfs/fastdfs_storage/data/ /usr/yong.cao/dev/fastdfs/fastdfs_storage/data/M00
--启动nginx:
/usr/local/nginx/sbin/nginx
--打开web
http://192.168.92.97:9999
--配置tracker nginx
cd /usr/yong.cao/dev/nginx
mkdir -p /usr/yong.cao/dev/nginx2
tar -zxvf nginx-1.12.0.tar.gz -C /usr/yong.cao/dev/nginx2/
cd /usr/yong.cao/dev/nginx2/nginx-1.12.0
./configure --prefix=/usr/local/nginx2 --add-module=/usr/yong.cao/dev/nginx/fastdfs-nginx-module-1.20/src #解压后fastdfs-nginx-module所在的位置
make
make install
--添加location /group1/M00,注释location / {
vim /usr/local/nginx2/conf/nginx.conf
upstream fdfs_group1 {
server 127.0.0.1:9999;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
#location / {
# root html;
# index index.html index.htm;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
--启动nginx:
/usr/local/nginx2/sbin/nginx
--无法访问上传的图片,http测试,请求访问一下刚刚的图片 group1/M00/00/00/wKhcYV5uSBGAU7AbACFk3PeyYRw6.8.jpg
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/yong.cao/ftp/architecture-V4.8.jpg
group1/M00/00/00/wKhcYV5uSBGAU7AbACFk3PeyYRw6.8.jpg
ll /usr/yong.cao/dev/fastdfs/fastdfs_storage/data/M00/00/00
http://192.168.92.97:8888/group1/M00/00/00/wKhcYV5uHJuAFbgKACFk3PeyYRw5.8.jpg
--error:404 Not Found,目录问题,修改/etc/fdfs/storage.conf, /etc/fdfs/mod_fastdfs.conf的目录,并重启文件系统服务 systemctl restart fdfs_storaged
http://192.168.92.97:8888/group1/M00/00/00/wKhcYV5uSBGAU7AbACFk3PeyYRw6.8.jpg
--------------------------------
防火墙端口设置
成功了,为什么还要讲这个呢。因为有些同学到这里,还是不到访问,很可能是防火墙没有开启相应的端口。防火墙这个东西我建议大家还是不要关闭,虽然麻烦了一点。
查看已开启的端口:
firewall-cmd --zone=public --list-ports
20880/tcp 80/tcp 2181/tcp 23000/tcp 22122/tcp 9999/tcp
这两个端口要开启,到时候下一篇讲fastdfs-client-javas可能会造成无法连接。
9999和80端口是提供给nginx访问的。
开放端口号命令:–permanent表示永久生效,不加的话,重启后不生效
firewall-cmd --zone=public --add-port=23000/tcp --permanent #开户端口号
CentOS7 防火墙相关命令:
systemctl enable firewalld.service #开启防火墙
systemctl stop firewalld.service #关闭防火墙(开机会仍会启动)
systemctl disable firewalld.service #禁用防火墙(开机后不再启动)
--------------------------------------------------------------------------------------------------------------------------
CentOS7搭建FastDFS V5.11分布式文件系统及Java整合详细过程(四)
1.下载fastdfs-client-java
1.1 下载源码
在前面,FastDFS是环境都部署好了,接下来的整合,将变得相当容易。在我之前的教程里,已经将fastdfs-client-java-master下载好了。
如果下载有问题,或者连接时有问题。我这里提供我测试通过,目前最新版本fastdfs-client-java V1.26的下载链接。
1.2 maven install
解压后,在eclipse中导入maven项目:import->maven->existing maven projects。
修改pom.xml
第一个plugins是必需要的,是maven用来编译的插件,第二个是maven打源码包的,可以不要。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<encoding>UTF-8</encoding>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
直接项目右键,run as maven install
我本地机的是jdk1.8编译的。我在作者的源码中发现,最新版本用jdk1.6就可以编译成功。
install成功后,fastdfs-client-java就成功的被安装到本地仓库了。
[INFO] --- maven-install-plugin:2.4:install (default-install) @ fastdfs-client-java ---
[INFO] Installing C:workspacefastdfs-client-java argetfastdfs-client-java-1.27-RELEASE.jar to C:Jerold.Tsaomaven
epositoryorgcsourcefastdfs-client-java1.27-RELEASEfastdfs-client-java-1.27-RELEASE.jar
[INFO] Installing C:workspacefastdfs-client-javapom.xml to C:Jerold.Tsaomaven
epositoryorgcsourcefastdfs-client-java1.27-RELEASEfastdfs-client-java-1.27-RELEASE.pom
[INFO] Installing C:workspacefastdfs-client-java argetfastdfs-client-java-1.27-RELEASE-sources.jar to C:Jerold.Tsaomaven
epositoryorgcsourcefastdfs-client-java1.27-RELEASEfastdfs-client-java-1.27-RELEASE-sources.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.879 s
[INFO] Finished at: 2017-06-17T22:24:11+08:00
[INFO] Final Memory: 12M/113M
[INFO] ------------------------------------------------------------------------
2.编写工具类:
把fdfs_client.conf文件复制一份放到自己项目的resource下面:
修改tracker.server,其它的都不用动:
tracker_server = 192.168.92.97:22122
我的工具类是这样写的:
3.Spring MVC上传图片
Spring MVC实现上传:
值得注意的是Spring MVC要支持上传文件需要在spring-mvc配置文件中添加:
<!-- 图片上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
以上实现细节提供原码下载:
https://download.****.net/download/m0_37797991/9873329