天天看點

圖床Fastdfs服務部署

Storage:

<code>git </code><code>clone</code> <code>https:</code><code>//github.com/happyfish100/libfastcommon.git </code>

<code>tar -zxf libfastcommon.tar.gz</code>

<code>cd libfastcommon</code>

<code>./make.sh</code>

<code>./make.sh install</code>

<code>cd ../</code>

<code>wget https:</code><code>//github.com/happyfish100/fastdfs/archive/V5.05.tar.gz </code>

<code>tar -zxf V5.05.tar.gz </code>

<code>cd fastdfs-5.05/</code>

<code>./make.sh </code>

<code>./make.sh install</code>

<code>mkdir</code> <code>-p /data/fastdfs</code>

<code>sed -i </code><code>'s#/usr/local/bin/#/usr/bin/#g'</code> <code>/etc/init.d/fdfs_storaged </code>

<code>cd /etc/fdfs/</code>

<code>cp storage.conf.sample storage.conf</code>

修改配置:

<code>vi storage.conf</code>

參考如下參數:

<code>[root@localhost fdfs]# egrep -v</code><code>"^$|#"</code> <code>storage.conf</code>

<code>disabled=false</code>

<code>group_name=group1</code>

<code>bind_addr=</code>

<code>client_bind=true</code>

<code>port=23000</code>

<code>connect_timeout=30</code>

<code>network_timeout=60</code>

<code>heart_beat_interval=30</code>

<code>stat_report_interval=60</code>

<code>base_path=/data/fastdfs</code>

<code>max_connections=256</code>

<code>buff_size = 256KB</code>

<code>accept_threads=1</code>

<code>work_threads=4</code>

<code>disk_rw_separated = true</code>

<code>disk_reader_threads = 1</code>

<code>disk_writer_threads = 1</code>

<code>sync_wait_msec=50</code>

<code>sync_interval=0</code>

<code>sync_start_time=00:00</code>

<code>sync_end_time=23:59</code>

<code>write_mark_file_freq=500</code>

<code>store_path_count=1</code>

<code>store_path0=/data/fastdfs</code>

<code>subdir_count_per_path=256</code>

<code>tracker_server=10.27.95.39:22122</code>

<code>tracker_server=10.27.95.168:22122</code>

<code>log_level=info</code>

<code>run_by_group=</code>

<code>run_by_user=</code>

<code>allow_hosts=*</code>

<code>file_distribute_path_mode=0</code>

<code>file_distribute_rotate_count=100</code>

<code>fsync_after_written_bytes=0</code>

<code>sync_log_buff_interval=10</code>

<code>sync_binlog_buff_interval=10</code>

<code>sync_stat_file_interval=300</code>

<code>thread_stack_size=512KB</code>

<code>upload_priority=10</code>

<code>if_alias_prefix=</code>

<code>check_file_duplicate=0</code>

<code>file_signature_method=hash</code>

<code>key_namespace=FastDFS</code>

<code>keep_alive=0</code>

<code>use_access_log = false</code>

<code>rotate_access_log = false</code>

<code>access_log_rotate_time=00:00</code>

<code>rotate_error_log = false</code>

<code>error_log_rotate_time=00:00</code>

<code>rotate_access_log_size = 0</code>

<code>rotate_error_log_size = 0</code>

<code>log_file_keep_days = 0</code>

<code>file_sync_skip_invalid_record=false</code>

<code>use_connection_pool = false</code>

<code>connection_pool_max_idle_time = 3600</code>

<code>http.domain_name=</code>

<code>http.server_port=8080</code>

啟動storage服務:

<code>[root@HY-DFS-01 fdfs]# /etc/init.d/fdfs_storaged start</code>

<code>Starting FastDFS storage server:</code>

<code>[root@HY-DFS-01 fdfs]# lsof -i :23000</code>

<code>COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME</code>

<code>fdfs_stor 10093 root    5u  IPv4 133350      0t0  TCP *:inovaport1 (LISTEN)</code>

<code>fdfs_stor 10093 root   20u  IPv4 133361      0t0  TCP iZbp13mxkrdvotpxv3btaoZ:inovaport1-&gt;10.27.96.119:36215 (ESTABLISHED)</code>

<code>[root@HY-DFS-01 fdfs]# netstat -tunlp|grep 23000</code>

<code>tcp        0      0 0.0.0.0:23000               0.0.0.0:*                   LISTEN      10093/fdfs_storaged</code>

