Llinx 安装 FastDfs 和 Nginx

最近需要搭建一台上传下载的服务器,所以没办法硬着头皮就是干吧。本文讲述的步骤完全就是一步血泪史,当然如果你按照我得步骤走,我保证你不会出现错误,因为这一天零2个小时,完全就是我的试错史!

网上别人的FastDfs 和 fastdfs-nginx-modul  版本做对应!我当时也没做! 用的都是最新版本!反正成功了 。哈哈哈大家可以试试

我发下我的版本
 

openssl-1.1.1g.tar.gz

zlib-1.2.11.tar.gz

pcre-8.44.tar.gz

nginx-1.20.1.tar.gz
#-----------------------------------------------

fastdfs-6.07.tar.gz

fastdfs-client-java-master.zip

fastdfs-nginx-module-master.zip V1.22

libfastcommon-master.zip

上面是安装Nginx 需要的依赖包!下面是安装FastDfs 需要的依赖包!

FastDfs 下载地址

https://github.com/happyfish100/fastdfs/releases

fastdfs-client-java-master下载地址

https://github.com/happyfish100/fastdfs-client-java

直接下载就好

libfastcommon-master 下载地址

https://github.com/happyfish100/libfastcommon

tar -xvf libfastcommon-master.zip
cd libfastcommon-master
sudo ./make.sh 
sudo ./makesh install

Nginx 下载

http://nginx.org/en/download.html

PCRE 下载

https://ftp.pcre.org/pub/pcre/

tar -zxvf pcre-8.44.tar.gz
cd pcre-8.44
./configure
make
make install

 zlib下载

http://zlib.net/zlib-1.2.11.tar.gz

tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

安装ssl(某些vps默认没装ssl)

https://www.openssl.org/source/openssl-1.1.1g.tar.gz

tar -zxvf openssl-1.1.1g.tar.gz

随便把 这些包安装放到一个文件夹下

我会把我下载的包整理到百度云

安装Nginx  主要安装GCC ++--  

开始安装FastDfs

tar -zxvf fastdfs-6.07.tar.gz
cd FastDFS-6.07
sudo ./make.sh 
sudo ./make.sh install

  • 校验安装结果

安装完成,我们应该能在

/etc/init.d/

目录,通过命令 

ll /etc/init.d/ | grep fdfs

看到FastDFS提供的启动脚本:

其中:

  • fdfs_trackerd 是tracker启动脚本
  • fdfs_storaged 是storage启动脚本

我们可以在 /etc/fdfs目录,通过命令查看到以下配置文件模板:

其中:

  • tarcker.conf.sample 是tracker的配置文件模板
  • storage.conf.sample 是storage的配置文件模板
  • client.conf.sample 是客户端的配置文件模板

启动tracker

FastDFS的tracker和storage在刚刚的安装过程中,都已经被安装了,因此我们安装这两种角色的方式是一样的。不同的是,两种需要不同的配置文件。

我们要启动tracker,就修改刚刚看到的tarcker.conf,并且启动fdfs_trackerd脚本即可。

  • 创建目录

    首先先创建好我们FastDfs的文件目录

根据个人喜好来创建

cd /usr/local/
mkdir fsdf
cd fsdf
mkdir tracker
mkdir storage
mkdir storage_data

这个文件夹里面就有这三个文件夹 

  • 编辑tracker配置

首先我们将模板文件进行赋值和重命名:

sudo cp tracker.conf.sample tracker.conf
sudo vim tracker.conf

#打开tracker.conf,修改base_path配置:
base_path=/leyou/fdfs/tracker # tracker的数据和日志存放目录

启动tracker

我们可以使用 sh /etc/init.d/fdfs_trackerd 启动,不过安装过程中,fdfs已经被设置为系统服务,我们可以采用熟悉的服务启动方式:

sudo service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop

或者



service fdfs_trackerd start
如果不能成功启动,可以通systemctl命令

systemctl start fdfs_trackerd
成功之后可以看见
[root@localhost fdfs]# service fdfs_trackerd start
Starting fdfs_trackerd (via systemctl):                    [  OK  ]

 进入刚才创建的tracker目录 发现多了data和logs两个目录

另外,我们可以通过以下命令,设置tracker开机启动:

sudo chkconfig fdfs_trackerd on

或者

首先需要给执行权限,

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

然后开始修改rc.local

vi /etc/rc.d/rc.local

在配置文件最后加下最后一句话即可

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
service fdfs_trackerd start

保存,然后 查看tracker端口监听情况

[root@localhost fastdfs_tracker]# netstat -unltp|grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      2233/fdfs_trackerd

到此22122端口监听成功。 tracker 就算配置完成

启动storage

  • 编辑storage配置

首先我们将模板文件进行赋值和重命名:

sudo cp storage.conf.sample storage.conf
sudo vim storage.conf

打开storage.conf,修改base_path配置:

[root@MiWiFi-R4A-srv fsdf]# cd storage
[root@MiWiFi-R4A-srv storage]# pwd
/usr/local/fsdf/storage
[root@MiWiFi-R4A-srv fsdf]# cd storage_data/
[root@MiWiFi-R4A-srv storage_data]# pwd
/usr/local/fsdf/storage_data
base_path=/usr/local/fsdf/storage # storage的数据和日志存放目录
store_path0=/usr/local/fsdf/storage_data # storage_data的上传文件存放路径
tracker_server=192.168.31.68:22122 # tracker的地址,这里填写你的服务器地址

保存之后 创建软引用

