Centos安装FastDFS并整合nginx

4 篇文章 0 订阅
1 篇文章 0 订阅

一、安装包准备

1. 软件包下载

链接:https://pan.baidu.com/s/15ZL4af5kS9P_wvBj7G5dBw
提取码:k7p6
在这里插入图片描述

2. 上传和解压

将四个文件上传到 /opt目录下

tar -zxvf fastdfs-5.05.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf libfastcommon-1.0.7.tar.gz
tar -zxvf nginx-1.8.0.tar.gz

二、安装fastdfs

1. 安装相关软件包

yum install -y gcc gcc-c++ && \
yum install -y perl && \
yum install -y libevent && \
yum install -y zlib zlib-devel && \
yum install -y openssl openssl-devel

2. 安装 libfastcommon

#进入目录
cd /opt/libfastcommon-1.0.7
#安装libfastcommon
./make.sh && ./make.sh install

由于FastDFS 程序引用 usr/lib 目录所以需要将 /usr/lib64 下的库文件拷贝至 /usr/lib 下

cp /usr/lib64/libfastcommon.so /usr/lib

3. 安装和启动tracker

#进入目录
cd /opt/fastdfs-5.05
#安装libfastcommon
./make.sh && ./make.sh install

安装成功将安装目录下的 conf 下的文件拷贝到 /etc/fdfs/ 下

