## 系统版本
- 两台虚拟机,系统都为Ubuntu 18.04.5 LTS
- 虚拟机ip分别为
- 192.168.10.10 这台虚拟机用作tracker服务器
- 192.168.10.11 这台虚拟机用作storage服务器,该虚拟机为 192.168.10.10 的完全复制,所以系统环境完全一致
## 安装编译需要的软件
```shell
sudo apt update && sudo apt install wget curl gcc make libpcre3 libpcre3-dev zlib1g-dev
```
## 编译&安装fastcommon
- 当前最新版本为V1.0.43
- 下载源码
```shell
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
```
- 解压源码
```shell
tar -zxf V1.0.43.tar.gz
```
- 进入目录,编译并安装
```shell
cd libfastcommon-1.0.43 && ./make.sh && sudo ./make.sh install && cd ~/
```
## 编译&安装fastDFS
- 当前最新版本为V6.06
- 下载源码
```shell
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
```
- 解压源码
```shell
tar -zxf V6.06.tar.gz
```
- 进入目录,编译并安装
```shell
cd fastdfs-6.06 && ./make.sh && sudo ./make.sh install
```
- 安装后再从源码中复制配置文件到安装目录
```shell
sudo cp conf/* /etc/fdfs/ && cd ~/
```
## tracker设置
[FastDFS 配置文件详解](https://blog.csdn.net/qq_27384769/article/details/80603483)
- 修改 /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服务器
```shell
sudo fdfs_trackerd /etc/fdfs/tracker.conf start
```
- 开启storage服务器
```shell
sudo fdfs_storaged /etc/fdfs/storage.conf start
```
- 在storage服务器执行命令测试上传,anti-steal.jpg为在源码的conf文件夹下有,之前copy过
```shell
fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg
```
## 编译安装nginx
- 早在FastDFS V4.05版本的时候就删除了对于HTTP的支持,所以即使上传成功了,使用给出的url也无法访问到文件,所以在这里用到nginx
- 编译nginx所需的依赖
```shell
sudo apt-get install libpcre3 libpcre3-dev zlib1g-dev
```
- 下载nginx源码,当前最新版本为1.19.4
```shell
wget https://github.com/nginx/nginx/archive/release-1.19.4.tar.gz
```
- 解压nginx源码并进入目录
```shell
tar -zxf release-1.19.4.tar.gz && cd nginx-release-1.19.4
```
- 生成Makefile,prefix指向的目录是之后的安装目录
```shell
./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
```shell
make -j$[$(nproc)+1]
```
> 或者使用查看实时的编译信息
```shell
make -j$[$(nproc)+1] V=s
```
安装
```shell
sudo make install
```
## 配置nginx
> [nginx配置参考来源](https://blog.csdn.net/prcyang/article/details/89946190)
- 配置文件的路径为安装目录下的 conf/nginx.conf 文件
- 上面在生成 Makefile 时指定的为 /etc/nginx , 那么完整的路径则为 /etc/nginx/conf/nginx.conf
- 在 nginx.conf 的http区域中加入如下内容
```plaintext
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
> 创建文件
```shell
sudo touch /etc/systemd/system/nginx.service
```
> 添加内容
```shell
[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安装目录
> 然后执行
```shell
sudo systemctl daemon-reload
```
```shell
sudo service nginx start
```
如果nginx启动成功,那么就可以使用之前测试时给出的url去访问文件了
[记录] Ubuntu18.04 搭建FastDFS分布式存储系统