Loading...

文章背景图

[记录] Ubuntu18.04 搭建FastDFS分布式存储系统

2020-11-02
1033
-
- 分钟

系统版本

  • 两台虚拟机,系统都为Ubuntu 18.04.5 LTS
  • 虚拟机ip分别为
    • 192.168.10.10 这台虚拟机用作tracker服务器
    • 192.168.10.11 这台虚拟机用作storage服务器,该虚拟机为 192.168.10.10 的完全复制,所以系统环境完全一致

安装编译需要的软件

sudo apt update && sudo apt install wget curl gcc make libpcre3 libpcre3-dev zlib1g-dev

编译&安装fastcommon

  • 当前最新版本为V1.0.43
  • 下载源码
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
  • 解压源码
tar -zxf V1.0.43.tar.gz
  • 进入目录,编译并安装
cd libfastcommon-1.0.43 && ./make.sh && sudo ./make.sh install && cd ~/

编译&安装fastDFS

  • 当前最新版本为V6.06
  • 下载源码
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
  • 解压源码
tar -zxf V6.06.tar.gz
  • 进入目录,编译并安装
cd fastdfs-6.06 && ./make.sh && sudo ./make.sh install
  • 安装后再从源码中复制配置文件到安装目录
sudo cp conf/* /etc/fdfs/ && cd ~/

tracker设置

FastDFS 配置文件详解

  • 修改 /etc/fdfs/tracker.conf 文件

# tracker所属的组
store_group=group1

# 目录地址(根目录必须存在,子目录会自动创建)
base_path=/media

# tracker 端口
port=22122

# http访问端口
http.server_port=8099

storage设置

  • 修改 /etc/fdfs/storage.conf 文件

# storage所属的组
group_name=group1

# stroage端口
port=23000
# 目录地址(根目录必须存在,子目录会自动创建)
base_path=/media

# 逐一配置store_path个路径,索引号基于0。注意配置方法后面有0,1,2 …,需要配置0到store_path - 1
# 如果不配置base_path0,那边它就和base_path对应的路径一样
store_path0=/media

# tracker服务器的ip以及端口,ip不能为127.0.0.1以及localhost
tracker_server=192.168.10.10:22122

# http访问端口
http.server_port=8099

  • 修改 /etc/fdfs/client.conf 文件

base_path=/media

tracker_server=192.168.10.10:22122

http.tracker_server_port=8099

测试

  • 开启tracker服务器
sudo fdfs_trackerd /etc/fdfs/tracker.conf start
  • 开启storage服务器
sudo fdfs_storaged /etc/fdfs/storage.conf start
  • 在storage服务器执行命令测试上传,anti-steal.jpg为在源码的conf文件夹下有,之前copy过
fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg

编译安装nginx

  • 早在FastDFS V4.05版本的时候就删除了对于HTTP的支持,所以即使上传成功了,使用给出的url也无法访问到文件,所以在这里用到nginx
  • 编译nginx所需的依赖
sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev
  • 下载nginx源码,当前最新版本为1.19.4
wget https://github.com/nginx/nginx/archive/release-1.19.4.tar.gz
  • 解压nginx源码并进入目录
tar -zxf release-1.19.4.tar.gz && cd nginx-release-1.19.4
  • 生成Makefile,prefix指向的目录是之后的安装目录
./auto/configure --prefix="/etc/nginx" \
        --with-http_gzip_static_module \
        --with-http_stub_status_module \
        --with-pcre \
        --with-http_realip_module \
        --with-http_flv_module \
        --with-http_mp4_module \
        --with-http_secure_link_module \
        --with-http_random_index_module \
        --with-http_v2_module
  • 编译并安装nginx
make -j$[$(nproc)+1] 

或者使用查看实时的编译信息

make -j$[$(nproc)+1] V=s

安装

sudo make install

配置nginx

nginx配置参考来源

  • 配置文件的路径为安装目录下的 conf/nginx.conf 文件
  • 上面在生成 Makefile 时指定的为 /etc/nginx , 那么完整的路径则为 /etc/nginx/conf/nginx.conf
  • 在 nginx.conf 的http区域中加入如下内容
server {
    # 这里因为storage和tracker都是设置的8099,为了上传完文件后不用每次访问时都修改端口,这里选择与其保持一致
    listen       8099;
    server_name  localhost-fdfs;
 
    location /group1/M00{
        # 路径为 /etc/fdfs/storage.conf 中的 base_path 的路径加上 data
        alias /media/data/;
        autoindex on;
    }
 
    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   html;
    }
}
  • 创建nginx的service文件,方便用于启动或停止nginx

创建文件

sudo touch /etc/systemd/system/nginx.service

添加内容

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/etc/nginx/logs/nginx.pid
ExecStartPre=/etc/nginx/sbin/nginx -t
ExecStart=/etc/nginx/sbin/nginx -c /etc/nginx/conf/nginx.conf
ExecReload=/etc/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

如果更改了nginx的安装目录,需要注意将 ‘/etc/nginx’ 改为自己的nginx安装目录
然后执行

sudo systemctl daemon-reload
sudo service nginx start

如果nginx启动成功,那么就可以使用之前测试时给出的url去访问文件了

评论交流

文章目录