<code>[root@HY-DFS-01 fdfs]# ps -ef|grep fdfs</code>

<code>root     10093     1  0 16:39 ?        00:00:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf</code>

<code>root     10111  9489  0 16:40 pts/0    00:00:00 grep fdfs</code>

安裝nginx服務:

所需檔案:

<code>[root@HY-DFS-01 tools]# ll</code>

<code>total 3884</code>

<code>drwxrwxr-x 10 root root    4096 Nov 30 13:45 fastdfs-5.05</code>

<code>-rw-r--r--  1 root root   20335 Dec  1 11:41 fastdfs-nginx-module-master.zip</code>

<code>drwxr-xr-x  5 root root    4096 Nov 29 15:42 libfastcommon</code>

<code>-rw-r--r--  1 root root  751033 Nov 29 15:31 libfastcommon.tar.gz</code>

<code>-rw-r--r--  1 root root  805253 Dec  1 13:44 nginx-1.6.3.tar.gz</code>

<code>-rw-r--r--  1 root root 2041593 Dec  1 11:41 pcre-8.37.tar.gz</code>

<code>drwxr-xr-x  2 root root    4096 Dec  1 11:42 scripts</code>

<code>-rw-r--r--  1 root root  336001 Nov 14 16:53 V5.05.tar.gz</code>

安裝依賴包:

<code>yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers</code>

安裝nginx需要安裝以下依賴包:

<code>yum -y install pcre-devel zlib-devel make</code>

建立使用者:

<code>useradd -u 602 -s /sbin/nologin -M nginx</code>

<code>mkdir</code> <code>-p /usr/local/nginx/tmp/{client,proxy,fcgi}</code>

解壓安裝包:

<code>tar -zxf pcre-8.37.tar.gz</code>

<code>unzip fastdfs-nginx-module-master.zip</code>

<code>tar -zxf nginx-1.6.3.tar.gz</code>

<code>cd nginx-1.6.3</code>

編譯

<code>./configure \</code>

<code>  </code><code>--prefix=/usr/local/nginx \</code>

<code>  </code><code>--user=nginx \</code>

<code>  </code><code>--group=nginx \</code>

<code>  </code><code>--with-http_ssl_module \</code>

<code>  </code><code>--with-http_gzip_static_module \</code>

<code>  </code><code>--http-client-body-temp-path=/usr/local/nginx/tmp/client/ \</code>

<code>  </code><code>--http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ \</code>

<code>  </code><code>--http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/ \</code>

<code>  </code><code>--with-poll_module \</code>

<code>  </code><code>--with-file-aio \</code>

<code>  </code><code>--with-http_realip_module \</code>

<code>  </code><code>--with-http_addition_module \</code>

<code>  </code><code>--with-http_random_index_module \</code>

<code>  </code><code>--with-pcre=/opt/tools/pcre-8.37 \</code>

<code>  </code><code>--with-http_stub_status_module \</code>

<code>  </code><code>--add-module=/opt/tools/fastdfs-nginx-module-master/src/</code>

安裝

<code>make &amp;&amp; make install</code>

<code> </code> 

<code>chown</code> <code>-R nginx. /usr/local/nginx</code>

<code>cd /opt/tools/fastdfs-nginx-module-master/src/</code>

<code>cp mod_fastdfs.conf /etc/fdfs/ </code>

<code>cp /opt/tools/fastdfs-5.05/conf/{anti-steal.jpg,http.conf,mime.types} /etc/fdfs/ </code>

<code>touch /</code><code>var</code><code>/log/mod_fastdfs.log   </code>

<code>chown</code> <code>nginx:nginx /</code><code>var</code><code>/log/mod_fastdfs.log</code>

修改nginx配置檔案:

