系统版本
- 两台虚拟机,系统都为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设置
- 修改 /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
- 配置文件的路径为安装目录下的 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去访问文件了