#拷贝文件
cp conf/* /etc/fdfs/
#创建fastdfs默认工作目录
mkdir -p /home/yuqing/fastdfs
#启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

启动后/home/yuqing/fastdfs目录会生成两个文件夹

[root@iz2ze3dj8i3kf6iexu16sgz fastdfs]# ll
total 8
drwxr-xr-x 2 root root 4096 Dec 1 14:37 data
drwxr-xr-x 2 root root 4096 Dec 1 14:37 logs

4. 安装和启动storage

配置storage.conf

cd /etc/fdfs
vi storage.conf

修改配置:

tracker_server=自己的ip:22122
port=23000 #可改或者可以默认

23000是storage的默认端口,需要放开端口防火墙,或者云服务器放开23000端口安全组,然后启动storage。

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

假如无法正常启动,则需要排查防火墙22122和23000端口是否放开,或者云服务器安全组端口是否放开。
启动成功后/home/yuqing/fastdfs/data目录下会生成如下目录:

[root@iz2ze3dj8i3kf6iexu16sgz data]# ls
00  08  10  18  20  28  30  38  40  48  50  58  60  68  70  78  80  88  90  98  A0  A8  B0  B8  C0  C8  D0  D8  E0  E8  F0  F8                 FE
01  09  11  19  21  29  31  39  41  49  51  59  61  69  71  79  81  89  91  99  A1  A9  B1  B9  C1  C9  D1  D9  E1  E9  F1  F9                 FF
02  0A  12  1A  22  2A  32  3A  42  4A  52  5A  62  6A  72  7A  82  8A  92  9A  A2  AA  B2  BA  C2  CA  D2  DA  E2  EA  F2  FA                 storage_changelog.dat
03  0B  13  1B  23  2B  33  3B  43  4B  53  5B  63  6B  73  7B  83  8B  93  9B  A3  AB  B3  BB  C3  CB  D3  DB  E3  EB  F3  FB                 storage_groups_new.dat
04  0C  14  1C  24  2C  34  3C  44  4C  54  5C  64  6C  74  7C  84  8C  94  9C  A4  AC  B4  BC  C4  CC  D4  DC  E4  EC  F4  FC                 storage_servers_new.dat
05  0D  15  1D  25  2D  35  3D  45  4D  55  5D  65  6D  75  7D  85  8D  95  9D  A5  AD  B5  BD  C5  CD  D5  DD  E5  ED  F5  FD                 storage_stat.dat
06  0E  16  1E  26  2E  36  3E  46  4E  56  5E  66  6E  76  7E  86  8E  96  9E  A6  AE  B6  BE  C6  CE  D6  DE  E6  EE  F6  fdfs_storaged.pid  storage_sync_timestamp.dat
07  0F  17  1F  27  2F  37  3F  47  4F  57  5F  67  6F  77  7F  87  8F  97  9F  A7  AF  B7  BF  C7  CF  D7  DF  E7  EF  F7  fdfs_trackerd.pid  sync

5. 测试上传文件

vi /etc/fdfs/client.conf

修改配置:

tracker_server = 你服务器ip:22122

上传一张图片测试,将一张图片上传到 /tmp 目录下
文件名: /temp/1.jpg

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /tmp/1.jpg

上传成功后,下图:
在这里插入图片描述
上面返的是图片地址,代表上传成功,由于还未和nginx整合,需要跟nginx搭配访问。

三、安装nginx和fastdfs-nginx-module模块

1. 配置fastdfs-nginx-module模块

cd /opt/fastdfs-nginx-module/src

修改config文件

vim config

将文件中的所有 /usr/local/ 路径改为 /usr/,因为包都在/usr下,改成如下:

ngx_addon_name=ngx_http_fastdfs_module
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"

然后修改mod_fastdfs.conf

cp mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

修改下面的两个配置

tracker_server=你服务器ip:22122
url_have_group_name = true

将 /usr/lib64 目录下的 libfdfsclient.so 文件拷贝至 /usr/lib 目录下

cp /usr/lib64/libfdfsclient.so /usr/lib

2. 安装nginx

#进入nginx目录
cd /opt/nginx-1.8.0

配置和安装

./configure \
--prefix=/etc/nginx \
--pid-path=/var/run/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/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--add-module=/opt/fastdfs-nginx-module/src
#编译和安装
make && make install
#创建nginx的temp目录
mkdir -p /var/cache/nginx/client_temp

3. 修改nginx配置

修改nginx.conf配置文件

vi /etc/nginx/conf/nginx.conf

新增一个server:

server{
    listen 80;
    server_name xx.xx.xx.xx;

    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
}

启动nginx

#启动nginx命令
/etc/nginx/sbin/nginx
#重新加载配置并启动nginx
/etc/nginx/sbin/nginx -s reload
#停止nginx
/etc/nginx/sbin/nginx -s stop

4. 验证是否已上传的图片能否打开

上面上传文件后有打印链接,如下:
http://xx.xx.xx.xx/group1/M00/00/00/rBHjQ2GnIBCABDfWAABFnwpyjHY243_big.jpg
放在浏览器查看:
在这里插入图片描述

5. 将nginx加入到环境变量,方便访问

编辑/etc/profile

vim /etc/profile

在最后一行添加配置,:wq保存

PATH=$PATH:/etc/nginx/sbin
export PATH

使配置立即生效

source /etc/profile

6. 加入开机启动项

编辑 /etc/rc.d/rc.local 文件

vi /etc/rc.d/rc.local

文件末尾增加下面内容:

# fastdfs start
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

# nginx start
/etc/nginx/sbin/nginx

然后给rc.local 文件增加可执行的权限

chmod +x /etc/rc.d/rc.local

配置完后,再次重启系统,fastDFS和nginx都可以自动启动。

四、java代码实现fastDFS上传

修改pom.xml

<!-- 连接fastdfs文件系统 -->
<dependency>
    <groupId>com.luhuiguo</groupId>
    <artifactId>fastdfs-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

修改application.yml

# 上传文件的最大的大小
http:
  multipart:
    max-file-size: 10000000
fdfs:
  # 连接Tracker服务器超时时间
  connect-timeout: 10000
  # storage服务器响应的超时时间
  so-timeout: 3000
  #  trakcer服务器的数量
  tracker-list:
    - xx.xx.xx:22122  #你的tracker服务器ip

java代码:

   @Autowired
    private FastFileStorageClient storageClient;
    
	/**
     * 上传的处理
     * @param file 上传的文件
     * @return 上传成功后返回完整的图片URL
     * @throws IOException
     */
    @PostMapping("upload")
    public String upload(MultipartFile file) throws IOException {
        // data.getOriginalFilename():取到文件的名字
        // FilenameUtils.getExtension(""):取到一个文件的后缀名
        String extension = FilenameUtils.getExtension(file.getOriginalFilename());

        // group1:指storage服务器的组名
        // data.getSize():文件的大小
        // 这一行是通过storageClient将文件传到storage容器
        StorePath uploadFile = storageClient.uploadFile("group1", file.getInputStream(), file.getSize(), extension);
        //xxx.xxx.xxx为nginx的ip地址,也可以改为相应域名解析
        return "http://xxx.xxx.xxx/"+uploadFile.getFullPath();
    }

然后写一个upload.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件到FastDFS</title>
</head>
<body>
<!-- 
	上传的方式是post
	enctype的格式必须是:multipart/form-data
 -->
	<form action="upload" method="post" enctype="multipart/form-data">
		文件:<input type="file" name="myFile">
		<input type="submit" value="上传">
	</form>
</body>
</html>

四、docker一键安装fastdfs

参考链接:https://blog.csdn.net/qq_37128049/article/details/112293529?spm=1001.2014.3001.5501
以上实现文件上传和返回图片URL地址功能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangyue23com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值