Fastdfs installation, configuration and use

0. All my software download directories are in the software directory

mkdir -p /usr/local/fastdfs
cd /usr/local/fastdfs/

1. Install gcc on Linux machine

 yum -y install cmake make gcc-c++

1, Install core library

1.1 installation version

#Official website
https://github.com/happyfish100

fastdfs-6.06.tar.gz
libfastcommon-1.0.43.tar.gz
fastdfs-nginx-module-1.22.tar.gz
nginx-1.16.1.tar.gz

1.2 the official website address is as follows:

https://github.com/happyfish100

https://github.com/happyfish100

1.3 first install the core library. The first step is to decompress the compressed package of the core library

#Unzip the current compressed package
tar -zxvf libfastcommon-1.0.43.tar.gz

1.4 enter the decompressed directory and execute the command of decompressing and installing

cd libfastcommon-1.0.43/
#View the following commands under the current directory

#============================================================
[root@VM-0-12-centos libfastcommon-1.0.7]# ll
 Total consumption 24
-rw-rw-r-- 1 root root 2170 9 June 16, 2014 HISTORY
-rw-rw-r-- 1 root root  582 9 June 16, 2014 INSTALL
-rw-rw-r-- 1 root root 1341 9 June 16, 2014 libfastcommon.spec
-rwxrwxr-x 1 root root 2151 9 June 16, 2014 make.sh
-rw-rw-r-- 1 root root  617 9 June 16, 2014 README
drwxrwxr-x 2 root root 4096 9 June 16, 2014 src
#============================================================
#Use make SH compile it
./make.sh
#Adopt/ make. Install with the SH command
./make.sh install

✔ The related operations of the core library are completed

1.5 soft connection creation

Because the directory set by FastDFS main program is / usr/local/lib, we need to create a soft link and change it to the location we want (equivalent to a shortcut)

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

2, Install FastDFS

2.1 unzip the tar package

tar -zxvf fastdfs-6.06.tar.gz

2.2 entering the directory

🎇** Note: * * do not compile directly after decompression. First modify the configuration file of the compilation command

cd fastdfs-6.06

Modify the compilation command after entering the directory

vim ./make.sh

Modify the following configuration, save and exit after modification

TARGET_PREFIX=$DESTDIR/usr/local

Execute compile and install commands

#Compile source code
./make.sh
#install
./make.sh install

After installation, the location of FastDFS main program is

  • /The location of the usr/local/bin executable. The default installation location is / usr/bin.
  • /The location of the etc/fdfs configuration file is the default location
  • /The location of the main program code of usr/local/lib64 is in / usr/bin by default.
  • /The location of some plug-in groups contained in usr/local/include/fastdfs is in / usr/include/fastdfs by default

3, Configure tracker

3.1 configuring tracker

#Enter the configuration file directory
cd /etc/fdfs
#Before configuring, copy a copy of the source file and change its name to form a good habit
cp tracker.conf.sample tracker.conf 
#Modify profile
vim tracker.conf
#Modify the following contents


#Base directory (the management data of storage will be stored in this directory when Tracker runs)
base_path=/fastdfs/tracker
#Save and exit

#Create directory
mkdir -p /fastdfs/tracker

3.2 start tracker

#Enter the directory of the startup command
cd /etc/init.d
#Because the startup directory has been modified before startup, we still need to modify the startup command again
vim fdfs_trackerd
#Modify the contents of the following positions
PRG=/usr/local/bin/fdfs_trackerd

#start-up
./fdfs_trackerd start

#==========================================================
#After successful startup, you can check whether the startup status is successful

[root@VM-0-12-centos init.d]# ./fdfs_trackerd status
fdfs_trackerd (pid 21341) Running...

#==========================================================
#Stop start command
./fdfs_trackerd stop
#Restart command
./fdfs_trackerd restart

#Set startup and self startup (this is an optional operation, according to your preference)
vim /etc/rc.d/rc.local
#Add the following command to the configuration file of startup and self startup
/etc/init.d/fdfs_trackerd start

4, Configure storage

4.1 basic configuration

#Enter directory
cd /etc/fdfs
#Before configuring, copy a copy of the source file and change its name to form a good habit
cp storage.conf.sample storage.conf
#Modify profile
vim storage.conf


#Modify the following contents
###################################################
#Directory address where data and logs are stored
base_path=/fastdfs/storage/base
#The directory where files are actually stored. After storage is started, 256 * 256 directories will be successfully used to store files
store_path0=/fastdfs/storage/store
#Configure the tracker address. If there are multiple addresses, we can only keep one in the stand-alone environment
tracker_server=172.16.96.128:22122
#Save and exit

#After exiting, build the previously configured directory
mkdir -p /fastdfs/storage/base
mkdir -p /fastdfs/storage/store

4.2 start storage

#Enter the directory of the startup command
cd /etc/init.d
#Because the startup directory has been modified before startup, we still need to modify the startup command again
vim fdfs_storaged
#Modify the contents of the following positions
PRG=/usr/local/bin/fdfs_storaged
#start-up
./fdfs_storaged start

