fastdfs install

libfastcommon


mkdir -p /usr/lib64
mkdir -p /usr/lib
mkdir -p /usr/include/fastcommon
install -m 755 libfastcommon.so /usr/lib64


install -m 644 common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h common_blocked_queue.h multi_socket_client.h skiplist_set.h fc_list.h
/usr/include/fastcommon


if [ ! -e /usr/lib/libfastcommon.so ]; then ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so; fi


fastdfs

mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_trackerd /usr/bin
if [ ! -f /etc/fdfs/tracker.conf.sample ]; then cp -f ../conf/tracker.conf /etc/fdfs/tracker.conf.sample; fi
if [ ! -f /etc/fdfs/storage_ids.conf.sample ]; then cp -f ../conf/storage_ids.conf /etc/fdfs/storage_ids.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_storaged  /usr/bin
if [ ! -f /etc/fdfs/storage.conf.sample ]; then cp -f ../conf/storage.conf /etc/fdfs/storage.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
mkdir -p /usr/lib64
mkdir -p /usr/lib
cp -f fdfs_monitor fdfs_test fdfs_test1 fdfs_crc32 fdfs_upload_file fdfs_download_file fdfs_delete_file fdfs_file_info fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_upload_appender /usr/bin
if [ 0 -eq 1 ]; then cp -f libfdfsclient.a /usr/lib64; cp -f libfdfsclient.a /usr/lib/;fi
if [ 1 -eq 1 ]; then cp -f libfdfsclient.so /usr/lib64; cp -f libfdfsclient.so /usr/lib/;fi
mkdir -p /usr/include/fastdfs
cp -f ../common/fdfs_define.h ../common/fdfs_global.h ../common/mime_file_parser.h ../common/fdfs_http_shared.h ../tracker/tracker_types.h ../tracker/tracker_proto.h ../tracker/fdfs_shared_func.h ../storage/trunk_mgr/trunk_shared.h tracker_client.h storage_client.h storage_client1.h client_func.h client_global.h fdfs_client.h /usr/include/fastdfs
if [ ! -f /etc/fdfs/client.conf.sample ]; then cp -f ../conf/client.conf /etc/fdfs/client.conf.sample; fi

echo $PATH

https://askubuntu.com/questions/551990/what-does-path-mean
环境变量;
可执行文件;

[root@silicon fastdfs-5.11]# echo $PATH
/usr/local/java/jdk1.7.0_45/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

mkdir -p

https://stackoverflow.com/questions/22737933/mkdirs-p-option
支持一次创建多个目录

$mkdir hello/goodbye
mkdir:cannot create directory 'hello/goodbye': No such file or directory
$mkdir -p hello/goodbye


-p created both, hello and goodbye

This means that the command will create all the directories necessaries to fulfill your request, not returning any error in case that directory exists.

配置和启动

https://github.com/judasn/Linux-Tutorial/blob/master/markdown-file/FastDFS-Install-And-Settings.md

tracker

启动 tracker 服务:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

重启 tracker 服务:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

查看是否有 tracker 进程:ps aux | grep tracker

查看端口监听:

[root@silicon fdfs]# lsof -i:22122
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
fdfs_trac 6648 root    5u  IPv4 75285123      0t0  TCP *:22122 (LISTEN)

storage

1、指定tracker服务器的ip如果是在一台服务器上,那就用这个服务器的公网ip地址, 不要用localhost,127.0.0.1这地址;否则无法启动;

指定 tracker 服务器的 IP 和端口
tracker_server=192.168.1.114:22122

client测试

https://blog.csdn.net/yelllowcong/article/details/78300037

