最近需要搭建一台上传下载的服务器,所以没办法硬着头皮就是干吧。本文讲述的步骤完全就是一步血泪史,当然如果你按照我得步骤走,我保证你不会出现错误,因为这一天零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 下载地址
fastdfs-client-java-master下载地址
直接下载就好
libfastcommon-master 下载地址
tar -xvf libfastcommon-master.zip
cd libfastcommon-master
sudo ./make.sh
sudo ./makesh install
Nginx 下载
PCRE 下载
tar -zxvf pcre-8.44.tar.gz
cd pcre-8.44
./configure
make
make install
zlib下载
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{ ...}