ln -s /usr/bin/fdfs_storaged /usr/local/bin
  • 启动storage

    我们可以使用 sh /etc/init.d/fdfs_storaged 启动,同样我们可以用服务启动方式:

    sudo service fdfs_storaged start  # 启动fdfs_storaged服务,停止用stop

    同理 如果不能启动可以用下述命令

    systemctl start fdfs_storaged

成功应该是如下

[root@localhost fdfs]# service fdfs_stroaged start
Starting fdfs_storaged (via systemctl):                    [  OK  ]

同样设置开机启动

修改rc.local

vim /etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
service fdfs_trackerd start
service fdfs_storaged start

同样查看服务是否启动

[root@localhost fastdfs]# netstat -unltp | grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      2233/fdfs_trackerd
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      2323/fdfs_storaged


服务启动,到此fastdfs已经配置完成了。最后我们再确认一下,storage是否注册到了tracker中去。 

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

成功后可以看到: 

ok,修改客户端配置文件

vi /etc/fdfs/client.conf

sudo cp client.conf.sample client.conf
sudo vim client.conf

base_path=/usr/local/fsdf/tracker #tracker服务器文件路径
tracker_server=192.168.31.68:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=8080# tracker 服务器的 http端口号,必须和tracker的设置对应起来

接下来上传图片到centos7为测试

rz 命令选择一张照片 上传到随便一个目录但是 一定要复制出来

接下来

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /root/1111.png  #你上传的图片路径(linux上的)

成功之后会返回图片的路径

group1/M00/00/00/wKgfRGEUnp2AXxvnAAE4YHmlUTc362.jpg

我们去刚才上传的路径查看是否上传成功~~~

cd cd /usr/local/fsdf/storage_data/data

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


cd 00

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

cd 00

ls


wKgfRGEUhDiAc-9OAAE4YHmlUTc017.jpg  wKgfRGEUnp2AXxvnAAE4YHmlUTc362.jpg


就看到你刚才传的图片了

data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

然后我们HTTP访问文件

这时候还是不能访问的 ,因为我们没安装Nginx 

开始安装  安装Nginx及FastDFS模块

FastDFS的Nginx模块

  • 解压

    nuzip fastdfs-nginx-module-master.zip

配置config文件

# 进入配置目录
cd /home/file/fastdfs-nginx-module-master/src
# 修改配置
vim config
# 执行下面命令(将配置中的/usr/local改为/usr):
:%s+/usr/local/+/usr/+g

配置mod_fastdfs.conf

# 将src目录下的mod_fastdfs.conf复制到 /etc/fdfs目录:
sudo cp mod_fastdfs.conf /etc/fdfs/
# 编辑该文件
sudo vim /etc/fdfs/mod_fastdfs.cof

修改一下配置:

connect_timeout=10                        # 客户端访问文件连接超时时长(单位:秒)
tracker_server=192.168.31.64:22122   # tracker服务IP和端口
url_have_group_name=true                  # 访问链接前缀加上组名
store_path0=/usr/local/fsdf/storage_data               # 文件存储路径


 

复制 FastDFS的部分配置文件到/etc/fdfs目录

cd /home/file/fastdfs-6.07/conf     # 这里是你Fastdfs解压的位置
cp http.conf mime.types /etc/fdfs/

安装Nginx

  • 解压

    tar -zxvf nginx-1.20.1.tar.gz
    
    
  • 配置

    sudo ./configure --prefix=/usr/local/nginx --sbin-path=/usr/bin/nginx --add-module=/home/file/fastdfs-nginx-module-master/src       
    
    # 这里--add-module 这里是你配置的fastdfs-nginx-module-master的路径  
    
  • 编译安装

    sudo make && sudo make install
    
    
  • 配置nginx整合fastdfs-module模块

我们需要修改nginx配置文件,在/usr/local/nginx/conf文件中:

sudo vim  /usr/local/nginx/conf

将文件中,原来的server 80{ ...} 部分代码替换为如下代码:

    server {
        listen       80;
        server_name  image.taotao.com;

      # 监听域名中带有group的,交给FastDFS模块处理
        location ~/group([0-9])/ {
            ngx_fastdfs_module;
        }

        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
    }
  • 启动

    nginx # 启动
    nginx -s stop # 停止
    nginx -s reload # 重新加载配置
    
    
  • 设置nginx开机启动

  • 创建一个开机启动的脚本:

    vim /etc/init.d/nginx
    
    

    添加以下内容:

  • #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/bin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
       if [ -n "$user" ]; then
          if [ -z "`grep $user /etc/passwd`" ]; then
             useradd -M -s /bin/nologin $user
          fi
          options=`$nginx -V 2>&1 | grep 'configure arguments:'`
          for opt in $options; do
              if [ `echo $opt | grep '.*-temp-path'` ]; then
                  value=`echo $opt | cut -d "=" -f 2`
                  if [ ! -d "$value" ]; then
                      # echo "creating" $value
                      mkdir -p $value && chown -R $user $value
                  fi
              fi
           done
        fi
    }
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    
    

  • 修改文件权限,并加入服务列表

    # 修改权限
    chmod 777 /etc/init.d/nginx 
    # 添加到服务列表
    chkconfig --add /etc/init.d/nginx 
    
    
  • 设置开机启动

    chkconfig nginx on
    

这样 你输入下你服务器的IP地址就可以看到nginx的启动页面了

 然后后面在配上前面Fastdfs的路径 就可以访问到你的图片了

因为这会我们还是用的80端口。你可以自己去nginx设置下

/usr/local/nginx/conf

修改server 80{ ...} 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值