一.环境准备
CentOS Linux CentOS Linux release 8.0.1905 (Core)
宝塔免费版 8.0.5
通过宝塔面板编译安装 Nginx 1.24.0
二.FastDFS的软件版本
- libfastcommon-1.0.36.zip
https://github.com/happyfish100/libfastcommon/archive/refs/tags/V1.0.36.zip - fastdfs-5.11.zip
https://github.com/happyfish100/fastdfs/archive/refs/tags/V5.11.zip - fastdfs-nginx-module-1.20.zip
https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.20.zip
三.华为云服务器上的操作
华为云防火墙 开放端口 TCP 8080 22122 23000 等,记得开放要用的端口,否则后面操作失败。
1.安装libfastcommon
# 创建临时目录,并
mkdir /home/temp
cd /home/temp/
# 解压所有的压缩包
unzip libfastcommon-1.0.36.zip
unzip fastdfs-5.11.zip
unzip fastdfs-nginx-module-1.20.zip
# 安装fastdfs的环境
cd libfastcommon-1.0.36
./make.sh
./make.sh install
# 建立软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
2.安装FastDFS
# 安装FastDFS
cd /home/temp/fastdfs-5.11
./make.sh
./make.sh install
#从样本中拷贝配置文件
cd /etc/fdfs/
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
3. 安装tracker
# 一并把后面要的所有目录创建
mkdir /opt/fastdfs_tracker
mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data
# 配置文件 tracker.conf
vim /etc/fdfs/tracker.conf
# 关注以下配置
disabled=false
port=22122 #默认端口号
base_path=/opt/fastdfs_tracker #自己刚创建的目录
http.server_port=8080 #默认端口是8080
#bind_addr 留空即可,不写则任何人都可以访问
bind_addr=
# 查看支持命令 ,常用的有 start,stop,status
service fdfs_trackerd
# 启动tracker,这里显示ok还不行,还得看下面的监听端口看不看得到
service fdfs_trackerd start
# 开机自启动
echo "service fdfs_trackerd start" |tee -a /etc/rc.d/rc.local
# 查看tracker监听端口
# 这里必须看到 tracker的监听端口,否则请检查上面的操作
netstat -unltp|grep fdfs
4.安装storage
# 配置文件 storage.conf
vim /etc/fdfs/storage.conf
# 关注以下配置
disabled=false
group_name=group1 #组名,根据实际情况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=公网IP:22122 #华为云服务器的公网IP
http.server_port=8888 #设置http端口号
# 建立软链接
ln -s /usr/bin/fdfs_storaged /usr/local/bin
# 启动storage ,这里ok还不行,必须看到storage的监听端口才行
service fdfs_storaged start
# 开机自启动 storage
echo "service fdfs_storaged start" |tee -a /etc/rc.d/rc.local
# 看一下是否有tracker和storage的2个监听端口,否则请检查上面操作
netstat -unltp | grep fdfs

监听端口
5.校验整合
# 校验整合,如果校验失败,请返回前面检查错误
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# 看到以下重要信息即成功
tracker server is 公网IP:22122
Storage 1: # Storage 的数字任意,主要看到自己的公网IP ACTIVE 就行

校验整合
6.配置客户端
# 配置文件 client.conf
vim /etc/fdfs/client.conf
# 关注以下配置
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=公网IP:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=8080 # tracker 服务器的 http端口号,必须和tracker的设置对应起来
7.模拟上传/下载
上传一张测试图片到 /home/test/ 目录下
# 图片路径 /home/temp/test.jpg
# 上传图片
fdfs_upload_file /etc/fdfs/client.conf /home/temp/test.jpg
# 看到group1/M00/00/00字眼即成功了,这个信息后面有用
# group1/M00/00/00/xxxxx.jpg
#下载图片
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/xxxxx.jpg
#查看当前路径下有没有图片
ls
四.宝塔的目录结构
1.nginx源码位置(重点)
在面板上选择编译安装nginx1.24.0完成后,就可以看到源码的位置了
# nginx源码目录
/www/server/nginx/src/
五.重新编译宝塔的Nginx
1. 配置nginx-module
# 修改nginx-module config文件
vim /home/temp/fastdfs-nginx-module-1.20/src/config
# 修改以下两处并保存
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