[root@silicon ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf ~/one_3.jpg 
group1/M00/00/00/LU0BXlu1o1yAVU6tAACWpGLXVTg320.jpg

nginx install&config

https://github.com/judasn/Linux-Tutorial/blob/master/markdown-file/FastDFS-Install-And-Settings.md

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/var/local/nginx/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "/var/temp/nginx/client"
  nginx http proxy temporary files: "/var/temp/nginx/proxy"
  nginx http fastcgi temporary files: "/var/temp/nginx/fastcgi"
  nginx http uwsgi temporary files: "/var/temp/nginx/uwsgi"
  nginx http scgi temporary files: "/var/temp/nginx/scgi"

1、安装bug01
https://github.com/happyfish100/fastdfs-nginx-module/issues/32

In file included from /data/tools/fastdfs-nginx-module-1.20/src/common.c:26:0,
from /data/tools/fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c:6:
/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory
#include "common_define.h"
^
compilation terminated.
make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/data/tools/nginx-1.15.0'
make: *** [build] Error 2

fastdfs-nginx-module fatal error: common_define.h: No such file or directory


解决办法
编辑 fastdfs-nginx-module-1.20/src/config 文件
vim fastdfs-nginx-module-1.20/src/config
ngx_addon_name=ngx_http_fastdfs_module

if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='2561024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'"
. auto/module
else
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 -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='2561024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'"
fi

改成以上内容貌似就可以通过
改变的文件内容
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"


2、make install

[root@silicon nginx-1.14.0]# make install
make -f objs/Makefile install
make[1]: Entering directory `/root/nginx/nginx-1.14.0'
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
test -d '/usr/local/nginx/sbin' \
        || mkdir -p '/usr/local/nginx/sbin'
test ! -f '/usr/local/nginx/sbin/nginx' \
        || mv '/usr/local/nginx/sbin/nginx' \
                '/usr/local/nginx/sbin/nginx.old'
cp objs/nginx '/usr/local/nginx/sbin/nginx'
test -d '/usr/local/nginx/conf' \
        || mkdir -p '/usr/local/nginx/conf'
cp conf/koi-win '/usr/local/nginx/conf'
cp conf/koi-utf '/usr/local/nginx/conf'
cp conf/win-utf '/usr/local/nginx/conf'
test -f '/usr/local/nginx/conf/mime.types' \
        || cp conf/mime.types '/usr/local/nginx/conf'
cp conf/mime.types '/usr/local/nginx/conf/mime.types.default'
test -f '/usr/local/nginx/conf/fastcgi_params' \
        || cp conf/fastcgi_params '/usr/local/nginx/conf'
cp conf/fastcgi_params \
        '/usr/local/nginx/conf/fastcgi_params.default'
test -f '/usr/local/nginx/conf/fastcgi.conf' \
        || cp conf/fastcgi.conf '/usr/local/nginx/conf'
cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default'
test -f '/usr/local/nginx/conf/uwsgi_params' \
        || cp conf/uwsgi_params '/usr/local/nginx/conf'
cp conf/uwsgi_params \
        '/usr/local/nginx/conf/uwsgi_params.default'
test -f '/usr/local/nginx/conf/scgi_params' \
        || cp conf/scgi_params '/usr/local/nginx/conf'
cp conf/scgi_params \
        '/usr/local/nginx/conf/scgi_params.default'
test -f '/usr/local/nginx/conf/nginx.conf' \
        || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/var/local/nginx' \
        || mkdir -p '/var/local/nginx'
test -d '/var/log/nginx' \
        || mkdir -p '/var/log/nginx'
test -d '/usr/local/nginx/html' \
        || cp -R html '/usr/local/nginx'
test -d '/var/log/nginx' \
        || mkdir -p '/var/log/nginx'
make[1]: Leaving directory `/root/nginx/nginx-1.14.0'
[root@silicon nginx-1.14.0]# 

nginx安装成功后,也就是执行 make install 后, 其可执行代码都拷贝到了 /usr/local/nginx 下, 所以配置文件也要找到 /usr/local/nginx 下的配置文件;

fastdfs 上传成功,下载400错误解决办法

nginx日志报错ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename

解决办法:

vi /etc/fdfs/mod_fastdfs.conf

url_have_group_name=false

改为

url_have_group_name=true

源地址 http://my.oschina.net/ydsakyclguozi/blog/403327

测试上传图片




[root@silicon ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf one_3.jpg 
group1/M00/00/00/LU0BXlu1zrqAKpy-AACWpGLXVTg887.jpg
[root@silicon ~]# 



开启nginx服务器

输出ngx_http_fastdfs_set pid=16831
表示开启成功了。否则未成功;

[root@silicon sbin]# /usr/local/nginx/sbin/nginx 
ngx_http_fastdfs_set pid=16831


查看ngnix监听端口9999

[root@silicon sbin]# lsof -i:9999
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx   16832 root    6u  IPv4 75385491      0t0  TCP *:distinct (LISTEN)
nginx   16833 root    6u  IPv4 75385491      0t0  TCP *:distinct (LISTEN)
[root@silicon sbin]#  /usr/local/nginx

开启&关闭nginx服务器

    • 启动 Nginx
      • 停掉防火墙:service iptables stop
      • 启动:/usr/local/nginx/sbin/nginx,启动完成 shell 是不会有输出的
      • 访问:192.168.1.114,如果能看到:Welcome to nginx!,即可表示安装成功
      • 检查 时候有 Nginx 进程:ps aux | grep nginx,正常是显示 3 个结果出来
      • 刷新 Nginx 配置后重启:/usr/local/nginx/sbin/nginx -s reload
      • 停止 Nginx:/usr/local/nginx/sbin/nginx -s stop
      • 如果访问不了,或是出现其他信息看下错误立即:vim /var/log/nginx/error.log

用浏览器测试下载图片

http://ip:9999/group1/M00/00/00/LU0BXlu1zrqAKpy-AACWpGLXVTg887.jpg

tacker&storage&nginx的端口都需要开放

tracker port 22122
storage port 23000
nginx port 9999

参考博客

https://blog.csdn.net/wlwlwlwl015/article/details/52619851

https://github.com/judasn/Linux-Tutorial/blob/master/markdown-file/FastDFS-Install-And-Settings.md

推荐阅读更多精彩内容