您现在的位置是:主页 > news > 上海虹口网站制作/太原seo顾问
上海虹口网站制作/太原seo顾问
admin2025/6/8 5:33:11【news】
简介上海虹口网站制作,太原seo顾问,记事本怎样做网站,建设机械官方网站文章目录6.FastDFS安装和使用6.1 安装总体介绍6.2 安装libfastcommon (安装方式二选一)6.3 安装fastdfs (安装方式二选一)6.4 安装fastdfs-nginx-module (安装方式二选一)6.5 安装nginx (安装方式二选一)7.单机部署fastdfs8.集群部署fastdfs9.java整合fastDFSfastdfs-client-ja…
文章目录
- 6.FastDFS安装和使用
- 6.1 安装总体介绍
- 6.2 安装libfastcommon (安装方式二选一)
- 6.3 安装fastdfs (安装方式二选一)
- 6.4 安装fastdfs-nginx-module (安装方式二选一)
- 6.5 安装nginx (安装方式二选一)
- 7.单机部署fastdfs
- 8.集群部署fastdfs
- 9.java整合fastDFS
- fastdfs-client-java使用
6.FastDFS安装和使用
6.1 安装总体介绍
-
- 首先安装libfastcommon (fastdfs依赖的函数库)
-
- 接着安装fastdfs(其实就是把client , tracker ,storage安装完成了)
-
- 接下来安装fastdfs-nginx-module (fastdfs提供对nginx的依赖模块)
-
- 最后安装nginx(如果此前安装好了,可以不用重新安装)
注意: 安装分为在线安装(要求提供良好的网络)或者离线安装(将相关的软件包下载下来后离线安装,安装资料在资料\fastdfs\安装包)
-
-
安装之前,创建两个目录
/usr/local/soft: 安装包所在的目录,执行命令: mkdir -p /usr/local/soft
/data/fastdfs: 数据所在的目录(fastdfs上传文件和日志所在的目录) 执行命令: mkdir -p /data/fastdfs
-
6.2 安装libfastcommon (安装方式二选一)
-
在线安装
步骤一: git clone https://github.com/happyfish100/libfastcommon.git --depth 1 步骤二: cd libfastcommon/ 步骤三:#编译安装 ./make.sh && ./make.sh install
-
离线安装
步骤一: unzip libfastcommon-master.zip 步骤二: cd libfastcommon-master 步骤三: ./make.sh && ./make.sh install
6.3 安装fastdfs (安装方式二选一)
-
在线安装
cd ../ #返回上一级目录 ,回到soft所在的目录 git clone https://github.com/happyfish100/fastdfs.git --depth 1 #下载fastdfs.git cd fastdfs/ #进入fastdfs ./make.sh && ./make.sh install #编译安装 #供nginx访问使用 cp /usr/local/soft/fastdfs/conf/http.conf /etc/fdfs/ cp /usr/local/soft/fastdfs/conf/mime.types /etc/fdfs/
-
离线安装
步骤一: unzip fastdfs-master.zip #首先切换到soft目录 步骤二: cd fastdfs-master 步骤三: ./make.sh && ./make.sh install#供nginx访问使用 cp /usr/local/soft/fastdfs-master/conf/http.conf /etc/fdfs/ cp /usr/local/soft/fastdfs-master/conf/mime.types /etc/fdfs/
6.4 安装fastdfs-nginx-module (安装方式二选一)
-
在线安装
cd ../ #返回上一级目录 git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1 cp /usr/local/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
-
离线安装
步骤一: unzip fastdfs-nginx-module-master.zip 步骤二: cp /usr/local/soft/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs
6.5 安装nginx (安装方式二选一)
-
在线安装
wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包 tar -zxvf nginx-1.15.4.tar.gz #解压 cd nginx-1.15.4/ #添加fastdfs-nginx-module模块 ./configure --add-module=/usr/local/soft/fastdfs-nginx-module/src/ make && make install #编译安装
-
离线安装
步骤一: tar -zxvf nginx-1.8.1.tar.gz #切换到/usr/local/soft目录下面 步骤二: 安装nginx依赖sudo apt-get install openssl libssl-devsudo apt-get install libpcre3 libpcre3-devsudo apt-get install zlib1g-dev 步骤三: 切换进入nginx目录cd /usr/local/soft/nginx-1.8.1 步骤四: 将fastdfs提供的nginx依赖配置到nginx里面sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master/src(对应的绝对路径) 步骤五: make &&make install如果执行步骤五错,那么首先删除nginx-1.8.1/objs/Makefile这个文件, 命令为: rm -rf /usr/local/soft/nginx-1.8.1/objs/Makefile 然后再次执行步骤五
7.单机部署fastdfs
-
注意注意!!!
由于离线安装和在线安装,生成的配置文件名称不一致,
如果是离线安装,那么需要修改配置文件名称
#执行如下命令 cd /etc/fdfs mv tracker.conf.sample tracker.conf mv storage.conf.sample storage.conf mv client.conf.sample client.conf
-
步骤一: 配置虚拟主机
比如: 编辑虚拟机的host文件: vim /etc/hosts 添加这段内容: 192.168.200.13 fastdfs.com 注意: ip写自己主机的ip, fastdfs.com域名 可以随意起.如果通过windows浏览器访问虚拟机的fastdfs,同时需要配置C:\Windows\System32\drivers\etc\hosts文件 添加这段内容: 192.168.200.131 www.fastdfs.com
-
步骤二: 配置tracker
vim /etc/fdfs/tracker.conf #需要修改的内容如下 port=22122 # tracker服务器端口(默认22122,一般不修改) base_path=/data/fastdfs # 存储日志和数据的根目录
-
步骤三: 配置storage
vim /etc/fdfs/storage.conf #需要修改的内容如下 port=23000 # storage服务端口(默认23000,一般不修改) base_path=/data/fastdfs # 数据和日志文件存储根目录 store_path0=/data/fastdfs # 第一个存储目录 tracker_server=fastdfs.com:22122 # tracker服务器IP和端口 http.server_port=80 # http访问文件的端口(默认8888,看情况修改,和nginx的端口中保持一致)
-
步骤四: 启动服务测试
- 先启动服务
# 永久关闭防火墙 systemctl disable firewalld.service #启动tracker /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf #启动storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf # 重启storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
-
client测试
vim /etc/fdfs/client.conf #需要修改的内容如下 base_path=/data/fastdfs tracker_server=fastdfs.com:22122 #tracker服务器IP和端口 #保存后测试,返回ID表示成功 如:group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg # 上传文件 fdfs_upload_file /etc/fdfs/client.conf /usr/local/soft/fox.jpg # 删除文件 fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgDCmD1LHaADXrMAAW3EDO1WQ106.jpg
-
步骤五: 配置nginx访问(client)
vim /etc/fdfs/mod_fastdfs.conf#需要修改的内容如下tracker_server=fastdfs.com:22122 #tracker服务器IP和端口url_have_group_name=truestore_path0=/data/fastdfs #配置nginx.configvim /usr/local/nginx/conf/nginx.conf #添加如下配置 server {listen 80; ## 该端口为storage.conf中的http.server_port相同server_name localhost;location ~/group[0-9]/ {ngx_fastdfs_module;} error_page 500 502 503 504 /50x.html;location = /50x.html {root html;} }
Nginx测试:
1.启动服务
/usr/local/nginx/sbin/nginx #启动nginx /usr/local/nginx/sbin/nginx -s reload #重启nginx /usr/local/nginx/sbin/nginx -s stop #停止nginx
2.测试,如果能看到图片表示成功**(后面的图片是自己的图片名称)**
http://fastdfs.com:8888/group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg
8.集群部署fastdfs
-
声明: 集群部署fastdfs时,
服务器规划:
跟踪服务器1【主机】(Tracker Server):192.168.200.131
跟踪服务器2【备机】(Tracker Server):192.100.200.132
存储服务器1(Storage Server):192.168.200.x1
存储服务器2(Storage Server):192.168.200.x2
存储服务器3(Storage Server):192.168.200.x3
存储服务器4(Storage Server):192.168.200.x4
最好: 保证 tracker 和 storage安装在不同ip的主机上, 避免报错.
具体流程如:
-
步骤一: 准备3台服务器(至少2台)
* 存储服务器:192.168.200.131(同时也是调度器) 存储服务器:192.168.200.132 存储服务器:192.168.200.133
同时配置虚拟主机:
比如: 编辑虚拟机的host文件: vim /etc/hosts 添加这段内容: 192.168.200.131 fastdfs.com192.168.200.132 fastdfs2.com192.168.200.133 fastdfs3.com 注意: ip写自己主机的ip, fastdfs.com域名 可以随意起.如果通过windows浏览器访问虚拟机的fastdfs,同时需要配置C:\Windows\System32\drivers\etc\hosts文件 添加这段内容: 192.168.200.131 www.fastdfs.com192.168.200.132 www.fastdfs2.com192.168.200.133 www.fastdfs3.com
-
步骤二: tracker配置
如果配置3台主机上,那么就是配置了3台tracker
vim /etc/fdfs/tracker.conf #需要修改的内容如下 port=22122 # tracker服务器端口(默认22122,一般不修改) base_path=/data/fastdfs # 存储日志和数据的根目录
-
步骤三: storage配置
如果配置3台主机上,那么就是配置了3台storage
vim /etc/fdfs/storage.conf #需要修改的内容如下 port=23000 # storage服务端口(默认23000,一般不修改) base_path=/data/fastdfs # 数据和日志文件存储根目录 store_path0=/data/fastdfs # 第一个存储目录 tracker_server=fastdfs.com:22122 # 服务器1 tracker_server=fastdfs2.com:22122 # 服务器2 tracker_server=fastdfs3.com:22122 # 服务器3 http.server_port=80 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
-
步骤四: client测试
-
1.先启动服务
# 永久关闭防火墙 systemctl disable firewalld.service #启动tracker /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf #启动storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf # 重启storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
-
查询启动是否成功
-
2.配置客户端测试:
* 配置client.conf vim /etc/fdfs/client.conf #需要修改的内容如下 base_path=/data/fastdfs tracker_server=fastdfs.com:22122 # 服务器1 tracker_server=fastdfs2.com:22122 # 服务器2 tracker_server=fastdfs3.com:22122 # 服务器3#保存后测试,返回ID表示成功 如:group1/M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg fdfs_upload_file /etc/fdfs/client.conf /usr/a.jpg (文件所在目录)
-
-
步骤五: 配置nginx
vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下 tracker_server=fastdfs.com:22122 # 服务器1 tracker_server=fastdfs2.com:22122 # 服务器2 tracker_server=fastdfs3.com:22122 # 服务器3 url_have_group_name=true store_path0=/data/fastdfs #配置nginx.config vim /usr/local/nginx/conf/nginx.conf #添加如下配置 server {listen 80; ## 该端口为storage.conf中的http.server_port相同检测集群server_name localhost;location ~/group[0-9]/ {ngx_fastdfs_module;} error_page 500 502 503 504 /50x.html;location = /50x.html {root html;} }
检测集群 :
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf # 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息
-
操作相关命令
启动和关闭tracker和storage
sudo service fdfs_trackerd start [stop] sudo service fdfs_storaged start [stop]
启动和关闭nginx
cd /usr/local/nginx/sbin/ 文件夹sudo ./nginx #启动sudo ./nginx -s stop #关闭sudo ./nginx -s reload #重新加载
-
查询服务是否启动
ps -ef | grep tracker ps -ef | grep storage ps -ef | grep nginx
-
检测集群
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf # 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息
9.java整合fastDFS
-
fastDFS配置文件
fdfs_client.conf
connect_timeout = 60 #连接超时 network_timeout = 60 #网络超时 charset = UTF-8 http.tracker_http_port = 8080 #tracker 访问端口 tracker_server = 192.168.200.128:22122 #traker storage 安装所在主机ip
-
fastdfs-client-java使用
fastdfs-client-java使用
https://github.com/happyfish100/fastdfs-client-java步骤一:引入依赖
<dependency> <groupId>com.taoyuanx</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.29-SNAPSHOT</version> </dependency
步骤二: java代码
//长传文件 public class UploadDemo {public static void main(String[] args) throws IOException, MyException {//1、加载配置文件ClientGlobal.init("fdfs_client.conf");//2、创建一个TrackerClient对象。TrackerClient trackerClient = new TrackerClient();//3、使用TrackerClient对象获得trackerserver对象。TrackerServer trackerServer = trackerClient.getTrackerServer();//4、创建一个StorageClient对象。trackerserver、StorageServer两个参数。StorageClient storageClient = new StorageClient(trackerServer, null);String path = System.getProperty("user.dir")+ File.separator+"1.jpg";//5、使用StorageClient对象上传文件。String[] strings = storageClient.upload_file(path, "jpg", null);//返回的数组包含两个元素分别类似于://group1//M00/00/00/wKgDCmDtis2AAsj9AAW3ED-O1WQ151.jpgfor (String string : strings) {System.out.println(string);}} }//下载文件 public class DownloadDemo {public static void main(String[] args) {try {//1、加载配置文件ClientGlobal.init("fdfs_client.conf");//2、创建一个TrackerClient对象。TrackerClient trackerClient = new TrackerClient();//3、使用TrackerClient对象获得trackerserver对象。TrackerServer trackerServer = trackerClient.getTrackerServer();//4、创建一个StorageClient对象。trackerserver、StorageServer两个参数。StorageClient storageClient = new StorageClient(trackerServer,null);String path = System.getProperty("user.dir")+File.separator+"fox.jpg";//5、使用StorageClient对象下载文件。storageClient.download_file("group1","M00/00/00/wKgDDWDtRu6AMPhBARBlpcz7xUs146.jpg",path);} catch (IOException e) {e.printStackTrace();} catch (MyException e) {e.printStackTrace();}} }
-
fastDFS_Client使用
在原作者YuQing与yuqih发布的java客户端基础上进行了大量重构工作,便于Java工作者学习与阅读。
主要特性
\1. 对关键部分代码加入了单元测试,便于理解与服务端的接口交易,提高接口质量
\2. 将以前对byte硬解析风格重构为使用 对象+注解 的形式,尽量增强了代码的可读性
\3. 支持对服务端的连接池管理(commons-pool2)
\4. 支持上传图片时候检查图片格式,并且自动生成缩略图
\5. 在SpringBoot当中自动导入依赖https://github.com/tobato/FastDFS_Client
-
上传图片和下载图片
-
步骤一:引入依赖
< dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.27.2</version> </dependency>
-
步骤二: 在yml配置
# 分布式文件系统FDFS配置 fdfs: so-timeout: 1500 # 读取时间 connect-timeout: 600 # 连接超时时间 thumb-image: #缩略图生成参数 width: 150 height: 150 tracker-list: #Tracker服务配置地址列表 - 192.168.3.10:22122 - 192.168.3.12:22122 - 192.168.3.13:22122 pool: #从池中借出的对象的最大数目(配置为-1表示不限制) max-total: -1 #获取连接时的最大等待毫秒数(默认配置为5秒) max-wait-millis: 5000 #每个key最大连接数 max-total-per-key: 50 #每个key对应的连接池最大空闲连接数 max-idle-per-key: 10 #每个key对应的连接池最小空闲连接数 min-idle-per-key: 5 upload: base-url: http://fastdfs.com:8888/
解决方案:添加config配置
@Configuration public class FileConfig { /** * 解决上传文件过大导致异常的问题。 * the request was rejected because its size (170982031) exceeds the configured * @return */ @Bean public MultipartConfigElement multipartConfigElement() {MultipartConfigFactory factory = new MultipartConfigFactory();factory.setMaxRequestSize(DataSize.ofBytes(200*1048576L));factory.setMaxFileSize(DataSize.ofBytes(200*1048576L));return factory.createMultipartConfig(); }
-
步骤三: web层-service层代码
@RestController public class UploadController {@Autowiredprivate UploadService uploadService;@RequestMapping("/upload")@ResponseBodypublic Map<String,Object> upload(MultipartFile file){Map<String, Object> map =new HashMap<>();String path = this.uploadService.uploadImage(file);map.put("path",path);return map;} }@Service @Slf4j public class UploadService {@Autowiredprivate FastFileStorageClient fastFileStorageClient;@Value("${upload.base-url}")private String baseUrl;/*** 上传图片* @param file* @return*/public String uploadImage(MultipartFile file) {try {//校验文件BufferedImage image = ImageIO.read(file.getInputStream());if (image == null || image.getWidth() == 0 || image.getHeight() ==0) {throw new RuntimeException("上传文件不是图片");}} catch (IOException e) {log.error("校验文件内容失败....{}", e);throw new RuntimeException("校验文件内容失败" + e.getMessage());} try {// 获取扩展名String extension =StringUtils.substringAfterLast(file.getOriginalFilename(), ".");StorePath storePath =fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(),extension, null);// 返回路径return baseUrl+storePath.getFullPath();} catch (IOException e) {log.error("【文件上传】上传文件失败!....{}", e);throw new RuntimeException("【文件上传】上传文件失败!" + e.getMessage());}} }
-
上传缩率图
//上传略缩图 StorePath storePath = fastFileStorageClient.uploadImageAndCrtThumbImage(file.getInputStream(), file.getSize(), extension, null)
缩略图为上传文件名+缩略图后缀(默认_150x150)
如:源图上传后路径为 xxx.jpg,缩略图为 xxx_150x150.jpg -
测试
-
测试页面 index.html ,代码如下:
<form action="/upload" enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" value="上传图片"> </form>
-
-