參考地址:php
https://blog.csdn.net/kamroselee/article/details/80334621
https://www.cnblogs.com/chiangchou/p/fastdfs.htmlhtml
1、FastDFS編譯:nginx
1. 下載安裝libfastcommon:git
下載: wget -P /srv/ftp https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz 解壓: tar xzvf /srv/ftp/V1.0.39.tar.gz -C /usr/local/src/ 重命名: mv /usr/local/src/libfastcommon-1.0.39 /usr/local/src/libfastcommon
進入目錄: cd /usr/local/src/libfastcommon/
編譯: ./make.sh
安裝: ./make.sh install
2. 建立兩個軟鏈接:github
ln -sv /usr/include/fastcommon/ /usr/local/include/fastcommon ln -sv /usr/lib/libfastcommon.so /usr/local/lib/libfastcommon.so
3. 將FastDFS上傳進行進行編譯安裝:vim
解壓: tar xzvf /srv/ftp/FastDFS_v5.08.tar.gz -C /usr/local/src/ 進入目錄:cd /usr/local/src/FastDFS/ 編譯: ./make.sh 安裝: ./make.sh install
檢查是否安裝成功:「ll /etc/fdfs/」,是否有配置模板;數組
2、fastdfs-tracker(追蹤)服務安裝:緩存
1.經過模板複製一個tracker配置文件:session
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
2. 建立一個目錄進行數據存儲:app
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
3. 修改tracker.conf配置文件:vim /etc/fdfs/tracker.conf
port=22122 //tracker服務端口 base_path=/usr/data/fdfs/tracker //tracker數據存儲目錄
4. 進行客戶端配置文件拷貝:
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
5. 建立客戶端信息的存儲目錄:
mkdir -p /usr/data/fdfs/client
6. 編輯「client.conf」配置文件:vim /etc/fdfs/client.conf
base_path=/usr/data/fdfs/client tracker_server=192.168.195.160:22122
7. 啓動tracker服務:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
8.此時能夠經過client上傳圖片進行驗證:(建議storagr服務安裝完成一塊兒測試)
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /srv/ftp/xb.png //上傳 /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKjDoV0lfHSAbXyxAAGQU2qW1Zw280.png //下載 /usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKjDoV0lfHSAbXyxAAGQU2qW1Zw280.png //刪除
/usr/bin/fdfs_monitor /etc/fdfs/client.conf //查看全部主機狀態
3、fastdfs-storage(存儲)服務安裝:
1. 經過模板複製一個storage配置文件:
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
2. 定義一個目錄負責存儲storage數據:mkdir -p /usr/data/fdfs/storage
3. 配置「storage.conf」配置文件:vim /etc/fdfs/storage.conf
base_path=/usr/data/fdfs/storage //數據保存目錄 store_path0=/usr/data/fdfs/storage //數據存儲目錄,能夠在此掛載多個路徑 tracker_server=192.168.195.160:22122 //tracker服務地址
4. 啓動storage服務:
3、fastdfs-storage(存儲)服務安裝:
1. 經過模板複製一個storage配置文件:
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
2. 定義一個目錄負責存儲storage數據:mkdir -p /usr/data/fdfs/storage
3. 配置「storage.conf」配置文件:vim /etc/fdfs/storage.conf
base_path=/usr/data/fdfs/storage //數據保存目錄 store_path0=/usr/data/fdfs/storage //數據存儲目錄,能夠在此掛載多個路徑 tracker_server=192.168.195.160:22122 //tracker服務地址
4. 啓動storage服務:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
4、storage配置nginx:
1. 將fastdfs與nginx有關的程序包上傳:
2. 解壓到「usr/local/src」目錄中:
tar xzvf /srv/ftp/nginx-1.11.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/echo-nginx-module-0.59.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/ngx_cache_purge-2.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/nginx-upstream-fair-a18b409.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/pcre-8.36.tar.gz -C /usr/local/src/ tar xvf /srv/ftp/zlib-1.2.8.tar.gz -C /usr/local/src/
3. 創建一個nginx存儲目錄:
mkdir -p /usr/local/nginx/{logs,conf,fastcgi_temp,sbin,client_body_temp,proxy_temp,uwsgi_temp,scgi_temp}
4. 進行nginx源代碼目錄進行配置、編譯安裝:
》進入nginx源代碼目錄:cd /usr/local/src/nginx-1.11.3/
》編譯前的配置:
./configure --prefix=/usr/local/nginx/ \ --sbin-path=/usr/local/nginx/sbin/ \ --with-http_ssl_module \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \ --http-client-body-temp-path=/usr/local/nginx/client_body_temp \ --http-proxy-temp-path=/usr/local/nginx/proxy_temp \ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \ --http-scgi-temp-path=/usr/local/nginx/scgi_temp \ --add-module=/usr/local/src/echo-nginx-module-0.59 \ --add-module=/usr/local/src/gnosek-nginx-upstream-fair-a18b409 \ --add-module=/usr/local/src/ngx_cache_purge-2.3 \ --add-module=/usr/local/src/fastdfs-nginx-module/src \ --with-zlib=/usr/local/src/zlib-1.2.8 \ --with-pcre=/usr/local/src/pcre-8.36
》程序編譯的時候會出現一個錯誤,打開目錄進行修改:vim /usr/local/src/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" //原來
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" //修改後
》執行編譯和安裝:make && make install
5. 此時進行nginx與storage整合:
》拷貝配置文件:cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
》修改「mod_fastdfs.conf」配置文件:vim /etc/fdfs/mod_fastdfs.conf
base_path=/usr/data/fdfs/storage //設置storage存儲地址 tracker_server=192.168.195.160:22122 //tracker服務地址 group_name=group1 //設置存儲組名稱 url_have_group_name = true //設置URL顯示組名 store_path0=/usr/data/fdfs/storage //設置數組存儲節點
6. 要想HTTP訪問,還須要兩個Http配置文件:
cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/ cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/
7. 在進行文件上傳的時候有一個「M00」的路徑,若是要想經過nginx訪問,必須爲其設置一個軟鏈接:ln -s /usr/data/fdfs/storage /usr/data/fdfs/storage/M00
8. 修改nginx配置文件:vim /usr/local/nginx/conf/nginx.conf
location ~/group[1-3]/M00 { root /usr/data/fdfs/storage/ ; ngx_fastdfs_module ; }
9. 進行nginx的測試:/usr/local/nginx/sbin/nginx -t
10. 若是複製配置多臺storage:
》修改:vim /etc/fdfs/storage.conf
group_name=group2
》修改:vim /etc/fdfs/mod_fastdfs.conf
group_name=group2
11. 啓動storage服務:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
啓動tracker服務:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
啓動nginx:/usr/local/nginx/sbin/nginx
查看主機狀態:/usr/bin/fdfs_monitor /etc/fdfs/client.conf
5、tracker配置nginx:
1. 將tracker與nginx有關的程序包上傳:
2. 將全部源代碼解壓:
tar xzvf /srv/ftp/nginx-1.11.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/echo-nginx-module-0.59.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/ngx_cache_purge-2.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/nginx-upstream-fair-a18b409.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/pcre-8.36.tar.gz -C /usr/local/src/ tar xvf /srv/ftp/zlib-1.2.8.tar.gz -C /usr/local/src/
3. 建立nginx編譯後的存儲目錄:
mkdir -p /usr/local/nginx/{logs,conf,fastcgi_temp,sbin,client_body_temp,proxy_temp,uwsgi_temp,scgi_temp}
4. 進行nginx源代碼目錄進行配置、編譯安裝:
》進入nginx源代碼目錄:cd /usr/local/src/nginx-1.11.3/
》編譯前的配置:
./configure --prefix=/usr/local/nginx/ \ --sbin-path=/usr/local/nginx/sbin/ \ --with-http_ssl_module \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \ --http-client-body-temp-path=/usr/local/nginx/client_body_temp \ --http-proxy-temp-path=/usr/local/nginx/proxy_temp \ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \ --http-scgi-temp-path=/usr/local/nginx/scgi_temp \ --add-module=/usr/local/src/echo-nginx-module-0.59 \ --add-module=/usr/local/src/gnosek-nginx-upstream-fair-a18b409 \ --add-module=/usr/local/src/ngx_cache_purge-2.3 \ --add-module=/usr/local/src/fastdfs-nginx-module/src \ --with-zlib=/usr/local/src/zlib-1.2.8 \ --with-pcre=/usr/local/src/pcre-8.36
》程序編譯的時候會出現一個錯誤,打開目錄進行修改:vim /usr/local/src/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" //原來
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" //修改後
》執行編譯和安裝:make && make install
5. 進行nginx配置文件修改:vim /usr/local/nginx/conf/nginx.conf
》定義一些nginx數據緩存目錄:mkdir -p /usr/data/ngin/{tmp,cache}
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 65536; use epoll; } http { include mime.types; default_type application/octet-stream; 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 /usr/data/nginx/cache levels=1:2 keys_zone=http-cache:500m max_size=10g inactive=30d; proxy_temp_path /usr/data/nginx/tmp; upstream fdfs_group1 { server 192.168.28.227:8090 weight=1 max_fails=2 fail_timeout=30s; } upstream fdfs_group2 { server 192.168.28.227:8091 weight=1 max_fails=2 fail_timeout=30s; } #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 { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; 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 192.168.28.0/24; deny all; proxy_cache_purge http-cache $1$is_args$args; } location / { root html; index index.html index.htm; } #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; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
6. nginx啓動檢測:/usr/local/nginx/sbin/nginx -t
nginx啓動:/usr/local/nginx/sbin/nginx