天天看點

linux上搭建FastDFS圖檔伺服器

先準備好FastDFS相關的包

linux上搭建FastDFS圖檔伺服器

檢查linux是否聯網,通過ping一個web網址實作。

如果沒有聯網,先ifconfig檢視下此時的ip

使用指令:ifconfig ens33 192.168.1.64 netmask 255.255.255.0 #将ens33的IP改為192.168.1.64。

檢查一下你的主機網卡數量及名稱,相關資訊在 /etc/sysconfig/network-scripts/ 下。

使用vim編輯你需要設定IP的網卡,這裡我修改ifcfg-eth0。

修改配置: `

linux上搭建FastDFS圖檔伺服器

重新開機網卡:service network restart #centos6的重新開機網卡的指令,systemctl restart network #centos7的網卡重新開機。

再次ping一個網址檢驗網絡。

開始安裝

檢查系統是否有安裝GCC

gcc –version

安裝GCC

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

yum -y install wget httpd-tools vim

安裝libfastcommon

進入libfastcommon壓縮包目錄解壓,編譯,安裝

tar -zxvf libfastcommonV1.0.7.tar.gz

進入解壓的libfastcommon-1.0.7目錄,編譯

./make.sh

安裝

./make.sh install

最後,libfastcommon.so檔案到usr/lib下 ,請按照自己的實際檔案路徑修改被複制路徑

cp /data/fastDFS/software/libfastcommon-1.0.7/src/libfastcommon.so /usr/lib

安裝FastDFS

解壓FastDFS_v5.05.tar.gz,然後編譯安裝FastDFS

tar -zxvf FastDFS_v5.05.tar.gz

./make.sh

./make.sh install

安裝成功後将目錄conf内的檔案拷貝到/etc/fdfs目錄下:

cp /data/fastDFS/software/FastDFS/conf/* /etc/fdfs/

安裝tracker

進入/etc/fdfs目錄,修改tracker.conf檔案。如果不存在,就拷貝tracker.conf.sample檔案為tracker.conf,然後再修改:

base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/fastdfs (注解:日志檔案)

http.server_port=8080 >>> http.server_port=80 (注解:端口,80是友善預設)

store_group=group1 (注解:組名)

其中,/home/logs/fastdfs目錄如果不存在,就建立一個。

之後,就啟動tracker,并檢視是啟動成功(出現如下提示,表示啟動成功):restart重新開機

fdfs_trackerd /etc/fdfs/tracker.conf start

netstat -unltp | grep tracker

linux上搭建FastDFS圖檔伺服器

安裝storage

由于storage和tracker運作的都是fastDFS程式,每一台伺服器都部署一台fasfDFS,一台伺服器是tracker,一台是storage

修改storage.conf檔案。如果不存在,就拷貝storage.conf.sample檔案為storage.conf,然後再修改:

複制代碼

base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/storage (日志路徑)

store_path0=/home/yuqing/fastdfs >>> store_path0=/home/data/storage (實際儲存檔案路徑,可以配置多個)

tracker_server=192.168.209.121:22122 >>> tracker_server=192.168.2.231:22122 (連接配接tracker伺服器位址)

group_name=group1 (必須和tracker的組名相同)

http.server_port=80 (這個端口也要改)

複制代碼

其中,如果/home/logs/storage和/home/data/storage不存在,就建立該目錄

然後,就啟動storage,并檢視是否成功(出現如下提示,表示啟動成功):

fdfs_storaged /etc/fdfs/storage.conf start

netstat -unltp | grep storage

linux上搭建FastDFS圖檔伺服器

最後,檢視tracker和storage是不是在通信:

fdfs_monitor /etc/fdfs/storage.conf

如下提示,出現ACTIVE,表示二者均正常啟動,至此就可以進行上傳檔案測試了。

linux上搭建FastDFS圖檔伺服器

測試圖檔上傳

FastDFS提供一個檔案上傳指令:usr/bin/fdfs_test 測試檔案上傳。測試上傳需要連接配接tracker伺服器,連接配接storage伺服器。是以需要指定一個配置檔案:client.conf配置檔案,通過Client.conf連接配接tracker伺服器。

修改/etc/fdfs下client.conf

base_path=/home/logs/client (日志目錄)

tracker_server=192.168.2.231:22122 (tracker端口)

測試指令

/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg

linux上搭建FastDFS圖檔伺服器

安裝Nginx。友善外部網絡的通路。

#PCRE pcre-devel 安裝

yum install -y pcre pcre-devel

#zlib 安裝

yum install -y zlib zlib-devel

#OpenSSL 安裝

yum install -y openssl openssl-devel

tar -zxvf nginx-1.12.1.tar.gz

cd nginx-1.12.1

./configure

make

make install

修改/fastdfs-nginx-module/src/config檔案。去掉所有的local(三個)

拷貝usr/lib64目錄下庫檔案libfdfsclient.so

cp /usr/lib64/libfdfsclient.so /usr/lib

在nginx安裝目錄下執行如下指令:把module添加nginx中。通過設定安裝參數方式添加子產品。

cd nginx-1.12.1

./configure --add-module=…/fastdfs-nginx-module/src

重新安裝編譯

make && make install

檢視Nginx的子產品

/usr/local/nginx/sbin/nginx -V

複制 fastdfs-nginx-module 源碼中的配置檔案到/etc/fdfs 目錄, 并修改

cd fastdfs-nginx-module/src

cp mod_fastdfs.conf /etc/fdfs/

進入/etc/fdfs/修改mod_fastdfs.conf

# 連接配接逾時時間
connect_timeout=10
# Tracker Server
tracker_server=192.168.2.231:22122
# StorageServer 預設端口
storage_server_port=23000
# 如果檔案ID的uri中包含/group**,則要設定為true
url_have_group_name = true
# Storage 配置的store_path0路徑,必須和storage.conf中的一緻
store_path0=/home/data/storage
# the base path to store log files
base_path=/home/logs/storage
           

配置iNginx ,進入/usr/local/nginx/conf目錄下修改nginx.conf

注意:無論你在哪解壓安裝的。必須進這個目錄/usr/local/nginx/conf下修改nginx.conf

vim nginx.conf

在80端口下添加fastdfs-nginx子產品

location ~/group([0-9])/M00 {

ngx_fastdfs_module;

}

注意:

  listen 80 端口值是要與 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成80了)相對應。如果改成其它端口,則需要統一,同時在防火牆中打開該端口。

  location 的配置,如果有多個group則配置location ~/group([0-9])/M00 ,沒有則不用配group。

在檔案存儲目錄下建立軟連接配接,将其連結到實際存放資料的目錄,注意這個檔案存儲的位置後面多個data目錄是系統自動生成的

ln -s /home/data/storage/data /home/data/storage/data/M00

啟動nginx

#啟動nginx

cd /usr/local/nginx/sbin/

./nginx 直接啟動/usr/local/nginx/sbin/nginx

#設定開機啟動

vim /etc/rc.local

/usr/local/nginx/sbin/nginx

#設定執行權限

chmod 755 rc.local

檢視Nginx是否啟動

ps -ef | grep nginx

OK記得雲服務的安全組 和防火牆設定需要方通 80、22122、 23000

打開3306端口:firewall-cmd --add-port=3306/tcp --permanent firewall:

systemctl start firewalld.service#啟動firewall

systemctl stop firewalld.service#停止firewall

systemctl disable firewalld.service#禁止firewall開機啟動

在位址欄中通路成功 http://192.175.231.128/group1/M00/00/00/rBAACVzBeU2AQBKJAAOHDqS1H9o350.jpg

java代碼裡面使用

pom檔案:

<dependencies>
  	<dependency>
  		<groupId>org.csource.fastdfs</groupId>
  		<artifactId>fastdfs</artifactId>
  		<version>1.2</version>
  	</dependency>
  </dependencies>
           

配置檔案:fdfs_client.conf。主要修改裡面的tracker_server。

# connect timeout in seconds
# default value is 30s
connect_timeout=30

# network timeout in seconds
# default value is 30s
network_timeout=60

# the base path to store log files
base_path=/home/fastdfs

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=192.168.254.133:22122

#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info

# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false

# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600

# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false

# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false

# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf


#HTTP settings
http.tracker_server_port=80

#use "#include" directive to include HTTP other settiongs
##include http.conf


           

測試檔案:

public static void main(String[] args) throws FileNotFoundException, IOException, Exception {
		//加載配置檔案
		ClientGlobal.init("G:\\666\\shenbin\\fastDFSdemo\\src\\main\\resources\\fdfs_client.conf");
		//建構一個管理者用戶端
		TrackerClient client=new TrackerClient();
		//連結管理者服務端
		TrackerServer trackerServer = client.getConnection();
		//聲明存儲的服務端
		StorageServer strStorageServer=null;
		//擷取存儲伺服器的用戶端對象
		StorageClient storageClient = new StorageClient(trackerServer, strStorageServer);
		//檔案上傳
		String[] strings = storageClient.upload_file("G:\\666\\system.ico", "ico", null);
		//顯示上傳的結果file_id
		for(String str:strings) {
			System.out.println(str);
		}
	}