#====================================================
#View status
[root@VM-0-12-centos init.d]# ./fdfs_storaged status
fdfs_storaged (pid 28822) Running...

4.3 visit the data storage directory

cd /fastdfs/storage/store/data
ls

You can see that there are 256 directories named in hexadecimal, and each directory also contains 256 subdirectories

#View services
netstat -ntlp

5, Configure client (optional)

5.1 basic configuration

If you are using pure java code, this step can be ignored

#Enter the configuration directory
cd /etc/fdfs

#==============================================================
[root@VM-0-12-centos data]# cd /etc/fdfs        
[root@VM-0-12-centos fdfs]# ll
 Total consumption 36
-rw-r--r-- 1 root root 1461 2 November 26:44 client.conf.sample
-rw-r--r-- 1 root root 7898 2 December 26:26 storage.conf
-rw-r--r-- 1 root root 7829 2 November 26:44 storage.conf.sample
-rw-r--r-- 1 root root 7177 2 December 26:00 tracker.conf
-rw-r--r-- 1 root root 7102 2 November 26:44 tracker.conf.sample

#==============================================================

#As always, copy the files first and then modify them to form a good habit
cp client.conf.sample client.conf
#Modify profile
vim client.conf
#Modify the following configuration
base_path=/fastdfs/client

#Replace the address of the following tracker server with your own server address
tracker_server=172.81.205.117:22122
#Save and exit to create the desired directory
mkdir -p /fastdfs/client

5.2 uploading files

#Enter directory
cd /usr/local/bin/

#====================================================================
#Here are all the commands that tracer can use for file operation
[root@VM-0-12-centos fdfs]# cd /usr/local/bin/
[root@VM-0-12-centos bin]# ll
 Total consumption 24164
-rwxr-xr-x 1 root root  321720 2 November 26:44 fdfs_appender_test
-rwxr-xr-x 1 root root  321496 2 November 26:44 fdfs_appender_test1
-rwxr-xr-x 1 root root  308376 2 November 26:44 fdfs_append_file
-rwxr-xr-x 1 root root  307808 2 November 26:44 fdfs_crc32
-rwxr-xr-x 1 root root  308400 2 November 26:44 fdfs_delete_file
-rwxr-xr-x 1 root root  309168 2 November 26:44 fdfs_download_file
-rwxr-xr-x 1 root root  308744 2 November 26:44 fdfs_file_info
-rwxr-xr-x 1 root root  322544 2 November 26:44 fdfs_monitor
-rwxr-xr-x 1 root root 1125160 2 November 26:44 fdfs_storaged
-rwxr-xr-x 1 root root  331624 2 November 26:44 fdfs_test
-rwxr-xr-x 1 root root  326736 2 November 26:44 fdfs_test1
-rwxr-xr-x 1 root root  465168 2 November 26:44 fdfs_trackerd
-rwxr-xr-x 1 root root  309360 2 November 26:44 fdfs_upload_appender
-rwxr-xr-x 1 root root  310384 2 November 26:44 fdfs_upload_file
-rwxr-xr-x 1 root root    1768 2 November 26:44 restart.sh
-rwxr-xr-x 1 root root    1680 2 November 26:44 stop.sh

We use the file upload command fdfs_upload_file

#Pick any file in your host and I'll upload the command transaction file
 ./fdfs_upload_file /etc/fdfs/client.conf ./fdfs_upload_file
#After the upload is successful, the volume name plus file name will be returned
group1/M00/00/00/rBEADGIZs4OAZzTPAAS8cObeCbQ1309199
#You can find the upload location according to the file path

❤ Command interpretation

The naming of uploaded files is divided into three parts: 🤞

  • ./fdfs_upload_file file upload command, the directory where the command is located is / usr/local/bin/
  • /etc/fdfs/client.conf enable the client command. The directory of the command is / etc / FDFS/
  • ./fdfs_upload_file the file that needs to be uploaded. Find the file you need to upload and upload it. Here I upload this command as a file

Deep parsing return path group1/M00/00/00/rBEADGIZs4OAZzTPAAS8cObeCbQ1309199

  1. Group1 is the volume name of the storage configuration. Use the command cat / etc / FDFS / storage Conf view the volume name group we have previously configured_ name=group1
  2. M00 virtual directory, not in charge for the time being
  3. /00 / 00 / file saving path
  4. rBEADGIZs4OAZzTPAAS8cObeCbQ1309199 file name after renaming
  • Enter the storage directory to view the file just uploaded
[root@VM-0-12-centos 00]# cd /fastdfs/storage/store/
[root@VM-0-12-centos store]# ls
data
[root@VM-0-12-centos store]# cd data/00/00
[root@VM-0-12-centos 00]# ls
rBEADGIZs4OAZzTPAAS8cObeCbQ1309199
#This is the file we just uploaded

5.3 deleting files

Deleting a file requires the full volume name plus the file name

cd /usr/local/bin/

./fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/rBEADGIZs4OAZzTPAAS8cObeCbQ1309199 
#Check the file storage location again and find that the file disappears, which indicates that the file has been deleted
[root@VM-0-12-centos bin]# cd /fastdfs/storage/store/data/00/00                                                                                                                                                                                       
[root@VM-0-12-centos 00]# ll
 Total consumption 0
