nginx圖片伺服器搭建
① nginx 做圖片代理伺服器,為什麼我輸入原來的名字報404,重名命之後就可以訪問
肯能是文件許可權問題
修改名稱 就把文件許可權改為你ftp用戶了
② Nginx作為上傳圖片伺服器的時候,java.net.SocketException: Permission denied: connect
lnmp架構 直接放nginx的web文件夾中,通過cgi解析php返回給nginx,如果是lnmpa架構,就是多了個apache,nginx負責分發請求,然後apache調用php_mod解析php,最後返回給nginx
如果是負載均衡,nginx分發請求,每個請求可能請求不同的伺服器,但是每個伺服器的網站程序應該是一致的,並且每個伺服器上都部署了php環境和程序,然後返回給請求者nginx輸出頁面。
③ 怎麼上傳圖片到nginx伺服器
最簡單方法,下載SSH客戶端,SSH Secure File Transfer Client用這個可以直接上傳
④ nginx負載均衡時上傳的圖片怎麼處理
區域網內可以考慮 rsync + inotify-tools
inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,這樣剛好解決了同步數據的實時性問題。
區域網內多台伺服器時可以配置Nginx把上傳等寫操作固定到其中一台PHP-FPM伺服器,然後用inotify+rsync同步到其它機器.
比如上傳操作定向到伺服器192.168.1.10進行處理:
location ^~ /upload.php {
include fastcgi_params;
fastcgi_pass 192.168.1.10:9000;
fastcgi_param SCRIPT_FILENAME /srv/www$fastcgi_script_name;
}
在伺服器192.168.1.10上用inotify+rsync同步文件到其他伺服器. 除上傳外,刪除、更改、移動等寫操作也要定向到192.168.1.10這台伺服器進行處理。
⑤ nginx+php 生成縮略圖的時候發現沒有jpeg支持安裝完了重啟php-fpm出錯
nginx是一個web伺服器,因此nginx的access日誌只有對訪問頁面的記錄,不會有php 的 error log信息。
nginx把對php的請求發給php-fpm fastcgi進程來處理,默認的php-fpm只會輸出php-fpm的錯誤信息,在php-fpm的errors log里也看不到php的errorlog
原因是php-fpm的配置文件php-fpm.conf中默認是關閉worker進程的錯誤輸出,直接把他們重定向到/dev/null,所以我們在nginx的error log 和php-fpm的errorlog都看不到php的錯誤日誌。
調試起來就很痛苦了。解決nginx下php-fpm不記錄php錯誤日誌的辦法:
1.修改php-fpm.conf中配置 沒有則增加
catch_workers_output = yes
error_log = log/error_log
2.修改php.ini中配置,沒有則增加
log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE
3.重啟php-fpm,
當PHP執行錯誤時就能看到錯誤日誌在"/usr/local/lnmp/php/var/log/error_log"中了
請注意:
1. php-fpm.conf 中的php_admin_value[error_log] 參數 會覆蓋php.ini中的 error_log 參數
所以確保你在phpinfo()中看到的最終error_log文件具有可寫許可權並且沒有設置php_admin_value[error_log] 參數,否則錯誤日誌會輸出到php-fpm的錯誤日誌里。
2.找不到php.ini位置,使用php的phpinfo()結果查看
3.如何修改PHP錯誤日誌不輸出到頁面或屏幕上
修改php.ini
display_errors = off //不顯示錯誤信息(不輸出到頁面或屏幕上)
log_errors = on //記錄錯誤信息(保存到日誌文件中)
error_reporting = E_ALL //捕獲所有錯誤信息
error_log = //設置日誌文件名
程序中修改以上配置
ini_set("display_errors",0)
ini_set("error_reporting",E_ALL); //這個值好像是個PHP的常量
ini_set("error_log","<日誌文件名>")
ini_set("log_errors",1);
4.如何將php的錯誤日誌輸出到nginx的錯誤日誌里
在PHP 5.3.8及之前的版本中,通過FastCGI運行的PHP,在用戶訪問時出現錯誤,會首先寫入到PHP的errorlog中
如果PHP的errorlog無法寫入,則會將錯誤內容返回給FastCGI介面,然後nginx在收到FastCGI的錯誤返回後記錄到了nginx的errorlog中
在PHP 5.3.9及之後的版本中,出現錯誤後PHP只嘗試寫入PHP的errorlog中,如果失敗則不會再返回到FastCGI了,錯誤日誌會輸出到php-fpm的錯誤日誌里。
所以如果想把php錯誤日誌輸出到nginx錯誤日誌,需要使用php5.3.8之前的版本,並且配置文件中php的error_log對於php worker進程不可寫
⑥ FastDFS為什麼要結合Nginx
為什麼選擇Nginx
Nginx 是一個很牛的高性能Web和反向代理伺服器, 它具有有很多非常優越的特性:
在高連接並發的情況下,Nginx是Apache伺服器不錯的替代品:
Nginx在美國是做虛擬主機生意的老闆們經常選擇的軟體平台之一. 能夠支持高達 50,000 個並發連接數的響應, 感謝Nginx為我們選擇了 epoll and kqueue 作為開發模型.
Nginx作為負載均衡伺服器:
Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作為 HTTP代理 伺服器對外進行服務. Nginx採用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多.
作為郵件代理伺服器:
Nginx 同時也是一個非常優秀的郵件代理伺服器(最早開發這個產品的目的之一也是作為郵件代理伺服器), Last.fm 描述了成功並且美妙的使用經驗.
Nginx 是一個 [#installation 安裝] 非常的簡單 , 配置文件 非常簡潔(還能夠支持perl語法), Bugs 非常少的伺服器:
Nginx 啟動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動. 你還能夠 不間斷服務的情況下進行軟體版本的升級
FastDFS為什麼要結合Nginx?
我們在使用FastDFS部署一個分布式文件系統的時候,通過FastDFS的客戶端API來進行文件的上傳、下載、刪除等操作。同時通過FastDFS的HTTP伺服器來提供HTTP服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高性能的服務,所以FastDFS的開發者——淘寶的架構師余慶同學,為我們提供了Nginx上使用的FastDFS模塊(也可以叫FastDFS的Nginx模塊)。其使用非常簡單。
FastDFS通過Tracker伺服器,將文件放在Storage伺服器存儲,但是同組之間的伺服器需要復制文件,有延遲的問題.假設Tracker伺服器將文件上傳到了192.168.1.80,文件ID已經返回客戶端,這時,後台會將這個文件復制到192.168.1.30,如果復制沒有完成,客戶端就用這個ID在192.168.1.30取文件,肯定會出現錯誤。這個fastdfs-nginx-mole可以重定向連接到源伺服器取文件,避免客戶端由於復制延遲的問題,出現錯誤。
⑦ nginx搭建圖片伺服器 web應用如何實現圖片上傳
通過severlet上傳圖片是可以的,甚至用手工方式上傳也可以
因為調用讀取這些圖片的話,不用調用severlet,直接調用nginx即可
nginx本身就可以實現靜態資源的web服務
⑧ 我想做一個個人網站,只有文字和圖片的,需要什麼配置的雲伺服器呢,我買了雲主機和域名之後還要做什麼
從你描述的網站訪問量來看,這個雲伺服器配置夠用了,但考慮到現在2003系統比較老,早已經停止更新,一般常用的是2008或2012,而這2個系統對內存的要求至少是2G以上,所以個人建議用2G內存的配置比較穩妥。雲伺服器開通以後,你需要做的是在上面安裝網站所需要的運行環境,比如說ASP環境或者PHP環境,然後搭建下FTP,然後在本地把網站程序上傳,並通過IIS發布網站,另外你需要注冊一個域名,把域名解析並綁定,完成以上這些操作,才是一個完整的網站。
⑨ 如何自動復制資源到nginx靜態資源伺服器
傳統的web項目,一般都將靜態資源存放在 webroot的目錄下,這樣做很方便獲取靜態資源,但是如果說web項目很大,用戶很多,靜態資源也很多時,伺服器的性能 或許就會很低下了。這種情況下一般都會需要一個靜態資源的伺服器。
搭建nginx伺服器首先得安裝nginx服務,關於nginx服務的安裝可以參考我的另一篇博客《nginx服務安裝》這里直接介紹靜態伺服器的配置
進入nginx安裝目錄的conf目錄下,修改nginx.conf文件,在一個server{}中添加 一個location 部分配置代碼如下
root@ubuntu:/usr/local/nginx/conf# vi nginx.conf
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /image/ {
root /usr/local/myImage/;
autoindex on;
}
}
從上面的配置可以看出來 埠為80,server_name為localhost(寫ip地址也可以)
location /image/ {
root /usr/local/myImage/;
autoindex on;
}
這個配置表示輸入 localhost:80/image/ 時會訪問本機的/usr/local/myImage/image/ 目錄。所以要新建/usr/local/myImage/image/ 目錄,同時還要在nginx安裝目錄的html目錄中新建一個 與 location中 image同名的image目錄,雖然該目錄裡面什麼也沒有,在/usr/local/my Image/image/ 中我們放一張圖片1.jpg上去,重啟nginx服務,就可以通過 localhost:80/image/1.jpg訪問了
root@ubuntu:/usr/local/nginx/html# mkdir image
root@ubuntu:/usr/local/nginx/html# mkdir /usr/local/myImage/image
#放一張照片上去#
root@ubuntu:/usr/local/nginx/html# cd /usr/local/myImage/image
root@ubuntu:/usr/local/myImage/image# ls
1.jpg
root@ubuntu:/usr/local/myImage/image#
重啟 nginx
root@ubuntu:/usr/local/nginx/sbin# ./nginx -s reload
root@ubuntu:/usr/local/nginx/sbin#
打開瀏覽器 輸入 server_name:80/image/1.jpg 就可以訪問該靜態圖片
⑩ 最前面兩台NGINX+keepalived可不可以同時承擔WEB的高可用負載均衡和圖片伺服器並實現高可用
完全可以實現的
nginx可以設置多個server,相互之間互不影響,用keepalived做負載的應用可以和圖片伺服器設置為不同的server,當然,也可以將圖片伺服器設置到兩個伺服器,也使用keepalived做圖片伺服器負載均衡。