华为云Centos8宝塔系统 Nginx+FastDFS

一.环境准备

CentOS Linux CentOS Linux release 8.0.1905 (Core)
宝塔免费版 8.0.5
通过宝塔面板编译安装 Nginx 1.24.0

二.FastDFS的软件版本

三.华为云服务器上的操作

华为云防火墙 开放端口 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
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/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容