<code>server {</code>

<code>listen 80;</code>

<code>listen 443 ssl;</code>

<code>ssl on;</code>

<code>ssl_certificate /usr/local/nginx/certs/file_yixian12580_cn.crt;</code>

<code>ssl_certificate_key /usr/local/nginx/certs/file_yixian12580_cn.key;</code>

<code>ssl_protocols TLSv1 TLSv1.1 TLSv1.2;</code>

<code>ssl_ciphers RC4-SHA:AES128-SHA:AES:!ADH:!aNULL:!DH:!EDH:!eNULL;</code>

<code>ssl_prefer_server_ciphers on;</code>

<code>ssl_session_cache shared:SSL-file:128m;</code>

<code>ssl_session_timeout 10m;</code>

<code>server_name file.yixian12580.cn;</code>

<code>access_log logs/access.log main;</code>

<code>access_log logs/file_yixian12580_cn.access.log main;</code>

<code>error_log</code> <code>logs/file_yixian12580_cn.error.log;</code>

<code>location /</code><code>static</code> <code>{</code>

<code>alias /data/web/</code><code>static</code><code>;</code>

<code>index index.html index.htm;</code>

<code>}</code>

<code>location /download {</code>

<code>alias /data/web/download;</code>

<code>location /group1/M00 {</code>

<code>################Fastdfs服務部署在多台伺服器時使用#####################</code>

<code># proxy_next_upstream http_502 http_504 error timeout invalid_header;#</code>

<code># proxy_cache http-cache;                                            #</code>

<code># proxy_cache_valid 200 304 12h;                                     #</code>

<code># proxy_cache_key </code><code>$uri</code><code>$is_args</code><code>$args</code><code>;                                 #</code>

<code># proxy_pass http:</code><code>//fdfs_group1;                                     #</code>

<code># expires 30d;                                                       #</code>

<code>######################################################################</code>

<code>alias /data/fastdfs/data;</code>

<code>set </code><code>$image_root</code> <code>"/data/fastdfs/data"</code><code>;</code>

<code>if</code> <code>(</code><code>$uri</code> <code>~ </code><code>"/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)"</code><code>) {</code>

<code>set </code><code>$image_dir</code> <code>"$image_root/$3/$4/"</code><code>;</code>

<code>set </code><code>$image_name</code> <code>"$5"</code><code>;</code>

<code>set </code><code>$file</code> <code>"$image_dir$image_name"</code><code>;</code>

<code>if</code> <code>(!-f </code><code>$file</code><code>) {</code>

<code># 關閉lua代碼緩存,友善調試lua腳本</code>

<code>#lua_code_cache off;</code>

<code>content_by_lua_file </code><code>"/usr/local/nginx/lua/fastdfs.lua"</code><code>;</code>

<code>#content_by_lua_file </code><code>"/usr/local/nginx/lua/convert.lua"</code><code>;</code>

<code># ngx_fastdfs_module;</code>

<code>location /group2/M00 {</code>

<code># proxy_pass http:</code><code>//fdfs_group2;                                     #</code>

<code>alias /data/fastdfs02/data;</code>

<code>set </code><code>$image_root</code> <code>"/data/fastdfs02/data"</code><code>;</code>

<code>###清除緩存子產品###</code>

<code>location ~ /purge(/.*) {</code>

<code>allow 127.0.0.1;</code>

<code>allow 10.0.77.0/24;</code>

<code>deny all;</code>

<code>proxy_cache_purge http-cache </code><code>$1</code><code>$is_args</code><code>$args</code><code>;</code>

修改mod_fastdfs.conf檔案(注意有兩個group,Fastdfs服務部署在多台伺服器時,要改成對應的group_name和 ip ):

<code>vi /etc/fdfs/mod_fastdfs.conf</code>

參考如下配置:

<code>connect_timeout=2</code>

<code>network_timeout=30</code>

<code>load_fdfs_parameters_from_tracker=true</code>

<code>storage_sync_file_max_delay = 86400</code>

<code>use_storage_id = false</code>

<code>storage_ids_filename = storage_ids.conf</code>

<code>tracker_server=10.0.77.77:22122</code>

<code>storage_server_port=23000</code>

<code>url_have_group_name = true</code>

<code>log_filename=/</code><code>var</code><code>/log/mod_fastdfs.log</code>

<code>response_mode=proxy</code>

<code>flv_support = true</code>

<code>flv_extension = flv</code>

<code>group_count = 0</code>

上傳檔案測試:

<code>[root@HY-DFS-01 ~]# fdfs_upload_file /etc/fdfs/client.conf /root/hello.txt</code>

<code>group1/M00/00/00/ChtgcVg_yJOAaqgGAAAADVFCBW8206.txt</code>

http通路測試:

http://10.0.77.77:8080/group1/M00/00/00/ChtgcVg_yJOAaqgGAAAADVFCBW8206.txt

開機自啟動:

<code>chkconfig --add fdfs_storaged</code>

<code>chkconfig fdfs_storaged on</code>

<code>echo</code> <code>'/usr/local/nginx/sbin/nginx'</code> <code>&gt;&gt;/etc/rc.local</code>

驗證:

<code>[root@HY-DFS-04 ~]# chkconfig --list|grep 3:on|grep fdfs</code>

<code>fdfs_storaged         0:off 1:off 2:on 3:on 4:on 5:on 6:off</code>

<code>[root@HY-DFS-04 ~]# cat /etc/rc.local</code>

<code>#!/bin/sh</code>

<code># This script will be executed *after* all the other init scripts.</code>

<code># You can put your own initialization stuff in here </code><code>if</code> <code>you don't</code>

<code># want to </code><code>do</code> <code>the full Sys V style init stuff.</code>

<code>touch /</code><code>var</code><code>/lock/subsys/local</code>

<code>/usr/sbin/ntpdate  time.nist.gov 210.72.145.44 64.147.116.229</code>

<code>/usr/local/nginx/sbin/nginx</code>

Tracker的安裝:

<code>[root@HY-LB-01 tools]# ll</code>

<code>total 1864</code>

<code>-rw-r--r-- 1 root root 751033 Nov 30 15:49 libfastcommon.tar.gz</code>

<code>cd ../</code>

<code>tar -zxf V5.05.tar.gz</code>

<code>cd fastdfs-5.05/</code>

<code>mkdir</code> <code>-p /data/fastdfs/tracker</code>

<code>sed -i </code><code>'s#/usr/local/bin/#/usr/bin/#g'</code> <code>/etc/init.d/fdfs_trackerd</code>

<code>cd /etc/fdfs</code>

<code>cp tracker.conf.sample tracker.conf</code>

修改配置檔案:

<code>vi tracker.conf</code>

參考如下資訊:

<code>port=22122</code>

<code>base_path=/data/fastdfs/tracker</code>

<code>store_lookup=2</code>

<code>store_group=group2</code>

<code>store_server=0</code>

<code>store_path=0</code>

<code>download_server=0</code>

<code>reserved_storage_space = 10%</code>

<code>sync_log_buff_interval = 10</code>

<code>check_active_interval = 120</code>

<code>thread_stack_size = 64KB</code>

<code>storage_ip_changed_auto_adjust = true</code>

<code>storage_sync_file_max_time = 300</code>

<code>use_trunk_file = false</code>

<code>slot_min_size = 256</code>

<code>slot_max_size = 16MB</code>

<code>trunk_file_size = 64MB</code>

<code>trunk_create_file_advance = false</code>

<code>trunk_create_file_time_base = 02:00</code>

<code>trunk_create_file_interval = 86400</code>

<code>trunk_create_file_space_threshold = 20G</code>

<code>trunk_init_check_occupying = false</code>

<code>trunk_init_reload_from_binlog = false</code>

<code>trunk_compress_binlog_min_interval = 0</code>

<code>id_type_in_filename = ip</code>

<code>store_slave_file_use_link = false</code>

<code>http.check_alive_interval=30</code>

<code>http.check_alive_type=tcp</code>

<code>http.check_alive_uri=/status.html</code>

啟動tracker服務:

<code>[root@hy-lb-02 fdfs]# /etc/init.d/fdfs_trackerd start</code>

<code>Starting FastDFS tracker server:</code>

<code>[root@hy-lb-02 fdfs]# lsof -i :22122</code>

<code>fdfs_trac 11025 root    5u  IPv4 105397      0t0  TCP *:22122 (LISTEN)</code>

<code>[root@hy-lb-02 fdfs]# netstat -tunlp|grep 22122</code>

<code>tcp        0      0 0.0.0.0:22122               0.0.0.0:*                   LISTEN      11025/fdfs_trackerd</code>

<code>[root@hy-lb-02 fdfs]# ps -ef|grep fdfs</code>

<code>root     11025     1  0 16:36 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf</code>

<code>root     11036 10358  0 16:37 pts/1    00:00:00 grep fdfs</code>

圖床服務如需搬遷,可在别的伺服器部署完Fastdfs後,把/data/fastdfs/data/目錄拷貝到新伺服器上Fastdfs服務指定的路徑,并修改相應配置檔案的域名,ip及檔案路徑資訊:

tracker.conf檔案:

client.conf:

storage.conf檔案:

nginx配置檔案:

圖床Fastdfs服務部署

參考自:https://www.cnblogs.com/chiangchou/p/fastdfs.html

繼續閱讀