config
2.查看nginx的编译参数
# 进入源码目录
cd /www/server/nginx/src/
nginx -V
复制返回的结果,比如我的是:
--user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module
3.添加FastDFS模块
# 把获得的参数最后添加上 以下语句
--add-module=/home/temp/fastdfs-nginx-module-1.20/src/
4.执行./configure命令
#上面拼凑的最后命令是
./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --add-module=/www/server/nginx/src/ngx_http_substitutions_filter_module-master --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/home/temp/fastdfs-nginx-module-1.20/src/
5.引入依赖
# 编辑 /www/server/nginx/src/objs/Makefile
vim /www/server/nginx/src/objs/Makefile
# 添加以下语句
-I usr/include/fastdfs \
-I usr/include/fastdfscommon \
# 如下图

Makefile
6.编译nginx
# 在/www/server/nginx/src目录下执行命令
make
make install
六.验证结果
编译完成后,进入宝塔页面重启Nginx,看到如下日志即成功

重启Nginx

Nginx log
七.创建网站
使用宝塔面板创建一个新的网站,域名写 xxx.xxx.xxx 即可
xxx.xxx.xxx 替换为你自己的域名

创建网站
八.宝塔上修改Nginx配置文件
#新增下面几点
# fastdfs配置 ,最外面
upstream fdfs_group1 {
server xxx.xxx.xxx;
}
# 在 server{ }里面
server
{
#配置fastdfs-storage
location ~/group1/M00 {
root /opt/fastdfs_storage/data;
ngx_fastdfs_module;
}
#配置fastdfs-tracker
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
}
最终文件
# fastdfs配置 ,最外面
upstream fdfs_group1 {
server xxx.xxx.xxx;
}
server
{
listen 80;
server_name xxx.xxx.xxx;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/xxx.xxx.xxx;
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
include /www/server/panel/vhost/nginx/well-known/xxx.xxx.xxx.conf;
#CERT-APPLY-CHECK--END
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/xxx.xxx.xxx.conf;
#REWRITE-END
#配置fastdfs-storage
location ~/group1/M00 {
root /opt/fastdfs_storage/data;
ngx_fastdfs_module;
}
#配置fastdfs-tracker
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/xxx.xxx.xxx.log;
error_log /www/wwwlogs/xxx.xxx.xxx.error.log;
}
在宝塔上重启 nginx服务器并开启该网站
三.测试访问图片资源
之前在上传过图片,其信息是:
group1/M00/00/00/xxxxx.jpg
访问地址
http://xxx.xxx.xxx/group1/M00/00/00/xxxxx.jpg
效果如下:

image.png
六.可能会出现的问题及解决方案
1.执行./configure命令报错 LuaJIT error

LuaJIT error
- 下载 LuaJIT-2.0.5.tar.gz
https://luajit.org/download/LuaJIT-2.0.5.tar.gz
# 解压、编译并安装LuaJIT
tar -zxvf /home/temp/LuaJIT-2.0.5.tar.gz
sudo make install PREFIX=/usr/local/LuaJIT
这里指定安装的路径为/usr/local/LuaJIT,如果成功安装将可以看到如下结果:

成功编译
重新执行./configure命令

./configure
2.Nginx报错 load conf file"/etc/fdfs/mod_fastdfs.conf" fail

image.png
# 复制http.conf文件到/etc/fdfs/
cp /home/temp/fastdfs-5.11/conf/http.conf /etc/fdfs/
# 配置文件 mod_fastdfs.conf
sudo vim /etc/fdfs/mod_fastdfs.conf
# 关注以下配置
#include http.conf
# the base path to store log files
base_path=/opt/fastdfs_storage
# FastDFS tracker_server can ocur more than once, and tracker_server format is
# "host: port", host can be hostname or ip address
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=公网IP:22122
# the port of the local storage server
# the default value is 23000
storage_server_port=23000
# url中是否带有group信息
url_have_group_name=true
# the group name of the local storage server
group_name=group1
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf
# 实际文件存储路径
store_path0=/opt/fastdfs_storage_data
#store_path1=/home/yuqing/fastdfs2
3.Nginx报错 file /etc/fdfs/mime.types not exist

image.png
# 复制http.conf文件到/etc/fdfs/
cp /home/fastdfs-5.11/conf/mime. Types /etc/fdfs/