搭建獨立圖片伺服器
Ⅰ 圖片伺服器的搭建01
nginx+vsftp搭建圖片伺服器
前言:
在分布式架構中,往往會有多個tomcat,然後你上傳的圖片只是在其中的某一個tomcat,你訪問時是由集群的tomcat隨機提供服務。當你訪問的tomcat是有圖片的那個時,圖片能正常顯示,如果恰巧是那個沒有圖片的tomcat時,圖片就不能正常顯示。這就完成了訪問同一個圖片,可能你刷新一次可以訪問,再刷新一次圖片就訪問不到了。這時,我們就需要一個伺服器用來專門存儲圖片,一般我們都用nginx。
1、nginx+vsftp:
上面分別介紹了nginx和vsftp,那麼這兩個東西怎麼組合起來用呢?怎麼實現這個圖片伺服器呢?我們知道,tomcat安裝好啟動後,在瀏覽器輸入localhost:8080,就會出現tomcat的歡迎頁,nginx也一樣。比如linux的ip是192.168.50.122,那麼啟動nginx後,在瀏覽器訪問這個地址也會出現nginx的歡迎頁,其實是因為它有個默認的訪問頁面,完整的地址應該是192.168.50.122/index.html,那麼我們就可以根據這個,把它默認的訪問頁面改成我們上傳的圖片的保存路徑,比如上傳了一張pic.jpg圖片到linux的/home/ftpuser/images中,如果我們把默認訪問頁面改成/home/ftpuser,那麼在瀏覽器中輸入192.168.50.122/images/pic.jpg,就可以訪問到這張圖片了。下面就來介紹nginx、vsftp的安裝以及配置。
<meta charset="utf-8">
1、安裝:
2、添加ftp用戶:
3、給ftp用戶添加密碼:
輸入兩次密碼後修改密碼。
4、修改selinux:
①查看狀態:
執行這個命令可以看到
這兩個都off,執行如下命令設置為on:
再次執行 getsebool -a | grep ftp 看到那兩個狀態是on就行了。
5、關閉匿名訪問:
執行
命令:
還要在vsftp.conf文件最下面添加以下內容:
然後保存退出即可。
6、設置開機啟動:
7、測試:
打開filezilla工具,輸入虛擬機的ip,21埠,用戶名和密碼,點擊快速連接,連接vsftp服務:
如圖所示則連接成功。
<meta charset="utf-8">
按照以上步驟安裝好nginx和vsftp後,還是不能訪問上傳的圖片的,需要進行如下配置:
執行
命令,打開nginx的配置文件:
按道理這樣就可以了,但是我訪問卻報錯:
403 forbidden ,最後發現是因為ftpuser文件夾沒有可讀許可權,執行如下命令:
再次訪問即可成功!
至此圖片伺服器搭建完成!至於在java中如何使用這個圖片伺服器,請參考 Java實現把圖片上傳到圖片伺服器 。
在搭建的過程中,遇到很多坑,因為我參考的教程是centos 6,防火牆是iptables,而centos 7是firewall,
Ⅱ 怎樣搭建圖片伺服器
如果單純的在公司內部使用 不需要異地查看的話 你組一台伺服器在你的單位就可以了
圖片統一上傳到伺服器 然後給每台計算機分配許可權 如果想在全世界任何地方你就找個做網站 或者自己弄台伺服器託管到機房
Ⅲ Linux 搭建 Nginx (圖片伺服器)
打開nginx官網 http://nginx.org/en/download.html
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
cd /usr/local/
tar -zxvf nginx-1.20.1.tar.gz
./configure --with-http_ssl_mole
編譯參數有很多,這邊我只增加了SSL模塊,小夥伴可以根據自身情況調整
--prefix=PATH:指定 nginx 的安裝目錄
--conf-path=PATH:指定 nginx.conf 配置文件路徑
--user=NAME:nginx 工作進程的用戶
--with-pcre:開啟 PCRE 正則表達式的支持
--with-http_ssl_mole:啟動 SSL 的支持
--with-http_stub_status_mole:用於監控 Nginx 的狀態
--with-http-realip_mole:允許改變客戶端請求頭中客戶端 IP 地址
--with-file-aio:啟用 File AIO
--add-mole=PATH:添加第三方外部模塊
make
執行完上述命令後,在解壓目錄下,多出一個Makefile文件
make install
因編譯時未指定安裝目錄,執行make install 命令後看到反饋日誌信息,實際安裝目錄為/usr/local/nginx
進入實際安裝目錄,看看,並在其sbin目錄下執行啟動nginx
cd /usr/local/nginx/
瀏覽器訪問 http://ip:80 , 顯示如下圖則代表部署成功
進入 /usr/local/nginx/conf/ 文件夾,找到nginx.conf 文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8088;
server_name localhost;
location ~ .*.(gif|jpg|jpeg|png|apk|pdf)$ {
expires 24h;
root /usr/local/img/;#指定圖片存放路徑
access_log /usr/local/nginx/logs/images.log;#日誌路徑
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /usr/local/img/;#代理臨時路徑
proxy_redirect off;
}
修改配置文件,內容如上
cd /usr/local/nginx/sbin
./nginx -s reload
瀏覽器輸入 http://ip:8088/1.png ,查看是否能正常顯示圖片
Ⅳ 如何搭建圖片伺服器
他們的回答都是復制粘貼過來的,或者說的一點都不明白!!! 我告訴你一個最簡單的方法!!!絕對有效!!! 下載 http://phpnow.org/ 一鍵安裝包。。你下載完了之後,安裝它。然後把網站放到D盤里多出一個目錄,然後進去裡面有一個 wwwroot 裡面,就OK了~~而且還自帶mysql伺服器呢~~ 要得你的50分,就得加你Q幫你!~呵呵
Ⅳ markdown nginx 搭建自己的圖片伺服器
介紹
在使用markdown格式的過程中,經常需要上傳圖片,但是常常很復雜,image,在csdn上也很麻煩,在我有阿里雲的情況下,用nginx實現我的圖片伺服器.
安裝 OpenResty
OpenResty,以前用過,所以就按照文檔快速安裝.
apt-get install libpcre3-dev libssl-dev perl make build-essential curl
./configure
make
make install
默認目錄 :/usr/local/openresty/
添加配置文件
cd /usr/local/openresty/
mkdir conf/
vi nginx.conf
配置文件具體內容
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
server {
listen 8080;
location ~ .*.(gif|jpg|jpeg|png)$ {
expires 24h;
root /home/images/;#指定圖片存放路徑
access_log /home/nginx/logs/images.log;#圖片 日誌路徑
proxy_store on;
proxy_store_access user:rw group:rw all:rw;
proxy_temp_path /home/images/;#代理臨時路徑
proxy_redirect off;
}
啟動
./openresty -c ../conf/nginx.conf
./openresty -s stop
netstat -antp
x
image
通過 SecureCRT 7.0拖拽上傳文件
image
通過 get -r * 同步文件到本地
image
訪問即可
https://blog.csdn.net/better_mouse/java/article/details/84256664
Ⅵ php文件上傳,如何實現獨立的圖片伺服器的,該move_uploaded_file()函數能實現嗎
可以的。圖片也是文件的一種形式,主要上傳的時候注意限制文件的後綴為.jpg,.png等等,並使用move_uploaded_file把圖片轉蔽早移到伺服器中一個特定的文件夾中。為了方便集中管理這些圖片,可以建立一個資料庫,用一個數據表記錄該圖片的路徑、名余消稱、上傳日期、格式等等信息。訪問圖像的時候,就可以根據圖片的路徑豎並知獲得了。
Ⅶ 使用seaweedfs搭建一個圖片伺服器 (上)
https://github.com/chrislusf/seaweedfs/releases
經典論文翻譯導讀之《Finding a needle in Haystack: Facebook』s photo storage》
http://www.importnew.com/3292.html
下面一張圖總結下相互關系:
weed master 創建的是一個master伺服器。
參數:
-defaultReplication string 備份策略(詳細見 https://github.com/chrislusf/seaweedfs/wiki/Replication )
-ip string
-mdir string 選項用於配置保存生成的序列文件id的文件夾
-port int (default 9333)
-volumeSizeLimitMB uint 自定義不能大於30000(default 30000)
-whiteList string 白名單,ip地址用逗號隔開
master伺服器可以創建多個來實現故障轉移主伺服器,詳細見 https://github.com/chrislusf/seaweedfs/wiki/Failover-Master-Server
參數:
-dir string 數據保存的路徑,如果master的mdir沒有指定會使用這個,如果filer的dir沒有指定會新增並使用該目錄下的filer目錄
-ip string
-mserver string (default "localhost:9333")
-port
-dataCenter string
-rack string
-whiteList string
weed volume會創建一個 datanode ,可以指定所屬的 datacenter rack和master ,會根據配置存儲文件,默認一開始沒有volume,當開始存儲文件的時候才會創建一個volume,當這一個volume大小超過了volumeSizeLimitMB 就會新增一個volume,當volume個數超過了max則該datanode就不能新增數據了。那就需要在通過weed volume命令新增一個datanode。
weed filer
參數
-collection string 所有數據將存儲在此集合中
-dataCenter string 更傾向於在這個數據中心寫入卷
-dirListLimit int limit sub dir listing size (default 100000)
-ip string
-master string
-port int(default 8888)
更詳細的說明請見: https://mp.csdn.net/mdeditor/85049078#
或者訪問官網wiki : https://github.com/chrislusf/seaweedfs/wiki
出現如下提示說明啟動成功
執行下面的命令:
出現DataCenters是null的原因是沒有執行weed volume創建DataCenter。
" 這里說一下抽象概念":
我們抽象的認為我們的圖片伺服器,一個master需要兩個datacenter叫imgdatacenter1,imgdatacenter2;imgdatacenter1需要兩個rack叫imgrack1,imgrack2;然後imgrack1需要兩個datanode1,datanode2;
創建datanode時 ,統一設置每個datanode包含10個volume即可。當datanode裡面的volume滿了以後再創建 新的datanode即可,方便擴展,並且不同datanode可以在不同磁碟位置;
(imgdatacenter1的imgrack2和imgdatacenter2按照上面的方式創建即可,見附錄 )
目前我們只是用imgdatacenter1->imgrack1->datanode1中的datanode1 :
創建datanode1的時候 master命令行會列印,提示leader新增child imgdatacenter1成功;imgdatacenter1新增child imgrack1成功;imgdatacenter1,imgrack1新增child 9991成功;volume server在9991埠。
此時再執行查看master狀態的命名;
DataCenters Racks DataNodes都存在了;
但是名為localhost:9991的datanode中的volumes為0,明明我們設置了10啊;
因為沒有上傳文件之前不會創建volume,volume會在上傳文件的時候根據實際情況創建。
這里注意下layouts,現在是null,當上傳文件的時候會出現一個名為""的collection,裡面的writables就是volume 的id數組,如果你自定義了collection,name你自定義的collection也會出現在這里,並且所有collection的volume個數之和小於等於我們設置的10;
collection刪除後再新增,裡面的volume的id會一直遞增,不會使用原先刪除的volume id。
此時我們可以上傳文件了。
上傳文件有多種方式,這里我們先說明兩個
1.先向master申請文件id,然後用文件id向datanode上傳文件:
修改只需要在fid上傳別的文件即可
上傳成功後訪問,只需要拼接url即可: localhost:9991/1,015b7256d5
2.直接向master上傳文件,master自己生成文件id,並向datanode上傳文件,然後返回結果:
此時你再查看狀態發現volume就創建了10個。
此時查看datanode的狀態:
因為我1.jpg上傳了兩次,而且第一次在id為1的volume中,第二次在id為3的volume中,所有你會發現這兩個id的volume的FileCount都為1
並發的上傳文件:
一個卷伺服器一次只寫一個卷。如果需要增加並發性,可以預先分配大量卷。下面是例子。您還可以組合所有不同的選項。狀態詳情見附錄
刪除文件:
文件的刪除不是實時的,因為weed默認有個閾值,超過這個閾值才會清理沒使用的空間,如果你一時間內刪除了大量文件,想立馬生效,可以用這種方式清理未使用的空間:
此時文件通過url的增刪改查都可以了,下面把服務映射成文件系統來操作,可以方便的操作本地的大量文件
filer是將文件以文件目錄的方式上傳到圖片服務,然後你根據文件目錄的方式訪問
默認使用leveldb保存映射關系,打開filer.toml文件修改保存映射文件的文件夾為ftmp(自定義)
然後啟動filer服務
master列印如下信息說明成功
自身的log
直接往weed filer中拷貝目錄或者文件(-include是文件模式通配符前使用??)
weed filer. nginxdir http://localhost:8888/aaa 把nginxdir拷貝到aaa目錄下
weed filer. -include *.go . http://localhost:8888/github/
詳細請見 https://github.com/chrislusf/seaweedfs/wiki/Filer-Server-API
然而我們時長會有這樣的需求,批量把照片保存成圖片文件備份起來,而不是備份一個bat文件;
或者我們想以目錄結構的方式通過本地訪問,而不是通過web訪問?
此時最簡單有效的方法就是把filer伺服器mount到本地,然後直接操作文件系統:
weed mount 像訪問本地目錄一樣訪問文件系統,前提是開啟了 master volume filer
(它使用bazil.org/FUSE,它允許在Linux和OSX上編寫FUSE文件系統。在OSX上,它需要OSXFUSE)
可以指定 collection
關閉掛在需要關閉mount並且手動umont ~/mdir目錄,如果一般用戶失敗請使用root用戶
一個場景:
如果本地已經有很多文件了,如何快速的遷移到seaweedfs中呢?
1.啟動master、volume、filer
2.啟動mount
3.手動拷貝到mount目錄中(單線程的)
4.使用weed filer. file_or_dir1 [file_or_dir2 file_or_dir3] http://localhost:8888/path/to/a/folder/ (多線程且繞過fuse層)
aws s3 兼容
Each bucket is stored in one collection, and mapped to folder /buckets/<bucket_name> by default
可以通過刪除collection來快速刪除一個bucket
非同步復制
應該有兩個SeawideFileSystems運行,可能跨數據中心運行。每個伺服器都應該有自己的文件伺服器、主伺服器和卷伺服器。
這是我執行了(curl " http://localhost:9333/vol/grow?collection=imgcoll&count=3 " )的結果
詳細文檔請見官方wiki
https://github.com/chrislusf/seaweedfs/wiki/Getting-Started
Ⅷ 如何設計圖片伺服器
如果圖片少,在apache配置一下就可以了。
如果圖片多(十萬以上),那麼注意一下目錄結構的存放也就可以了。
如果再多,那麼就要做文件存放的系統。上傳圖片到文檔系統,文檔以hash演算法確定目錄進行存放。並返回一個圖片id號。文檔系統提供tag,利用id和tag可以轉換為真實路徑和文件名,就可以直接訪問了。
Ⅸ 請問您知道圖片伺服器該怎麼配置嗎 我們網站因為有大量的圖片 想獨立一個圖片伺服器
圖片伺服器主要是磁碟容量要夠大,一般要1TB左右存儲容量,cpu用最新nehalem架構的四核至強處理器,內存用4GB,就可以了。
你可以看看國產品牌正睿的這款單路四核伺服器,它採用英特爾最新的nahalem平台架構,標配一顆至強®X3430四核處理器(2.4GHz/8M緩存),英特爾3420伺服器晶元組主板,2G DDR3 1333MHz高性能內存,SATA2 320G硬碟,雙千兆網卡,性能可以說是非常的不錯。
產品型號:I1456132S-E
產品類型:單路四核機架式伺服器
處 理 器:Xeon X3430
內 存:2G DDR3
硬 盤:SATA2 320G
機 構:1U機架式
價 格:¥3999
銀牌服務
重慶五年免費上門服務,全國三年免費上門服務,關鍵部件三年以上免費質保。
建議你把硬碟升級到1TB容量,內存加到4GB,總價也就在4600元左右。
給你推薦的是國產品牌正睿的伺服器產品,他們的產品性價比很高,做工很專業,兼容性,質量之類的都有保障,售後也很完善,3年免費質保,3年免費上門服務,在業界口碑很不錯。