通過HTTPS訪問我們做的網站時,總會彈出“本頁不但包含安全的內容,也包含不安全的內容”的對話框。
這是由于網頁中含有<iframe>,但iframe的src屬性沒有設置造成的。
解決該問題可用如下方法:
客戶端:設置IE的屬性。例:在IE6上,工具-〉Internet選項-〉安全選項卡-〉自定義級別-〉將“顯示混合內容”設置為啟用 即可解決該問題。這個討厭的對話框就不會總出現了,嘿嘿。
對于網站來說,可用性是指用戶能否有效地找到所需的信息或完成他的任務,效率如何以及是否讓人有愉快滿意的感受。如果網站可用性較差,會浪費用戶的時間,大大降低網站的回頭訪問率,這對網站的生存是一個至關重要的問題。因此,為網站開發(fā)人員提供可用性改善建議和改進工具是十分必要的。
如何知道訪客是否喜歡你的網站?借助可用性檢測工具追蹤用戶行為可以回答這個問題。跟蹤到的數據可以給你提供精確的信息,讓你知道用戶喜歡你網站的什么地方,哪些區(qū)域是最突出,哪些地方是用戶最容易忽略的。不要小看這些收集到的數據,因為這些數據可以幫助你有效的提高網站的點擊率和轉化率。
改善您的網站不要挑時間,當你發(fā)現你的網站吸引不了多少訪客的時候,就應該立即行動了。 這里收集了很多非常好的工具,通過不同的方法追蹤用戶的行為并提供給你改進網站可用性的建議。它們中有些可能不是免費的,但一個好的回報是值得去付出的。 為大家獵取所需的工具是一件開心又很有意義的事情!
Userfly可以提供免費的網頁訪客動作記錄服務。只需要在網頁中添加一段簡單的Javascript代碼,就可以記錄訪客從打開該網頁到關閉整個過程中的動作。Userfly能夠記錄的內容包括鼠標的移動、點擊以及鍵盤輸入等動作。對于網站擁有者來說,Userfly可以很方便的對用戶行為進行檢測和分析,通過A/B Testing等方法為網站UI/UE提供非常有價值的信息。
Attention Wizard是一個視覺工具,它可以幫助您提高轉換率,輕松地識別目標網頁存在的問題。 Attention Wizard用高級人工智能算法來模擬人類視線的軌跡和聚焦點。Attention Wizard能夠立刻對你提交的網頁樣本進行處理并生成“眼球軌跡熱力圖”。這個“熱力圖”可以預測你網站的訪問者在最初的幾秒內是如何瀏覽的。 生成的結果中,有75%都是通過眼睛跟蹤和鼠標跟蹤來完成的。Attention Wizard有簡易版、高級版和終極版三個版本。
一個完整的可用性工具包,通過從訪客那里獲取的實時數據來改善網站內容結構,優(yōu)化鏈接和廣告的投放位置,分析和提高網站的粘性。 它將告訴你訪客究竟在何處點擊。
注冊之后,把網站提供的一段Javascript代碼加入到你的網站中即可,當用戶訪問網站的時候,一個小的附加文件會自動下載用于傳輸用戶的點擊事件。該產品提供免費試用版,可付費升級到不同的高級版本。
CrazyEgg能夠監(jiān)控一個頁面的所有點擊并能清楚的顯示頁面的點擊熱圖,可以相當準確地監(jiān)控所有頁面的點擊位置。
它是對你的網站訪客瀏覽行為進行分析的一個工具,以類似視頻的方式將訪問者在你的網站上進行的操作全部記錄下來,你可以在線觀看也可以下載到電腦上。利用ClickTale的訪客行為視頻記錄,可以幫你更好的布局你的網頁,給訪問者帶來更好的用戶體驗進而提升轉化率。 它還提供了實時監(jiān)控的性能分析,轉化分析,鏈接分析,先進的過濾和市場分析。
Clixpy幾乎記錄了訪客的所有動作,如鼠標移動,點擊,滾動和表單輸入。 這些動作對于定位用戶發(fā)現容易或者困難內容,那些東西最吸引他們以及為什么用戶會離開網站有很大的幫助。這有助于優(yōu)化目標網頁,并幫助您把訪問者轉化為客戶。
Chalkmark可以讓你快速創(chuàng)建一個項目,在訪客中對界面原型進行調查以了解用戶關注的焦點在哪,結果中可以查看每項任務的熱圖,并知道有多少用戶跳過了任務。可以免費注冊,也可以按月或者年付費到不限制任務數級別。
是GPL許可下的開源軟件,是一個很強大的JavaScript 庫,它可以幫你統(tǒng)計一個頁面上用戶點擊的熱度分布圖,支持中文顯示。
通過視頻記錄和分析用戶的點擊和滾動行為,生成鼠標點擊和移動熱圖,幫助你優(yōu)化目標頁面和提高轉化率。
用戶是否對網站真正的滿意? 第四季的網上調查,一個免費的解決方案,可以告訴你關于你網站的訪問者的詳細信息,例如用戶為什么訪問你的網站,是否以正確的操作方式完成任務,如果不是,會是原因是什么阻礙了他們。 這項調查可以在用戶中收集到大量的反饋。
Concept Feedback通過在線的專業(yè)團隊快速的對網站設計,可用性和營銷等方面提供反饋。對于公開的意見,團隊中WEB方面的專業(yè)人員會給你一個整體的意見, 對于私密反饋,你可以邀請?zhí)囟▽<姨峁┓答仯⒔M織出圖形化的結果。 專業(yè)的反饋來自于在設計,可用性和營銷領域的專家。
你可以通過提交你網站的問題來獲得一個快速的可用性測試并得到10項反饋。不過,不要支付15美元,如果想得到50項反饋則需要55美元。
Feng GUI通過模擬人的視覺在開始的5秒內看到的東西來生成熱點圖,它為設計和開發(fā)人員提供了測試服務,通過分析觀察角度、品牌效益和預測效果。
通過匯集用戶在5秒內回答的問題集來改善目標網頁以讓訪客關注關鍵內容。
在Google Site Search中,強化了企業(yè)網站的索引范圍;一個托管的搜索解決方案,可以呈現無廣告的搜索結果,提高網站的轉化率和銷售額,降低成本。
Kampyle可以讓你在你的網站出現一個在線發(fā)送反饋信息的按鈕,點擊此按鈕可以彈出調查表,讓訪客可以反饋信息。Kampyle提供了反饋表單模板,你只需要簡單修改即可,另外Kampyle還提供了豐富的反饋統(tǒng)計功能。
使用Loop 11可以很容易的創(chuàng)建一個專業(yè)的可用性測試,收集反饋并及時的得到可用性的量化數據,然后立即看到結果。 支持超過40種語言。
OpenHallway記錄用戶在遠程或本地的可用性數據。用戶的屏幕和語音會被記錄并被上傳到您的帳戶。
一個用于設計人員和開發(fā)人員通過捕獲屏幕活動來進行可用性測試的軟件,可以記錄測試者的表情和聲音,有批量導出功能并可以標示出任何值得注意的時刻。
它通過指導你了解在目標網頁中存在的轉化率問題并回答您的具體的轉換相關的問題。通過優(yōu)化目標網頁快速而簡便的獲得最好的轉換率。
TechSmith是世界領先的為個人和專業(yè)領域提供屏幕捕獲和錄制軟件的供應商。人們普遍使用TechSmith產品來從他們的計算機屏幕上捕獲內容。Morae是用于了解你的客戶的一個很好的軟件。使用Morae一個好處是,它會自動計算并給出效果和滿意度,而不只是分析和報告。
Usabilla幫助網站所有者更深入的了解他們的客戶,不僅僅是數據。收集有關網頁,實物模型,線框或任何圖像的視覺反饋。
UserTesting觀察用戶在自己的環(huán)境中的活動,傾聽他們的想法,然后形成結論。
是一個遠程的可用性測試工具,測試網站、Web應用程序或者原型在自然環(huán)境中可操作行的指標,通過調查問卷捕獲用戶的思想。
優(yōu)化重點在于發(fā)現市場潛力和精準的投遞內容。世界上數以千計的網站智能企業(yè),包括半數以上的財富和全球500強企業(yè),正依靠WebTrends提高他們的網站轉換率、優(yōu)化他們的市場營銷效果,以獲得更高的投資回報。作為全球網站分析行業(yè)的領導者,WebTrends憑借其多次獲得業(yè)界大獎、全面地咨詢服務和無與倫比的專業(yè)經驗,而成為Web分析行業(yè)最權威的衡量標準。通過其提供的按需服務和各種軟件產品,WebTrends幫助用戶獲得精確的、可被執(zhí)行的Web分析數據。
網站優(yōu)化工具是Google免費的網站測試和優(yōu)化工具。使用該工具,無需投入任何費用就可以提高現有網站的價值和點擊量。通過使用網站優(yōu)化工具對網站內容和設計進行測試和優(yōu)化,不管您是營銷新手還是專家,都可以輕松快捷地增加收入和投資回報率。可以進行A/B實驗和多版本實驗兩種實驗。
這些都是非常有用的工具,如果你發(fā)現了更好的,記得與我們分享:)
編譯來源:25個提高網站可用性和轉化率的工具
原文來自:25 Tools To Improve Your Website’s Usability
YAML Builder是強大的可視化布局工具,只需要簡單的設置參數和拖拽模塊就能快速創(chuàng)建基于YAML的布局。
Ultimate CSS Gradient Generator by ColorZilla
非常棒的一款 CSS 漸變生成工具,支持跨瀏覽器。
Grid Designer 用于在線網格設計,有很多選項用于定義列,尺寸和間距。
My CSS Menu 用于自定義跨瀏覽器的CSS菜單制作。
Csstxt 幫助你定義文本樣式。
Simple CSS 幫助你非常容易的創(chuàng)建層疊樣式表。
Firdamatic: the Design Tool for the Uninspired Webloggers
Firdamati 是一個無表格布局生成器,可以幫助你容易的創(chuàng)建一個表單,可定制皮膚。
Sky CSS Tool
Sky CSS 可以讓你在無需編寫任何編碼就可以創(chuàng)建CSS類。
這是一款非常輕量的CSS網格工具。
Free CSS Template Code Generator
一款CSS模板代碼生成工具。
The variable grid system 是一款快速生成CSS網格的工具,基于 960 網格系統(tǒng)。
Gridinator 幫助你生成基于960.gs的網格布局。
這也是一款生成靈活網格布局的工具。
使用 CSS Grid Calculator 可以快速的創(chuàng)建一個可視化布局。
這款在線工具,幫助你為你的網站快速創(chuàng)建一個獨一無二的模板。
Markup Generator 是一款簡單的標記代碼生成工具。
Spiffy Corners – Purely CSS Rounded Corners
Spiffy Corners 是一款圓角效果生成工具。
Spritebox 是一款所見即所得的工具,幫助設計師從一張 sprite image 生成CSS Classes 和 CSS IDs。
SlickMap CSS 是一個簡單的樣式單用來根據 sitemap 顯示對應的圖形化信息。
CSS Layout Generator – CSS Portal
一款 CSS 布局在線生成工具。
一款在線的 CSS 菜單生成工具。
CleanCSS 是一款很棒的CSS格式化和優(yōu)化工具。
一款非常強大的在線CSS工具。
這是一款選項卡在線生成工具。
幫助你對CSS規(guī)則按字母進行排序。
這是一款輔助你選擇字體的工具。
這也是一款CSS布局生成工具。
一款用于生成多列布局和網格布局的工具。
Em Calculator 是一款單位換算工具。
Colors Pallete Generator是一個在線查看圖片配色的服務。colors pallete generator 只需要上傳圖片,或者輸入圖片的網絡地址,其便可以分析出此圖片應用的配色方案。
CSS Menu Generator by Webmaster Toolkit
CSS Menu Generator 是一款在線菜單生成工具。
使用 CSS Table Wizard 試驗邊框樣式并生成對應代碼。
CSS Layout Generator 是一款在線工具,用于創(chuàng)建HTML+CSS 模板(layouts)。
Font Tester 是一款字體在線對比工具。
The CSS font-style 字體樣式屬性用于設置字體樣式為斜體或傾斜。
CSS color codes 帶有兩個選擇,十六進制顏色代碼和RGB顏色代碼,以便您可以從顏色選擇器輕松地選擇與色彩,并從底部獲取十六進制值。
CSS Colors 為您提供全面的圖表,顯示十六進制以及RGB顏色值。你可以很容易找到的RGB顏色組合,從0到255,一共有超過16萬色。
一款WordPress主題在線生成工具。
List-O-Matic 是一款用于創(chuàng)建列表布局的工具。
Typetester 用于在線比較字體效果。
一款壓縮工具,幫助你快速的把CSS 和 JavaScript 文件壓縮成一個文件。
(編譯來源:夢想天空 原文來自:40 Excellent (Yet Free) CSS Tools And Generators For Developers)
推薦40個優(yōu)秀的免費CSS工具TestSwarm: Continious & Distributed JS Testing
TestSwarm是Mozilla實驗室推出的一個開源項目,它旨在為開發(fā)者提供在多個瀏覽器版本上快速輕松測試自己JavaScript代碼的方法。
Minimee
在網絡上,速度是很重要的,Minimee能幫助你將CSS和JavaScript文件進行自動壓縮和打包。
Doctor JS
Doctor JS 是一款幫你分析 JavaScript 代碼的工具,測試你的代碼在多態(tài)、原型、異常和回調方面寫得怎么樣。
Remy Sharp’s JSConsole
一個在線的 JavaScript 控制臺工具,對于測試、調試和演示非常有用。
JavaScript Library Boilerplate
JavaScript Library Boilerplate 幫助你隨時隨地創(chuàng)建自己的 JavaScript 庫。
jsdoc-toolkit
JsDoc Toolkit 是一款輔助工具,你只需要根據約定在 JavaScript 代碼中添加相應的注釋,它就可以根據這些注釋來自動生成API文檔。
Jasmine: BDD for your JavaScript
Jasmine 是一個有名的javascript單元測試框架,它是獨立的“行為驅動開發(fā)”框架。
ObfuscateJS: JavaScript compressor
一款 JavaScript 混淆工具,去除空白和注釋,重命名變量等。
PEG.js
PEG.js 是一個JavaScript的表達式語法解析器,它使您能夠輕松地建立復雜的數據或計算機程序語言的快速分析器。
JSONView
JSONView 是一款幫助你在瀏覽器中查看JSON文檔的Firefox插件。
JSonduit
JSonduit 是一個將網頁內容轉換為 JSON 格式訂閱器的工具。
jsplumb
jsPlumb 為開發(fā)者提供了可視化鏈接元素到頁面的方法,可以結合jQuery、MooTools 和 YUI3使用。
Helma
Helma 是一個用來開發(fā)快速、穩(wěn)定的Web應用程序的開源框架,它使用JavaScript 來作為服務端腳本環(huán)境,從而可以省略編譯周期。
HTML + JSON Report
一款將 JSON 數據轉換為可讀性更高的HTML格式內容的在線工具。
JSON Editor
這個編輯器可以幫助你方便的編輯 JSON 字符串。
現在使用的兩臺服務器已經安裝了MySQL,全是rpm包裝的,能正常使用。
為了避免不必要的麻煩,主從服務器MySQL版本盡量保持一致;
環(huán)境:192.168.0.1 (Master)
192.168.0.2 (Slave)
MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) using readline 5.1
1、登錄Master服務器,修改my.cnf,添加如下內容;
server-id = 1 //數據庫ID號, 為1時表示為Master,其中master_id必須為1到232–1之間的一個正整數值;
log-bin=mysql-bin //啟用二進制日志;
binlog-do-db=data //需要同步的二進制數據庫名;
binlog-ignore-db=mysql //不同步的二進制數據庫名;這個同步后聽說很麻煩,我沒有同步;
log-bin=/var/log/mysql/updatelog //設定生成的log文件名;
log-slave-updates //把更新的記錄寫到二進制文件中;
slave-skip-errors //跳過錯誤,繼續(xù)執(zhí)行復制;
2、建立復制所要使用的用戶;
mysql>grant replication slave on *.* to test@192.168.0.2 identified by '********'
3、重啟mysql;
/usr/bin/mysqladmin -uroot shutdown;
/usr/bin/mysql_safe &
4、現在備份Master上的數據;
鎖定后我直接tar.gz data這個庫文件;
mysql>FLUSH TABLES WITH READ LOCK;
cd /var/lib/mysql
tar data.tar.gz data
接著直接執(zhí)行了遠程scp;
scp ./data.tar.gz root@192.168.0.2:/var/lib/mysql
5、登錄Slave數據庫服務器,修改my.cnf;
server-id = 3 //2已經被用在另一個服務器上了,如果以后要再加Slave號接著往后數就OK了;
log-bin=mysql-bin
master-host = 192.168.0.1
master-user = test
master-password = ******
master-port = 3306
master-connect-retry=60 //如果發(fā)現主服務器斷線,重新連接的時間差;
replicate-ignore-db=mysql //不需要備份的數據庫;
replicate-do-db=data //需要備份的數據庫
log-slave-update
slave-skip-errors
6、解壓剛才從Master scp過來的文件,此處不用改權限、屬主,默認沒有改變,可以根據實際情況進行修改;
7、上述完成后,可以啟動slave了;查看slave狀態(tài);
mysql>slave start;
mysql>show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.1
Master_User: test
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: updatelog.000001
Read_Master_Log_Pos: 106
Relay_Log_File: onlinevc-relay-bin.000013
Relay_Log_Pos: 1069
Relay_Master_Log_File: updatelog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: data
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 106
Relay_Log_Space: 1681
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
ERROR:
No query specified
8、查看Master上面的狀態(tài);
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| updatelog.000012 | 15016 | data | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
由此可見兩者的File、Position存在問題,所要要去Slave上設置對應主庫的Master_Log_File、Read_Master_Log_Pos;執(zhí)行如下語句;
mysql>slave stop;
mysql>CHANGE MASTER TO MASTER_HOST='192.168.0.1',MASTER_USER='test', MASTER_PASSWORD='******',MASTER_LOG_FILE='updatelog.000012',MASTER_LOG_POS=15016;
確保 Slave_IO_Running: Yes 、Slave_SQL_Running: Yes都要為YES才能證明Slave的I/O和SQL進行正常。
9、解鎖主庫表;
UNLOCK TABLES;
到此主從MySQL服務器配置完成,測試結果如下;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| updatelog.000012 | 717039 | data | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.1
Master_User: test
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: updatelog.000012
Read_Master_Log_Pos: 717039
Relay_Log_File: onlinevc-relay-bin.000013
Relay_Log_Pos: 1222
Relay_Master_Log_File: updatelog.000012
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: data
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 717039
Relay_Log_Space: 1834
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
ERROR:
No query specified
#################################### 如下是MySQL數據庫讀寫分離操作步驟 ##########################################
此處使用MySQL自己(Mysql-proxy)的代理實現數據庫的讀寫分離;
所需要安裝包如下;
1、check-0.9.8
2、glib-2.18.4
3、libevent-2.0.6-rc
4、lua-5.1.4
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
5、pkg-config-0.23
6、mysql-5.0.56
7、mysql-proxy-0.8.0
http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.0.tar.gz
別的安裝包地址當時沒有記下載地址,不過大部分都在這個網站上找的;http://sourceforge.net/
&&&&&&&&&& 安裝開始 &&&&&&&&
1、tar -zxvf check-0.8.4.tar.gz
cd check-0.8.4
./configure
make
make install
2、tar -zxvf glib-2.18.4.tar.gz //系統(tǒng)rpm包可能版本低出現了問題3;
./configure
make
make install
3、tar -zxvf libevent-2.0.6-rc.tar.gz
cd libevent-2.0.6-rc
./configure --prefix=/usr/local/libevent
make && make install
4、tar -zxvf lua-5.1.4.tar.gz
INSTALL_TOP= /usr/local/lua // 為了把lua安裝到/var/lib/lua下,故要修改其下的Makefile;
或者直接執(zhí)行:sed -i 's#INSTALL_TOP= /usr/local#INSTALL_TOP= /usr/local/lua#' Makefile
root@testmysql [/software/lua-5.1.4]# make
Please do
make PLATFORM
where PLATFORM is one of these:
aix ansi bsd freebsd generic linux macosx mingw posix solaris
See INSTALL for complete instructions.
這處是要你選擇服務器所使用的平臺;
執(zhí)行:make linux //此處執(zhí)行后出現了錯誤,解決辦法在下面問題解決區(qū)1處,此處先跳過;
再執(zhí)行:make install
設置環(huán)境變量:
export LUA_CFLAGS="-I/usr/local/lua/include" LUA_LIBS="-L/usr/local/lua/lib -llua -ldl" LDFLAGS="-L/usr/local/libevent/lib -lm"
export CPPFLAGS="-I/usr/local/libevent/include"
export CFLAGS="-I/usr/local/libevent/include"
5、tar -zxvf pkg-config-0.23.tar.gz
cd pkg-config-0.23
./configure
make
make install
安裝完之后要執(zhí)行:cp etc/lua.pc /usr/local/lib/pkgconfig/lua5.1.pc //原因見下面的問題解決區(qū)2處;
6、安裝MySQL客戶端;
因為此服務器系統(tǒng)是默認安裝了MySQL,沒有安裝客戶端,我又裝了client、devel如下所示已安裝的rpm包;
root@testmysql [/software/lua-5.1.4]# rpm -qa | grep MySQL
MySQL-client-5.1.48-0.glibc23
MySQL-bench-5.0.91-0.glibc23
MySQL-test-5.1.48-0.glibc23
MySQL-shared-5.1.48-0.glibc23
MySQL-server-5.1.48-0.glibc23
MySQL-devel-5.1.48-0.glibc23
此后的Mysql-proxy時總是一直報錯,編譯不過去,無奈之下用源碼包客戶端;(此時的rpm包都沒有卸載,直接執(zhí)行了下面的安裝)//此處問題見問題解決區(qū)4處;
tar zxvf mysql-5.0.56.tar.gz //此處我直接使用了mysql的5.0.56的源碼包;
cd mysql-5.0.56
./configure --prefix=/usr/local/mysql --without-server
make && make install
7、tar xvf mysql-proxy-0.8.0.tar.gz
cd mysql-proxy-0.8.0
./configure --prefix=/usr/local/mysql-proxy --with-mysql=/usr/local/mysql --with-lua //問題解決處4有介紹;
Make && Make install
8、在/var/lib/bin創(chuàng)建mysql-proxy.sh,內容如下;
#!/bin/bash
LUA_PATH="/usr/local/mysql-proxy/lib/mysql-proxy/lua/?.lua" /usr/local/mysql-proxy/bin/mysql-proxy --proxy-backend-addresses=192.168.0.1:3306 --proxy-read-only-backend-addresses=192.168.0.2:3306 --proxy-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/rw-splitting.lua >> /var/log/mysql-proxy.log &
然后加上可執(zhí)行權限;
chmod a+x /var/lib/bin/mysql-proxy.sh
執(zhí)行:/var/lib/bin/mysql-proxy.sh 啟動服務;
9、驗證是否開戶了:4040、4041;
root@testmysql [/usr/local/bin]# netstat -an | grep 404*
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4041 0.0.0.0:* LISTEN
10、測試讀寫分離,此步略過,所有配置已經完成。
&&&&&&&&&&&&&&&&&&&&&&&&&&& 問題解決區(qū) &&&&&&&&&&&&&&&&&&&&&&&&&&&&
1、在安裝的第四步執(zhí)行make linux時報錯如下:
root@testmysql [/software/lua-5.1.4]# make linux
cd src && make linux
make[1]: Entering directory `/software/lua-5.1.4/src'
make all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
make[2]: Entering directory `/software/lua-5.1.4/src'
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lapi.o lapi.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lcode.o lcode.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldebug.o ldebug.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldo.o ldo.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldump.o ldump.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lfunc.o lfunc.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lgc.o lgc.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o llex.o llex.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lmem.o lmem.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lobject.o lobject.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lopcodes.o lopcodes.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lparser.o lparser.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lstate.o lstate.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lstring.o lstring.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ltable.o ltable.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ltm.o ltm.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lundump.o lundump.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lvm.o lvm.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lzio.o lzio.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lauxlib.o lauxlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lbaselib.o lbaselib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ldblib.o ldblib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o liolib.o liolib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lmathlib.o lmathlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o loslib.o loslib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o ltablib.o ltablib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lstrlib.o lstrlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o loadlib.o loadlib.c
gcc -O2 -Wall -DLUA_USE_LINUX -c -o linit.o linit.c
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o
ranlib liblua.a
gcc -O2 -Wall -DLUA_USE_LINUX -c -o lua.o lua.c
In file included from lua.h:16,
from lua.c:15:
luaconf.h:275:31: error: readline/readline.h: No such file or directory
luaconf.h:276:30: error: readline/history.h: No such file or directory
lua.c: In function 鈥榩ushline鈥?
lua.c:182: warning: implicit declaration of function 鈥榬eadline鈥?
lua.c:182: warning: assignment makes pointer from integer without a cast
lua.c: In function 鈥榣oadline鈥?
lua.c:210: warning: implicit declaration of function 鈥榓dd_history鈥?
make[2]: *** [lua.o] Error 1
make[2]: Leaving directory `/software/lua-5.1.4/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/software/lua-5.1.4/src'
make: *** [linux] Error 2
解決方法:yum install libtermcap-devel
yum install ncurses-devel
yum install libevent-devel
yum install readline-devel
2、安裝MySQL-proxy時報錯:
checking for LUA... configure: error: Package requirements (lua5.1 >= 5.1) were not met:
No package 'lua5.1' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LUA_CFLAGS
and LUA_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解決辦法:
cp etc/lua.pc /usr/local/lib/pkgconfig/lua5.1.pc
3、安裝MySQL-proxy時報錯:
checking for GLIB... configure: error: Package requirements (glib-2.0 >= 2.16.0) were not met:
No package 'glib-2.0' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables GLIB_CFLAGS
and GLIB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
解決辦法:
1、查看系統(tǒng)已經安裝glib的rpm包;
glibc-2.5-49.el5_5.4
glibc-headers-2.5-49.el5_5.4
glib2-2.12.3-4.el5_3.1
glibc-common-2.5-49.el5_5.4
glibc-devel-2.5-49.el5_5.4
2、下載安裝glib-2.18.4.tar.gz
4、剛開始使用系統(tǒng)里rpm所指定的mysq_config時,mysql-proxy安裝報錯,信息如下;
configure: error: mysql_config not exists or not executable, use $ ./configure --with-mysql=/path/to/mysql_config
看到幫助安裝文檔里要求如下:
--with-mysql[=PATH] Include MySQL support. PATH is the path to 'mysql_config'。
解決辦法就是:安裝包中的第6步。
http://hi.baidu.com/adriannet/blog/item/e06d2d58ea8d798f810a1854.html
一、系統(tǒng)環(huán)境:
1、nginx負載均衡/反向代理服務器(1臺)
環(huán)境:CentOS 5.5 nginx-0.7.65
IP:192.168.0.10
2、后端PHP應用服務器(2臺)
環(huán)境:CentOS 5.5 Apache + PHP
Webserver1 IP:192.168.0.20
Webserver1 IP:192.168.0.21
二、安裝配置
1、安裝nginx負載均衡/反向代理服務器
安裝過程就不詳說了,可以參考我另一篇文章《nginx+tomcat負載均衡集群安裝配置》,nginx負載均衡/反向代理配置如下:
…
upstream phpserver {
server 192.168.0.20:80 weight=5;
server 192.168.0.21:80 weight=5;
}
…
server {
listen 80;
server_name localhost;
root /webroot;
index index.php index.html index.htm;
location ~ .*\.(php|php5)?$ {
proxy_pass http://phpserver;
include proxy.conf;
}
location ~ /\..+ {
deny all;
}
access_log /var/log/nginx/access.log;
}
2、后端PHP應用服務器的詳細安裝配置遲些再寫出來;
三、測試發(fā)現的問題及解決辦法
1、當后端兩臺PHP應用服務器都正常時,訪問速度非常快,查看日志,原來一個請求,是后端兩臺服務器同時響應的;
2、為了模仿故障測試,停掉一臺PHP應用服務器,這時再訪問,請求打開一頁面時,發(fā)現有一半響應比較快,另一半響應很慢,最后頁面是可以打開,但速度不理想,很慢,查看error日志,發(fā)現nginx還是把請求的一半發(fā)往已停掉的那臺服務器,難怪會這么慢;但當很快(10秒內)再打開一個請求頁面時,速度又非常快了,查看日志,發(fā)現nginx不會把請求的一半發(fā)往已停掉的那臺服務器;過一會再發(fā)起一個請求時,又出現有一半響應比較快另一半響應很慢的現象了,查看日志,nginx又把請求的一半發(fā)往已停掉的那臺服務器;
3、到這里,我明白了nginx檢查后端應用服務器的健康時是有一個時間間隔的,應該怎樣處理這個問題呢,當后端有一臺服務器down機時,用戶訪問感覺不出有慢的現象?原來在nginx負載均衡配置里加上下面兩個參數時可以有效的解決這個問題:
upstream phpserver {
server 192.168.0.20:80 weight=5 max_fails=2 fail_timeout=600s;
server 192.168.0.21:80 weight=5 max_fails=2 fail_timeout=600s;
}
3.1)max_fails = NUMBER ---- 在一定時間內(這個時間在fail_timeout參數中設置)檢查這個服務器是否可用時產生的最多失敗請求數,默認為1,將其設置為0可以關閉檢查,這些錯誤在proxy_next_upstream或fastcgi_next_upstream(404錯誤不會使max_fails增加)中定義;
3.2)fail_timeout = TIME ---- 在這個時間內產生了max_fails所設置大小的失敗嘗試連接請求后這個服務器可能不可用,同樣它指定了服務器不可用的時間(在下一次嘗試連接請求發(fā)起之前),默認為10秒,fail_timeout與前端響應時間沒有直接關系,不過可以使用proxy_connect_timeout和 proxy_read_timeout來控制。
我設置當有2個請求失敗,就表示后端的服務器不可用,在以后的600S時間內nginx不會再把請求發(fā)往已檢查出標記為不可用的服務器,再次測試時,把后端一臺PHP應用服務務器停掉,只是有一個請求打開頁面時出現上面的現象,以后10分鐘內都不會出現了,請求頁面打開速度正常,fail_timeout的值可以根據你的實際情況而定。
1、Nginx介紹
Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器 。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的Rambler.ru 站點開發(fā)的,它已經在該站點運行超過四年多了。Igor 將源代碼以類BSD許可證的形式發(fā)布。自Nginx 發(fā)布四年來,Nginx 已經因為它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名了。目前國內各大門戶網站已經部署了Nginx,如新浪、網易、騰訊等;國內幾個重要的視頻分享網站也部署了Nginx,如六房間、酷6等。新近發(fā)現Nginx 技術在國內日趨火熱,越來越多的網站開始部署Nginx。
2、為什么使用Nginx
Nginx 是一個高性能Web和反向代理服務器, 它具有有很多非常優(yōu)越的特性(主要是基于Linux系統(tǒng)闡述的):
l 在高連接并發(fā)的情況下,Nginx是Apache服務器不錯的替代品: Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平臺之一. 能夠支持高達 50,000 個并發(fā)連接數的響應, 感謝Nginx為我們選擇了 epoll and kqueue 作為開發(fā)模型.
l Nginx作為負載均衡服務器: Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作為 HTTP代理 服務器對外進行服務. Nginx采用C進行編寫, 不論是系統(tǒng)資源開銷還是CPU使用效率都比 Perlbal 要好很多.
l 作為郵件代理服務器: Nginx 同時也是一個非常優(yōu)秀的郵件代理服務器(最早開發(fā)這個產品的目的之一也是作為郵件代理服務器), Last.fm 描述了成功并且美妙的使用經驗.
l Nginx 是一個 [#installation 安裝] 非常的簡單 , 配置文件 非常簡潔(還能夠支持perl語法), Bugs 非常少的服務器: Nginx 啟動特別容易, 并且?guī)缀蹩梢宰龅?*24不間斷運行,即使運行數個月也不需要重新啟動. 你還能夠 不間斷服務的情況下進行軟件版本的升級 。
以上都是官方的一些說法,看看網上的一些意見:“4GB內存的服務器+Apache(prefork模式)一般只能處理3000個并發(fā)連接,因為它們將占用3GB以上的內存,還得為系統(tǒng)預留1GB的內存。我曾經就有兩臺Apache服務器,因為在配置文件中設置的MaxClients為4000,當Apache并發(fā)連接數達到3800時,導致服務器內存和Swap空間用滿而崩潰。而這臺 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服務器在3萬并發(fā)連接下,開啟的10個Nginx進程消耗100M內存(20MB*10=100M),開啟的250個php-cgi進程消耗1G內存(4MB*250≈1GB),加上系統(tǒng)自身消耗的內存,總共才消耗2GB內存。如果服務器內存較小,完全可以只開啟25個php-cgi進程,這樣php-cgi消耗的總內存數才100M。在開啟25個php-cgi進程的情況下,每分鐘的處理能力只比開啟250個php-cgi進程時低了不到一半。”
3、Nginx的安裝
基于李,楊家用的1臺主機,操作系統(tǒng)是Win2003版本的,進行安裝配置。
Windows的安裝比較簡單,直接到http://wiki.nginx.org/NginxInstall下載需要的壓縮包,解壓到相應目錄(假如是C:/nginx),點擊目錄下面的nginx.exe即可啟動。
4、動靜分離和負載均衡的準備工作
l Host配置:
127.0.0.1 yangli.com
l 服務器:win2003 1臺
l Web容器:Tomcat 6(8888端口)、Resin(8080端口)
Tomcat和resin都部署相同應用,getUsers.jsp作為測試頁面。
l 反向代理服務器:Nginx-0.8.34.zip
靜態(tài)目錄路徑:e:/home/htmlfile/getUsers.html
l 項目部署:普通web項目,例如:example
Ø Resin-3.0.26配置:
<host id="yangli.com" root-directory=".">
<web-app id="/" document-directory="E:/example/webapp"/>
</host>
Ø Apache-tomcat-6.0.26 配置文件:
D:\apache-tomcat-6.0.26\webapps\examples
修改:D:\apache-tomcat-6.0.26\conf\server.xml
增加:
<Host name="yangli.com" appBase="D:\apache-tomcat-6.0.26\webapps\examples"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:\apache-tomcat-6.0.26\webapps\examples">
</Context>
</Host>
主要是為了解決訪問tomcat服務器的時候,
不需要http://yangli.com:8888/examples/getUser.jsp
可以直接訪問:http://yangli.com:8888/getUser.jsp
具體說明,可以上網搜搜。
l 實現原理圖:
配置原理圖
5、動靜分離
假設后端只有一臺web服務器,配置如下:
upstream yangli.com {
server 127.0.0.1:8888;
#tomcat
}
server {
listen 2010;
server_name yangli.com;
access_log off;
location / {
root e:/home/htmlfile;
index index.html index.htm;
if (!-f $request_filename) {
rewrite ^/([a-zA-Z]+).html /$1.jsp last;
proxy_pass http://yangli.com;
break;
}
}
}
注明:如果是靜態(tài)文件將定位到:e:/home/htmlfile; 目錄
如果e:/home/htmlfile不存在該文件,則請求到后端服務器:
這里使用了rewrite規(guī)則rewrite ^/([a-zA-Z]+).html /$1.jsp last;
if (!-f $request_filename) {
rewrite ^/([a-zA-Z]+).html /$1.jsp last;
proxy_pass http://yangli.com;
break;
}
當我們請求:
此時:訪問的是E:\home\htmlfile\2010.html
當我們訪問:
根據rewrite規(guī)則,實際請求到了:127.0.0.1:8888上的tomcat進行處理,這樣子就實現了動靜分離,而對于用戶來說,感覺只是僅僅訪問了html頁面。
同樣測試Resin,也是成功的。
6、負載均衡
1. Nginx 負載均衡基礎知識
nginx的upstream目前支持4種方式的分配
1)、輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
2)、weight
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。
2)、ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
3)、fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優(yōu)先分配。
4)、url_hash(第三方)
在需要使用負載均衡的server中增加
proxy_pass http://yangli.com;
每個設備的狀態(tài)設置為:
a) down 表示單前的server暫時不參與負載
b) weight 默認為1.weight越大,負載的權重就越大。
c) max_fails :允許請求失敗的次數默認為1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
d) fail_timeout:max_fails次失敗后,暫停的時間。
e) backup: 其它所有的非backup機器down或者忙的時候,請求backup機器。所以這臺機器壓力會最輕。
修改配置如下:
upstream yangli.com {
server 127.0.0.1:8888;
#tomcat
server 127.0.0.1:8080 backup;
#resin
}
下面來測試一下:
實際上訪問了:
由于:resin設為backup,那么當tomcat宕機了,nginx會將請求發(fā)送到resin服務器,此時resin接管了tomcat,為外界提供服務。
測試如下:
1、關閉tomcat服務器
執(zhí)行:D:\apache-tomcat-6.0.26\bin\shutdown.bat
表明tomcat已經被關閉
2、訪問http://yangli.com:2010/getUsers.html
請求到resin服務器上了。
3、啟動tomcat服務器:
D:\apache-tomcat-6.0.26\bin\startup.bat
頁面訪問正常
4、訪問http://yangli.com:2010/getUsers.html
由于tomcat工作正常,于是又接管,作為主服務器進行工作。
7、總結
本文主要闡述了利用Nginx實現動靜分離和負載均衡,其中后端服務器使用了Resin和Tomcat,旨在表明Nginx并不關心后端服務器類型,只要后端服務器部署了相同的應用,訪問正常即可。
最后附上nginx配置:
upstream yangli.com {
server 127.0.0.1:8888;
server 127.0.0.1:8080 backup;
}
server {
listen 2010;
server_name yangli.com;
access_log off;
location / {
root e:/home/htmlfile;
index index.html index.htm;
if (!-f $request_filename) {
rewrite ^/([a-zA-Z]+).html /$1.jsp last;
proxy_pass http://yangli.com;
break;
}
}
}
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jooben/archive/2010/04/06/5454995.aspx
####################################
#Nginx與php分離配置
#Author:楚霏
#Date: 2010-5-12
#Update: 2010-5-12
#Env: Centos 5.4 x86_64
####################################
一、準備工作
####################################
環(huán)境:Centos 5.4 x86_64
WEBServer IP: 10.0.0.240
PHPServer1 IP: 10.0.0.241
PHPServer1 IP: 10.0.0.242
####################################
二、思路
####################################
WEBServer:
1.只負責接收http請求并分發(fā);
2.只安裝nginx,不安裝php;
3.只建/www/wwwroot目錄,不存放php代碼;
4.所有靜態(tài)文件使用CDN。
PHPServer:
1.只負責處理php請求;
2.只安裝php-fastcgi和mysql客戶端;
3.建/www/wwwroot目錄,最好從NFS文件服務器上掛載網站代碼。
####################################
三、配置
####################################
#WEBServer:
#增加一行到nginx.conf
#----------------------------引用文字-開始----------------------------
include upstream.conf;
#----------------------------引用文字-結束----------------------------
#新加upstream配置文件
#vi /usr/local/nginx/conf/upstream.conf
#----------------------------引用文字-開始----------------------------
upstream FastCGIServers {
server 10.0.0.241:9000;
server 10.0.0.251:9000;
}
#----------------------------引用文字-結束----------------------------
#修改虛擬主機配置文件的fastcgi_pass為負載均衡指定的upstream值
#----------------------------引用文字-開始----------------------------
location ~ \.php$ {
include fastcgi_params;
#fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_pass FastCGIServers;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/wwwroot/test.com$fastcgi_script_name;
}
#----------------------------引用文字-結束----------------------------
#PHPServer:
vi /usr/local/php-fcgi/etc/php-fpm.conf
#----------------------------引用文字-開始----------------------------
#把監(jiān)聽地址改為本機ip:port
#找到:
#改為:
#把請允許的客戶端改為WEBServer的地址
#找到:
#改為:
#----------------------------引用文字-結束----------------------------
####################################
四、特點
####################################
1.擴展容易:增加一臺php服務器,就不用配置nginx了,直接到nginx配置文件中增加一行即可
2.nginx配置全在一臺機器,不再需要建太多虛擬主機,也不需要每臺服務器hosts文件中解析自定義的域名
2.更好發(fā)揮各自優(yōu)勢,nginx只用來接收http請求,有望達到傳說中的并發(fā)10萬;php-fcgi也可以開更多的進程。
####################################