1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
<code>我的部落格已遷移到xdoujiang.com請去那邊和我交流</code>
<code>FastDFS是一個開源的輕量級應用級的分布式檔案存儲服務,它對檔案進行管理,功能包括:</code>
<code>檔案存儲、檔案同步、檔案通路(檔案上傳、檔案下載下傳)等解決了大容量存儲和負載均衡的問題。</code>
<code>特别适合以檔案為載體的線上服務,如相冊網站、視訊網站等等。</code>
<code>FastDFS有三個角色:跟蹤伺服器(tracker server)、存儲伺服器(storage server)和用戶端(client)。</code>
<code>1)跟蹤伺服器:主要做排程工作 起負載均衡的作用</code>
<code>2)存儲伺服器:存儲節點存儲檔案 完成檔案管理的所有功能:存儲、同步和提供存取接口</code>
<code>3)用戶端:可以使用fdfs_upload_file、c、php、java、python、.net等api接口</code>
<code>使用TCP</code><code>/IP</code><code>協定與跟蹤器伺服器或存儲節點進行資料互動</code>
<code>一、基礎環境</code>
<code>1、角色、ip、版本、核心、fastdfs、fastdfs-nginx-module、nginx</code>
<code>serverA 10.1.10.117 3.2.0-4-amd64 7.8 tracker nginx</code>
<code>serverB 10.1.10.185 3.2.0-4-amd64 7.8 storage fastdfs-nginx-module nginx group1</code>
<code>serverC 10.1.10.194 3.2.0-4-amd64 7.8 storage fastdfs-nginx-module nginx group1</code>
<code>client 10.1.10.117</code>
<code>fastdfs版本5.05</code>
<code>fastdfs-nginx-module版本1.15</code>
<code>nginx版本1.4.7</code>
<code>libfastcommon版本1.3</code>
<code>2、安裝基礎包</code>
<code>apt-get -y </code><code>install</code> <code>git wget gcc </code><code>make</code> <code>libpcre3-dev libpcre3 libssl-dev zlib1g-dev</code>
<code>axel libc6-dev libc-bin curl</code>
<code>二、在serverA上安裝fastdfs的tracker角色</code>
<code>1、git方式下載下傳</code>
<code>git clone https:</code><code>//github</code><code>.com</code><code>/happyfish100/libfastcommon</code><code>.git libfastcommon</code>
<code>git clone https:</code><code>//github</code><code>.com</code><code>/happyfish100/fastdfs</code><code>.git fastdfs</code>
<code>2、編譯安裝</code>
<code>1)</code><code>cd</code> <code>libfastcommon</code>
<code>bash</code> <code>make</code><code>.sh</code>
<code>bash</code> <code>make</code><code>.sh </code><code>install</code>
<code>2)</code><code>cd</code> <code>fastdfs</code>
<code>3、檢視相應指令具體在哪裡</code>
<code>ll </code><code>/usr/bin/fdfs</code><code>*</code>
<code>-rwxr-xr-x 1 root root 349008 Aug 21 14:12 </code><code>/usr/bin/fdfs_appender_test</code>
<code>-rwxr-xr-x 1 root root 348193 Aug 21 14:12 </code><code>/usr/bin/fdfs_appender_test1</code>
<code>-rwxr-xr-x 1 root root 333057 Aug 21 14:12 </code><code>/usr/bin/fdfs_append_file</code>
<code>-rwxr-xr-x 1 root root 333109 Aug 21 14:12 </code><code>/usr/bin/fdfs_crc32</code>
<code>-rwxr-xr-x 1 root root 333164 Aug 21 14:12 </code><code>/usr/bin/fdfs_delete_file</code>
<code>-rwxr-xr-x 1 root root 334435 Aug 21 14:12 </code><code>/usr/bin/fdfs_download_file</code>
<code>-rwxr-xr-x 1 root root 333737 Aug 21 14:12 </code><code>/usr/bin/fdfs_file_info</code>
<code>-rwxr-xr-x 1 root root 351638 Aug 21 14:12 </code><code>/usr/bin/fdfs_monitor</code>
<code>-rwxr-xr-x 1 root root 1211424 Aug 21 14:12 </code><code>/usr/bin/fdfs_storaged</code>
<code>-rwxr-xr-x 1 root root 358392 Aug 21 14:12 </code><code>/usr/bin/fdfs_test</code>
<code>-rwxr-xr-x 1 root root 357073 Aug 21 14:12 </code><code>/usr/bin/fdfs_test1</code>
<code>-rwxr-xr-x 1 root root 491214 Aug 21 14:12 </code><code>/usr/bin/fdfs_trackerd</code>
<code>-rwxr-xr-x 1 root root 334835 Aug 21 14:12 </code><code>/usr/bin/fdfs_upload_appender</code>
<code>-rwxr-xr-x 1 root root 336773 Aug 21 14:12 </code><code>/usr/bin/fdfs_upload_file</code>
<code>4、建立資料目錄</code>
<code>mkdir</code> <code>-p </code><code>/opt/fastdfs/tracker</code>
<code>5、建立組和使用者</code>
<code>groupadd fastdfs</code>
<code>useradd</code> <code>-s </code><code>/bin/bash</code> <code>-d </code><code>/opt/fastdfs/</code> <code>-g fastdfs fastdfs</code>
<code>6、修改相關目錄權限</code>
<code>chown</code> <code>-R fastdfs.fastdfs </code><code>/opt/fastdfs</code>
<code>7、修改配置</code>
<code>1)備份配置</code>
<code>cp</code> <code>/etc/fdfs/tracker</code><code>.conf.sample </code><code>/etc/fdfs/tracker</code><code>.conf</code>
<code>2)修改配置</code><code>/etc/fdfs/tracker</code><code>.conf(serverA)</code>
<code>sed</code> <code>-i </code><code>'s/bind_addr=.*/bind_addr=10.1.10.117/'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!base_path=.*!base_path=/opt/fastdfs/tracker/!g'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!run_by_group=.*!run_by_group=fastdfs!g'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!run_by_user=.*!run_by_user=fastdfs!g'</code> <code>/etc/fdfs/tracker</code><code>.conf</code>
<code>8、啟動服務tracker</code>
<code>1)使用ldd指令檢查相應支援子產品</code>
<code>ldd </code><code>/usr/bin/fdfs_trackerd</code>
<code> </code><code>linux-vdso.so.1 => (0x00007ffd4abb3000)</code>
<code> </code><code>libpthread.so.0 => </code><code>/lib/x86_64-linux-gnu/libpthread</code><code>.so.0 (0x00007f5dd7c48000)</code>
<code> </code><code>libdl.so.2 => </code><code>/lib/x86_64-linux-gnu/libdl</code><code>.so.2 (0x00007f5dd7a44000)</code>
<code> </code><code>libfastcommon.so => not found</code>
<code> </code><code>libc.so.6 => </code><code>/lib/x86_64-linux-gnu/libc</code><code>.so.6 (0x00007f5dd76b8000)</code>
<code> </code><code>/lib64/ld-linux-x86-64</code><code>.so.2 (0x00007f5dd7e6a000)</code>
<code>PS:檢視到libfastcommon.so => not found 目前不找到</code>
<code>2)先找下libfastcommon.so這個檔案在哪裡</code>
<code>find</code> <code>/ -name </code><code>"libfastcommon.so"</code>
<code>/root/libfastcommon/src/libfastcommon</code><code>.so</code>
<code>/usr/lib64/libfastcommon</code><code>.so</code>
<code>2)加載libfastcommon.so</code>
<code>echo</code> <code>"/usr/lib64"</code> <code>> </code><code>/etc/ld</code><code>.so.conf.d</code><code>/libfastcommon</code><code>.conf</code>
<code>ldconfig</code>
<code>3)再次檢視下</code>
<code> </code><code>linux-vdso.so.1 => (0x00007ffebedd2000)</code>
<code> </code><code>libpthread.so.0 => </code><code>/lib/x86_64-linux-gnu/libpthread</code><code>.so.0 (0x00007f3732ddb000)</code>
<code> </code><code>libdl.so.2 => </code><code>/lib/x86_64-linux-gnu/libdl</code><code>.so.2 (0x00007f3732bd7000)</code>
<code> </code><code>libfastcommon.so => </code><code>/usr/lib64/libfastcommon</code><code>.so (0x00007f37329ae000)</code>
<code> </code><code>libc.so.6 => </code><code>/lib/x86_64-linux-gnu/libc</code><code>.so.6 (0x00007f3732623000)</code>
<code> </code><code>/lib64/ld-linux-x86-64</code><code>.so.2 (0x00007f3732ffd000)</code>
<code> </code><code>libm.so.6 => </code><code>/lib/x86_64-linux-gnu/libm</code><code>.so.6 (0x00007f37323a1000)</code>
<code>PS:都OK了</code>
<code>4)啟動tracker服務</code>
<code>fdfs_trackerd </code><code>/etc/fdfs/tracker</code><code>.conf</code>
<code>9、檢視端口和程序tracker</code>
<code>1)檢視端口tracker</code>
<code>netstat</code> <code>-tupnl|</code><code>grep</code> <code>trackerd</code>
<code>tcp 0 0 10.1.10.117:22122 0.0.0.0:* LISTEN 11461</code><code>/fdfs_trackerd</code>
<code>2)檢視程序tracker</code>
<code>ps</code> <code>-ef |</code><code>grep</code> <code>track</code>
<code>root 11461 1 0 17:32 ? 00:00:00 fdfs_trackerd </code><code>/etc/fdfs/tracker</code><code>.conf</code>
<code>10、檢視日志</code>
<code>1)檢視trackerd日志</code>
<code>cat</code> <code>/opt/fastdfs/tracker/logs/trackerd</code><code>.log </code>
<code>[2015-08-27 14:51:15] INFO - FastDFS v5.07, base_path=</code><code>/opt/fastdfs/tracker</code><code>, run_by_group=fastdfs, run_by_user=fastdfs, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=10.1.10.117, max_connections=256, accept_threads=1, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=10.00%, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_compress_binlog_min_interval=0, use_storage_id=0, id_type_in_filename=ip, storage_id_count=0, rotate_error_log=0, error_log_rotate_time=00:00, rotate_error_log_size=0, log_file_keep_days=0, store_slave_file_use_link=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s</code>
<code>[2015-08-27 14:51:15] INFO - local_host_ip_count: 2, 127.0.0.1 10.1.10.117</code>
<code>11、設定開機啟動</code>
<code>echo</code> <code>"/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf"</code> <code>>> </code><code>/etc/rc</code><code>.</code><code>local</code>
<code>三、 分别在serverB和C上安裝fastdfs的storage角色和nginx和fastdfs-nginx-module子產品</code>
<code>git clone https:</code><code>//github</code><code>.com</code><code>/happyfish100/fastdfs-nginx-module</code> <code>fastdfs-nginx-module</code>
<code>2、編譯安裝(serverB和serverC)</code>
<code>3、建立資料目錄(serverB和serverC)</code>
<code>mkdir</code> <code>-p </code><code>/opt/fastdfs/storage</code>
<code>4、建立組和使用者(serverB和serverC)</code>
<code>5、修改相關目錄權限(serverB和serverC)</code>
<code>6、修改配置</code><code>/etc/fdfs/storage</code><code>.conf(serverB和serverC)</code>
<code>cp</code> <code>/etc/fdfs/storage</code><code>.conf.sample </code><code>/etc/fdfs/storage</code><code>.conf</code>
<code>2)修改配置</code><code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s/bind_addr=.*/bind_addr=10.1.10.185/'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!base_path=.*!base_path=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!store_path0=.*!store_path0=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!tracker_server=.*!tracker_server=10.1.10.117:22122!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!run_by_group=.*!run_by_group=fastdfs!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!run_by_user=.*!run_by_user=fastdfs!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!http.server_port=.*!http.server_port=80!g'</code> <code>/etc/fdfs/storage</code><code>.conf</code>
<code>PS:這裡bind_addr的IP如果是serverB那麼就是10.1.10.185</code>
<code>這裡bind_addr的IP如果是serverC那麼就是10.1.10.194</code>
<code>7、加載libfastcommon.so(serverB和serverC)</code>
<code>8、啟動storage服務(serverB和serverC)</code>
<code>fdfs_storaged </code><code>/etc/fdfs/storage</code><code>.conf</code>
<code>9、檢視端口和程序storage(serverB和serverC)</code>
<code>1)檢視端口storage</code>
<code>netstat</code> <code>-tupnl|</code><code>grep</code> <code>storage</code>
<code>tcp 0 0 10.1.10.194:23000 0.0.0.0:* 、 LISTEN 9665</code><code>/fdfs_storaged</code>
<code>2)檢視程序storage</code>
<code>ps</code> <code>-ef |</code><code>grep</code> <code>storage</code>
<code>fastdfs 9665 1 3 17:48 ? 00:00:02 fdfs_storaged </code><code>/etc/fdfs/storage</code><code>.conf</code>
<code>10、檢視日志(serverB和serverC)</code>
<code>1)檢視storage日志</code>
<code>cat</code> <code>/opt/fastdfs/storage/logs/storaged</code><code>.log</code>
<code>[2015-08-31 13:58:39] INFO - FastDFS v5.07, base_path=</code><code>/opt/fastdfs/storage</code><code>, store_path_count=1, subdir_count_per_path=256, group_name=group1, run_by_group=fastdfs, run_by_user=fastdfs, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=10.1.10.194, client_bind=1, max_connections=256, accept_threads=1, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=50ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=10s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_duplicate=0, file_signature_method=</code><code>hash</code><code>, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=80, domain name=, use_access_log=0, rotate_access_log=0, access_log_rotate_time=00:00, rotate_error_log=0, error_log_rotate_time=00:00, rotate_access_log_size=0, rotate_error_log_size=0, log_file_keep_days=0, file_sync_skip_invalid_record=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s</code>
<code>data path: </code><code>/opt/fastdfs/storage//data</code><code>, </code><code>mkdir</code> <code>sub </code><code>dir</code><code>...</code>
<code>data path: </code><code>/opt/fastdfs/storage//data</code><code>, </code><code>mkdir</code> <code>sub </code><code>dir</code> <code>done</code><code>.</code>
<code>[2015-08-31 13:59:02] INFO - </code><code>file</code><code>: storage_param_getter.c, line: 191, use_storage_id=0, id_type_in_filename=ip, storage_ip_changed_auto_adjust=1, store_path=0, reserved_storage_space=10.00%, use_trunk_file=0, slot_min_size=256, slot_max_size=16 MB, trunk_file_size=64 MB, trunk_create_file_advance=0, trunk_create_file_time_base=02:00, trunk_create_file_interval=86400, trunk_create_file_space_threshold=20 GB, trunk_init_check_occupying=0, trunk_init_reload_from_binlog=0, trunk_compress_binlog_min_interval=0, store_slave_file_use_link=0</code>
<code>[2015-08-31 13:59:02] INFO - </code><code>file</code><code>: storage_func.c, line: 254, tracker_client_ip: 10.1.10.194, my_server_id_str: 10.1.10.194, g_server_id_in_filename: -1039531766</code>
<code>[2015-08-31 13:59:02] INFO - local_host_ip_count: 2, 127.0.0.1 10.1.10.194</code>
<code>[2015-08-31 13:59:04] ERROR - </code><code>file</code><code>: tracker_client_thread.c, line: 277, connect to tracker server 10.1.10.117:22122 fail, errno: 4, error info: Interrupted system call</code>
<code>[2015-08-31 13:59:04] INFO - </code><code>file</code><code>: tracker_client_thread.c, line: 310, successfully connect to tracker server 10.1.10.117:22122, continuous fail count: 1, as a tracker client, my ip is 10.1.10.194</code>
<code>[2015-08-31 13:59:04] INFO - </code><code>file</code><code>: tracker_client_thread.c, line: 1235, tracker server 10.1.10.117:22122, </code><code>set</code> <code>tracker leader: 10.1.10.117:22122</code>
<code>[2015-08-31 13:59:04] INFO - </code><code>file</code><code>: storage_sync.c, line: 2698, successfully connect to storage server 10.1.10.185:23000</code>
<code>11、使用fdfs_monitor指令檢視叢集資訊(serverB和serverC)</code>
<code>fdfs_monitor </code><code>/etc/fdfs/storage</code><code>.conf</code>
<code>[2015-08-31 14:01:54] DEBUG - base_path=</code><code>/opt/fastdfs/storage</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>
<code>server_count=1, server_index=0</code>
<code>tracker server is 10.1.10.117:22122</code>
<code>group count: 1</code>
<code>Group 1:</code>
<code>group name = group1</code>
<code>disk total space = 37251 MB</code>
<code>disk </code><code>free</code> <code>space = 34926 MB</code>
<code>trunk </code><code>free</code> <code>space = 0 MB</code>
<code>storage server count = 2</code>
<code>active server count = 2</code>
<code>storage server port = 23000</code>
<code>storage HTTP port = 80</code>
<code>store path count = 1</code>
<code>subdir count per path = 256</code>
<code> </code><code>Storage 1:</code>
<code> </code><code>id</code> <code>= 10.1.10.185</code>
<code> </code><code>ip_addr = 10.1.10.185 ACTIVE</code>
<code> </code><code>http domain = </code>
<code> </code><code>version = 5.07</code>
<code> </code><code>join</code> <code>time</code> <code>= 2015-08-31 13:58:36</code>
<code> </code><code>up </code><code>time</code> <code>= 2015-08-31 13:58:36</code>
<code> </code><code>total storage = 37251 MB</code>
<code> </code><code>free</code> <code>storage = 34926 MB</code>
<code> </code><code>upload priority = 10</code>
<code> </code><code>store_path_count = 1</code>
<code> </code><code>subdir_count_per_path = 256</code>
<code> </code><code>storage_port = 23000</code>
<code> </code><code>storage_http_port = 80</code>
<code> </code><code>source</code> <code>storage </code><code>id</code> <code>= </code>
<code> </code><code>connection.alloc_count = 256</code>
<code> </code><code>connection.current_count = 1</code>
<code> </code><code>connection.max_count = 1</code>
<code> </code><code>last_heart_beat_time = 2015-08-31 14:01:29</code>
<code> </code><code>last_source_update = 1970-01-01 08:00:00</code>
<code> </code><code>last_sync_update = 1970-01-01 08:00:00</code>
<code> </code><code>last_synced_timestamp = 1970-01-01 08:00:00 </code>
<code> </code><code>Storage 2:</code>
<code> </code><code>id</code> <code>= 10.1.10.194</code>
<code> </code><code>ip_addr = 10.1.10.194 ACTIVE</code>
<code> </code><code>join</code> <code>time</code> <code>= 2015-08-31 13:58:39</code>
<code> </code><code>up </code><code>time</code> <code>= 2015-08-31 13:58:39</code>
<code> </code><code>source</code> <code>storage </code><code>id</code> <code>= 10.1.10.185</code>
<code> </code><code>last_heart_beat_time = 2015-08-31 14:01:33</code>
<code>12、設定開機啟動(serverB和serverC)</code>
<code>echo</code> <code>"/usr/bin/fdfs_storaged /etc/fdfs/storage.conf"</code> <code>>> </code><code>/etc/rc</code><code>.</code><code>local</code>
<code> </code>
<code>13、安裝nginx及fastdfs-nginx-module(nginx提供http服務及</code>
<code>fastdfs-nginx-module解決同步問題)(serverB和serverC)</code>
<code>1)建立nginx使用者(serverB和serverC)</code>
<code>groupadd nginx</code>
<code>useradd</code> <code>nginx -g nginx -s </code><code>/bin/false</code>
<code>2)下載下傳nginx(serverB和serverC)</code>
<code>axel -n 10 http:</code><code>//nginx</code><code>.org</code><code>/download/nginx-1</code><code>.4.7.</code><code>tar</code><code>.gz</code>
<code>3)解壓(serverB和serverC)</code>
<code>tar</code> <code>zxvf nginx-1.4.7.</code><code>tar</code><code>.gz && </code><code>cd</code> <code>nginx-1.4.7</code>
<code>4)編譯三部曲(serverB和serverC)</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/opt/nginx</code> <code>--user=nginx --group=nginx --with-http_ssl_module --add-module=</code><code>/root/fastdfs-nginx-module/src</code>
<code>make</code> <code>&& </code><code>make</code> <code>install</code>
<code>5)為了友善 弄個軟連結(serverB和serverC)</code>
<code>ln</code> <code>-s </code><code>/opt/nginx/sbin/nginx</code> <code>/usr/local/sbin/nginx</code>
<code>6)備份配置(serverB和serverC)</code>
<code>cp</code> <code>/opt/nginx/conf/nginx</code><code>.conf </code><code>/opt/nginx/conf/nginx</code><code>.conf.bak</code>
<code>cp</code> <code>/root/fastdfs-nginx-module/src/mod_fastdfs</code><code>.conf </code><code>/etc/fdfs/</code>
<code>cp</code> <code>/root/fastdfs/conf/http</code><code>.conf </code><code>/etc/fdfs</code>
<code>cp</code> <code>/root/fastdfs/conf/mime</code><code>.types </code><code>/etc/fdfs</code>
<code>7)修改配置</code><code>/opt/nginx/conf/nginx</code><code>.conf(serverB和serverC)</code>
<code>diff</code> <code>/opt/nginx/conf/nginx</code><code>.conf </code><code>/opt/nginx/conf/nginx</code><code>.conf.bak </code>
<code>3d2</code>
<code>< user nginx;</code>
<code>37,40c36,38</code>
<code>< listen 10.1.10.194:80;</code>
<code>< server_name 10.1.10.194;</code>
<code>< access_log </code><code>/opt/nginx/logs/10</code><code>.1.10.194.access.log;</code>
<code>< error_log </code><code>/opt/nginx/logs/10</code><code>.1.10.194.error.log;</code>
<code>---</code>
<code>> listen 80;</code>
<code>> server_name localhost;</code>
<code>> </code>
<code>45,47c43,45</code>
<code>< location </code><code>/group1/M00</code> <code>{</code>
<code>< root </code><code>/opt/fastdfs/storage/data</code><code>;</code>
<code>< ngx_fastdfs_module;</code>
<code>> location / {</code>
<code>> root html;</code>
<code>> index index.html index.htm;</code>
<code>8)修改配置</code><code>/etc/fdfs/mod_fastdfs</code><code>.conf(serverB和serverC)</code>
<code>sed</code> <code>-i </code><code>'s!base_path=.*!base_path=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!store_path0=.*!store_path0=/opt/fastdfs/storage/!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!tracker_server=.*!tracker_server=10.1.10.117:22122!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>
<code>sed</code> <code>-i </code><code>'s!url_have_group_name =.*!url_have_group_name = true!g'</code> <code>/etc/fdfs/mod_fastdfs</code><code>.conf</code>
<code>9)啟動服務nginx(serverB和serverC)</code>
<code>nginx </code>
<code>ngx_http_fastdfs_set pid=12058</code>
<code>10)檢視端口程序nginx(serverB和serverC)</code>
<code>netstat</code> <code>-tupnl |</code><code>grep</code> <code>nginx</code>
<code>tcp 0 0 10.1.10.194:80 0.0.0.0:* LISTEN 12059</code><code>/nginx</code><code>: master</code>
<code>ps</code> <code>-ef |</code><code>grep</code> <code>nginx(serverB和serverC)</code>
<code>root 12059 1 0 19:01 ? 00:00:00 nginx: master process nginx</code>
<code>11)檢視日志(serverB和serverC)</code>
<code>cat</code> <code>/opt/nginx/logs/error</code><code>.log</code>
<code>ngx_http_fastdfs_process_init pid=14667</code>
<code>[2015-08-28 03:46:32] INFO - local_host_ip_count: 2, 127.0.0.1 10.1.10.194</code>
<code>[2015-08-28 03:46:32] INFO - fastdfs apache / nginx module v1.15, response_mode=proxy, base_path=</code><code>/opt/fastdfs/storage</code><code>, url_have_group_name=1, group_name=group1, storage_server_port=23000, path_count=1, store_path0=</code><code>/home/yuqing/fastdfs</code><code>, connect_timeout=2, network_timeout=30, tracker_server_count=1, if_alias_prefix=, local_host_ip_count=2, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, load_fdfs_parameters_from_tracker=1, storage_sync_file_max_delay=86400s, use_storage_id=0, storage server </code><code>id</code> <code>count=0, flv_support=1, flv_extension=flv</code>
<code>12)設定開機啟動(serverB和serverC)</code>
<code>echo</code> <code>"/usr/local/sbin/nginx"</code> <code>>> </code><code>/etc/rc</code><code>.</code><code>local</code>
<code>13)通路nginx(serverB和serverC)</code>
<code>curl 10.1.10.185:80</code>
<code><!DOCTYPE html></code>
<code><html></code>
<code><</code><code>head</code><code>></code>
<code><title>Welcome to nginx!<</code><code>/title</code><code>></code>
<code><style></code>
<code> </code><code>body {</code>
<code> </code><code>width: 35em;</code>
<code> </code><code>margin: 0 auto;</code>
<code> </code><code>font-family: Tahoma, Verdana, Arial, sans-serif;</code>
<code> </code><code>}</code>
<code><</code><code>/style</code><code>></code>
<code><</code><code>/head</code><code>></code>
<code><body></code>
<code><h1>Welcome to nginx!<</code><code>/h1</code><code>></code>
<code><p>If you see this page, the nginx web server is successfully installed and</code>
<code>working. Further configuration is required.<</code><code>/p</code><code>></code>
<code><p>For online documentation and support please refer to</code>
<code><a href=</code><code>"http://nginx.org/"</code><code>>nginx.org<</code><code>/a</code><code>>.<br/></code>
<code>Commercial support is available at</code>
<code><a href=</code><code>"http://nginx.com/"</code><code>>nginx.com<</code><code>/a</code><code>>.<</code><code>/p</code><code>></code>
<code><p><em>Thank you </code><code>for</code> <code>using nginx.<</code><code>/em</code><code>><</code><code>/p</code><code>></code>
<code><</code><code>/body</code><code>></code>
<code><</code><code>/html</code><code>></code>
<code>PS:有看到頁面資訊 說明配置都OK了</code>
<code>四、相關指令說明</code>
<code>fdfs_monitor </code><code>#檢視叢集情況</code>
<code>fdfs_crc32 </code><code>#擷取檔案CRC </code>
<code>fdfs_delete_file </code><code>#删除檔案</code>
<code>fdfs_file_info </code><code>#檢視檔案屬性資訊</code>
<code>fdfs_download_file </code><code>#下載下傳檔案</code>
<code>fdfs_upload_file </code><code>#上傳檔案</code>
<code>fdfs_storaged </code><code>#啟storage服務</code>
<code>fdfs_trackerd </code><code>#啟tracker服務</code>
<code>五、測試</code>
<code>1、在tracker上的操作[作為client測試]</code>
<code>cp</code> <code>/etc/fdfs/client</code><code>.conf.sample </code><code>/etc/fdfs/client</code><code>.conf</code>
<code>2)修改配置</code>
<code>diff</code> <code>/etc/fdfs/client</code><code>.conf.sample </code><code>/etc/fdfs/client</code><code>.conf</code>
<code>10c10</code>
<code>< base_path=</code><code>/home/yuqing/fastdfs</code>
<code>> base_path=</code><code>/tmp</code>
<code>14c14</code>
<code>< tracker_server=192.168.0.197:22122</code>
<code>> tracker_server=10.1.10.117:22122</code>
<code>2、上傳檔案測試</code>
<code>[email protected]:~</code><code># fdfs_test /etc/fdfs/client.conf upload Chrysanthemum.jpg</code>
<code>This is FastDFS client </code><code>test</code> <code>program v5.07</code>
<code>Copyright (C) 2008, Happy Fish / YuQing</code>
<code>FastDFS may be copied only under the terms of the GNU General</code>
<code>Public License V3, </code><code>which</code> <code>may be found </code><code>in</code> <code>the FastDFS </code><code>source</code> <code>kit.</code>
<code>Please visit the FastDFS Home Page http:</code><code>//www</code><code>.csource.org/ </code>
<code>for</code> <code>more</code> <code>detail.</code>
<code>[2015-08-31 15:04:52] DEBUG - base_path=</code><code>/tmp</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>
<code>tracker_query_storage_store_list_without_group: </code>
<code> </code><code>server 1. group_name=, ip_addr=10.1.10.185, port=23000</code>
<code> </code><code>server 2. group_name=, ip_addr=10.1.10.194, port=23000</code>
<code>group_name=group1, ip_addr=10.1.10.194, port=23000</code>
<code>storage_upload_by_filename</code>
<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813</code><code>.jpg</code>
<code>source</code> <code>ip address: 10.1.10.194</code>
<code>file</code> <code>timestamp=2015-08-31 15:04:52</code>
<code>file</code> <code>size=879394</code>
<code>file</code> <code>crc32=3831356491</code>
<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.194</code><code>/group1/M00/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813</code><code>.jpg</code>
<code>storage_upload_slave_by_filename</code>
<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813_big</code><code>.jpg</code>
<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.194</code><code>/group1/M00/00/00/CgEKwlXj_JSAHsHYAA1rIuRd3Es813_big</code><code>.jpg</code>
<code>[email protected]:~</code><code># fdfs_test /etc/fdfs/client.conf upload Desert.jpg</code>
<code>[2015-08-31 15:04:59] DEBUG - base_path=</code><code>/tmp</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>
<code>group_name=group1, ip_addr=10.1.10.185, port=23000</code>
<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191</code><code>.jpg</code>
<code>source</code> <code>ip address: 10.1.10.185</code>
<code>file</code> <code>timestamp=2015-08-31 15:04:59</code>
<code>file</code> <code>size=845941</code>
<code>file</code> <code>crc32=10179927</code>
<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191</code><code>.jpg</code>
<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191_big</code><code>.jpg</code>
<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXj_JuAbUQnAAzodQCbVVc191_big</code><code>.jpg</code>
<code>3、windows上通路位址測試效果</code>
<a href="http://s3.51cto.com/wyfs02/M02/72/79/wKiom1XkUHXgp6frAA2Jx6c9CAQ268.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M00/72/76/wKioL1XkUpbxud-QAA2RDkCxy_Q656.jpg" target="_blank"></a>
<code>六、在ServerA上安裝nginx(前端提供負載均衡)并進行測試</code>
<code>1、建立nginx使用者</code>
<code>2、下載下傳nginx</code>
<code>3、解壓</code>
<code>4、編譯三部曲</code>
<code>.</code><code>/configure</code> <code>--prefix=</code><code>/opt/nginx</code> <code>--user=nginx --group=nginx --with-http_ssl_module</code>
<code>5、為了友善 弄個軟連結</code>
<code>6、備份配置</code>
<code>diff</code> <code>/opt/nginx/conf/nginx</code><code>.conf </code><code>/opt/nginx/conf/nginx</code><code>.conf.bak</code>
<code>35,38c34</code>
<code>< upstream group1{</code>
<code>< server 10.1.10.185:80;</code>
<code>< server 10.1.10.194:80;</code>
<code>< }</code>
<code>40,41c36,37</code>
<code>< listen 10.1.10.117:80;</code>
<code>< server_name 10.1.10.117;</code>
<code>47c43</code>
<code>50d45</code>
<code>< proxy_pass http:</code><code>//group1</code><code>;</code>
<code>8、啟動服務</code>
<code>nginx</code>
<code>9、設定開機啟動</code>
<code>10、檢視端口和程序</code>
<code>ps</code> <code>-ef |</code><code>grep</code> <code>nginx</code>
<code>root 14627 1 0 15:09 ? 00:00:00 nginx: master process nginx</code>
<code>nginx 14628 14627 0 15:09 ? 00:00:00 nginx: worker process</code>
<code>tcp 0 0 10.1.10.117:80 0.0.0.0:* LISTEN 16986</code><code>/nginx</code><code>: master</code>
<code>11、再次上傳圖檔測試</code>
<code>[email protected]:~</code><code># fdfs_test /etc/fdfs/client.conf upload Tulips.jpg</code>
<code>[2015-08-31 16:02:17] DEBUG - base_path=</code><code>/tmp</code><code>, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server </code><code>id</code> <code>count: 0</code>
<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278</code><code>.jpg</code>
<code>file</code> <code>timestamp=2015-08-31 16:02:17</code>
<code>file</code> <code>size=620888</code>
<code>file</code> <code>crc32=3040764182</code>
<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278</code><code>.jpg</code>
<code>group_name=group1, remote_filename=M00</code><code>/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278_big</code><code>.jpg</code>
<code>example </code><code>file</code> <code>url: http:</code><code>//10</code><code>.1.10.185</code><code>/group1/M00/00/00/CgEKuVXkCgmAfHn_AAl5WLU-YRY278_big</code><code>.jpg</code>
<a href="http://s3.51cto.com/wyfs02/M00/72/79/wKiom1XkUJeDOw_gAAuwNkaSKtI421.jpg" target="_blank"></a>
<code>七、參考文章</code>
<code>http:</code><code>//www</code><code>.simlinux.com</code><code>/books/FastDFS</code><code>.pdf</code>
本文轉自 xdoujiang 51CTO部落格,原文連結:http://blog.51cto.com/7938217/1690273,如需轉載請自行聯系原作者