前言
本来想在docker下安装的,奈何本人能力无法解决其相关网卡问题,还是老老实实地在服务器本身安装吧
一、环境准备
0.开端口
端口 | 描述 |
---|---|
80 | nginx |
8000 | nginx-tracker |
8888 | nginx-storage |
22122 | tracker |
23000 | storage |
1.安装gcc
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib
zlib-devel openssl-devel wget vim -y
2.创建文件夹以存放文件
在/home下建立如下目录
3.下载相关压缩包
1.libfastcommon
https://github.com/happyfish100/libfastcommon/releases/tag/V1.0.53
2.FastDFS
https://github.com/happyfish100/fastdfs/releases/tag/V6.07
3.fastdfs-nginx-module
https://github.com/happyfish100/fastdfs-nginx-module/releases/tag/V1.22
4.nginx
http://nginx.org/download/nginx-1.15.4.tar.gz
5.ngx_cache_purge
http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
把上述的压缩包全部拉进创建的soft文件夹,只看红色就好,蓝色是解压了的,下面会进行
二、开始安装
1.libfastcommon
tar -zvxf libfastcommon-1.0.53.tar.gz
cd libfastcommon-1.0.53/
#编译安装
./make.sh && ./make.sh install
2.安装FastDFS
cd ..
tar -zvxf fastdfs-6.07.tar.gz
cd fastdfs-6.07/
#编译安装
./make.sh && ./make.sh install
#供nginx访问使用
cp conf/http.conf /etc/fdfs
cp conf/mime.types /etc/fdfs
3.安装fastdfs-nginx-module
cd ..
tar -zvxf fastdfs-nginx-module-1.22.tar.gz
cp fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs
4.安装ngx_cache_purge
tar -zvxf ngx_cache_purge-2.3.tar.gz
5.安装nginx
tar -zxvf nginx-1.15.4.tar.gz
cd nginx-1.15.4/
./configure --add-module=/home/pan/tttm/fastdfs/soft/fastdfs-nginx-module-1.22/src/ --add-module=/home/pan/tttm/fastdfs/soft/ngx_cache_purge-2.3
上面的最后一步可能会出错,如
则添加如下命令
yum -y install pcre-devel
或
yum -y install pcre-devel
再重新执行上面的configure命令,如果还有错误,就去网上搜索一下缺少了什么,安装上就好。如果configure成功,就会显示如下
最后
make && make install #编译安装
如果是新加模块,则在执行上面的./configure后,只执行make,然后停下nginx,再cp objs/nginx /usr/local/nginx/sbin/nginx
,重新启动就好(可能还要这样启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
三、改配置文件
噩梦开始了
1.tracker.conf
打开在/etc/fdfs,把tracker.conf.sample复制一下,放在同级目录下,改名为tracker.conf,对其进行编辑,更改下面的信息
port = 22122
base_path = /home/pan/tttm/fastdfs/tracker
store_lookup = 2
http.server_port = 8000
改完后复制到各个服务器的相应位置
#启动tracker
/etc/init.d/fdfs_trackerd start
#停止tracker
/etc/init.d/fdfs_trackerd stop
2.storage.conf
进入服务器目录/etc/fdfs,然后进行复制storage.conf.sample并更名为storage.conf,进行编辑
group_name = group[]
port = 23000
base_path = /home/pan/tttm/fastdfs/storage
store_path0 = /home/pan/tttm/fastdfs/storage
tracker_server=fdfs01:22122
tracker_server=fdfs02:22122
tracker_server=fdfs03:22122
#启动storage
/etc/init.d/fdfs_storaged start
#关闭storage
/etc/init.d/fdfs_storaged stop
当所有的tracker和storage都打开了后,在任意一台服务器输入
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
来查看集群信息
可以看到类似这样的图(图是网上找的,他的集群点比我的多,只要看自己的对不对就好)
3.client.conf
同理,进入到/etc/fdfs/目录下,我们可以看到client.conf.sample这么一个配置文件,复制一份该文件并命名为client.conf,对其进行编辑。
base_path = /home/pan/tttm/fastdfs/client
tracker_server = fdfs01:22122
tracker_server = fdfs02:22122
tracker_server = fdfs03:22122
4.mod_fastdfs.conf
connect_timeout=10
tracker_server=fdfs01:22122
tracker_server=fdfs02:22122
tracker_server=fdfs03:22122
storage_server_port=23000
url_have_group_name=true
store_path0=/home/pan/tttm/fastdfs
group_name=group[]
group_count=[]
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/pan/tttm/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/pan/tttm/fastdfs/storage
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/home/pan/tttm/fastdfs/storage
5.nginx.conf(for storage)
进入到/usr/local/nginx/conf/这个目录下,编辑nginx.conf文件
user root;
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
通过下列命令启动
#启动
/usr/local/nginx/sbin/nginx
#停止
/usr/local/nginx/sbin/nginx -s stop
#重新加载
/usr/local/nginx/sbin/nginx -s reload
上传测试:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 放文件的路径
成功后会返回文件的地址,类似这种 group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg
在浏览器输入http://IP地址:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,如果返回图片即为成功
6.nginx.conf(for tracker)
events {
worker_connections 1024;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#设置缓存
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
#设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限
proxy_cache_path /home/pan/tttm/fastdfs/cache levels=1:2
keys_zone=http-cache:200m max_size=1g inactive=30d;
proxy_temp_path /home/pan/tttm/fastdfs/cache/tmp;
#设置 group1 的服务器
upstream fdfs_group1 {
server 139.196.97.69:8888 weight=1 max_fails=2 fail_timeout=30s;
#server 192.168.50.138:8888 weight=1 max_fails=2 fail_timeout=30s;
}
#设置 group2 的服务器
upstream fdfs_group2 {
server 120.24.228.79:8888 weight=1 max_fails=2 fail_timeout=30s;
#server 192.168.50.140:8888 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 8000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#设置 group 的负载均衡参数
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group2;
expires 30d;
}
#设置清除缓存的访问权限
location ~/purge(/.*) {
allow 127.0.0.1;
allow 139.196.97.69;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
加入后重新加载nginx
此时在浏览器输入http://IP地址:8000/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,如果返回图片即为成功