[root@VM-0-12-centos 00]# 

6, Install Nginx component module

cd /usr/local/fastdfs/
#Unzip the Nginx package
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
 #Enter the src directory to modify the relevant configuration
cd fastdfs-nginx-module-1.22/src
 
#=====================================================================
[root@VM-0-12-centos src]# ll
 Total consumption 84
-rw-rw-r-- 1 root root 43501 7 May 2018 common.c
-rw-rw-r-- 1 root root  3995 7 May 2018 common.h
-rw-rw-r-- 1 root root   848 7 May 2018 config
-rw-rw-r-- 1 root root  3725 7 May 2018 mod_fastdfs.conf
-rw-rw-r-- 1 root root 28668 7 May 2018 ngx_http_fastdfs_module.c
#=====================================================================

#Modify config file
vim config
#Modify the following
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/include/fastcommon/"
#Save and exit

6.1 installation nginx

Installation dependency

yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-develzlib zlib-devel openssl openssl-devel 

Enter the directory where the compressed package is located

cd /usr/local/fastdfs/

Unzip the package

tar -zxvf nginx-1.16.1.tar.gz

Create directory backup

mkdir -p /var/temp/nginx

Configure nginx installation information

cd /usr/local/fastdfs/nginx-1.16.1/


./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 \
--add-module=/usr/local/fastdfs/fastdfs-nginx-module-1.22/src

-Add module must be defined. This configuration information is used to specify the module to be loaded when installing nginx. If it is not specified, fastdfs nginx module will not be loaded during nginx installation, and subsequent functions cannot be realized. The latter path is the absolute path generated by decompressing fastdfs nginx module

install

cd /usr/local/fastdfs/nginx-1.16.1/
make
make install
#Modify profile
cd /usr/local/fastdfs/fastdfs-nginx-module-1.22/src
#Copy all configuration files to the / etc/fdfs / directory
cp mod_fastdfs.conf /etc/fdfs/

#Enter the configuration file directory
cd /etc/fdfs/
#Modify profile
vim mod_fastdfs.conf
#Change the address of the tracker server to your own
tracker_server=172.16.96.128:22122
#Turn on the setting that contains the group name in the URL
url_have_group_name = true
store_path0=/fastdfs/storage/store
 
#Copy the configuration file to the specified directory
cp /usr/local/fastdfs/fastdfs-6.06/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs/fastdfs-6.06/conf/mime.types /etc/fdfs/

#Create nginx launch soft link
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib64/libfdfsclient.so

#Network storage service soft link
ln -s /fastdfs/storage/store/data/ /fastdfs/storage/store/data/M00

#Modify nginx configuration -- enter the directory where the nginx configuration file is located
cd /usr/local/fastdfs/nginx-1.16.1/conf
#Modify file
vim nginx.conf
#==================================================================
user  root;
listen       8888;
Reason for port 8888 storage.conf Port 8888 is configured inside

The nginx configuration file needs to be modified in three places

✔ First, modify the user access permission to root

✔ The second is to modify the listening port to 8888

✔ The third place is the mapping address of nginx module tool

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

The contents of the complete configuration file are as follows. The places marked in Chinese are the places that have been modified

#Configure user access
user  root;

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    keepalive_timeout  65;

    #gzip  on;

	#Configure the listening port 8888 and the address of storage
    server {
        listen       8888;
        server_name  localhost;
        location ~/group[0-9]/M00{
            ngx_fastdfs_module;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

After modifying the nginx configuration file, you need to restart the storage service

#Enter the directory of the startup command
cd /etc/init.d
#Start sotrage service
./fdfs_storaged restart

👀** Note: * * before starting the storage service, you must ensure that the tracker of the tracking server is started. If it is shut down unexpectedly, you need to start the tracker service in the same directory

After the restart, start the nginx service

cd /usr/local/nginx/sbin

 ./nginx 

After the nginx service is started, you can enter the URL address in the browser to access the file resources.

7, Upload file test

Again, I used the client to upload files. I put a picture of pleasant goat in the / usr/local/fastdfs / directory

Use the client command to upload pictures and enter the client cd /usr/local/bin of the upload file command/

Get the return value of the uploaded file

group1/M00/00/00/rBBggGIe2xOAGhOdAADljrKeogE984.jpg

Enter the storage directory to see if the picture is safe

/fastdfs/storage/store/data/00/00

Check the file. What is stored in the current directory is the pleasant goat picture I just uploaded

ls

rBBggGIe2xOAGhOdAADljrKeogE984.jpg

Access with browser

http://172.16.96.128:8888/group1/M00/00/00/rBBggGIe2xOAGhOdAADljrKeogE984.jpg

If you can't access successfully by using the browser, remember to turn off the firewall of linux and check whether the configuration file of nginx is configured correctly

8, Java API

I put the code of Java API operating FastDFS in my github warehouse and get it myself if necessary

github: https://github.com/yealike/FastDFS

gitee:https://gitee.com/yeahan/FastDFS

Keywords: Database Redis Software

Added by reecec on Wed, 02 Mar 2022 07:05:53 +0200