發表文章

目前顯示的是 8月, 2015的文章

CentOS6 安裝 memadmin 管理工具

圖片
由於當我們安裝完 memcache.php 後發現到可監控的內容及範圍仍然有限,在此發現到大陸有推行一款 memadmin的管理工具,簡單介紹一下: 使用MemCached以後,肯定希望知道cache的效果,對於MemCached的一些運行狀態進行監控是必要的,memcached提供了 stats這個命令可以查看memcached相關狀態,但是不是很詳細. 一個可視化的工具,基於web形式的Memcached管理與監控工具----MemAdmin   MemAdmin是一款可視化的Memcached管理與監控工具,使用PHP開發,體積小,操作簡單。 主要功能: 服務器參數監控:STATS、SETTINGS、ITEMS、SLABS、SIZES實時刷新 服務器性能監控:GET、DELETE、INCR、DECR、CAS等常用操作命中率實時監控 支持數據遍歷,方便對存儲內容進行監視 支持條件查詢,篩選出滿足條件的KEY或VALUE 數組、JSON等序列化字符反序列顯示 兼容memcache協議的其他服務,如Tokyo Tyrant (遍歷功能除外) 支持服務器連接池,多服務器管理切換方便簡潔 安裝方法  1. Download MemAdmin from http://www.junopen.com/memadmin 下載MemAdmin  2. Unzip the files into your web root 解壓文件,傳到你網站的根目錄下  3. Set your username and password in the config. php 打開config. php 文件,設置你的管理帳號和密碼  4. Visit the index. php in your browser : http://example.com/memadmin/index. php 然後通過瀏覽器,訪問memadmin目錄,這樣就完成了memcache的配置 加如以經安裝後應該可以看到下圖   如果你和我一樣看不習慣簡體字怎麼辦? 請編輯語系檔,找個簡轉繁工具將文字轉過來存檔,記住千萬別更改檔名 memadmin/langs/zh-cn.php  

CentOS6 安裝 memcache.php 管理工具

圖片
繼上一篇安裝 memcached server 及 php memcache 之後,我們知道有幾個管理工具可以使用,於是就先來使用 memcache.php 在上次下載的 memcache 中我們先找到 memcache.php 並複製 /bin/cp memcache.php /var/www/html/ 進行設定 vi /etc/sysconfig/memcached PORT="11211"           #配置memcached使用的端口 USER="nobody"         #配置啟動時使用的用戶 MAXCONN="1024"     #最大開發連接 CACHESIZE="64"      #最大使用?存,預設是64M OPTIONS=""                #其它配置,這個選項是用來設定監聽的 Memcached 位置,一般來說不會用到,除非你有超過兩台以上的Memcached主機。 # /etc/init.d/memcached start # /etc/init.d/httpd restart  memcached控制選項: # /etc/init.d/memcached start 啟動 # /etc/init.d/memcached stop 停止 # /etc/init.d/memcached restart 重新啟動 # /etc/init.d/memcached status 啟動狀態 設定系統開機後自動執行 memcached # chkconfig memcached on 檢查一下memcached是否設置成功 (2 ~ 5 都為on) # chkconfig --list memcached 確認 memcached 是否啟用 # pgrep memcached 1725 # netstat -tulpn | grep :11211 tcp 0 0 192.168.1.216:11211 0.0.0.0:* LISTEN 1725/memcached udp 0 0 192.168.1.216:11211 0.0.0.0:* 1725/memcached php -i | grep memc

centos 6.x 安裝 memcached 及 php memcache

圖片
安裝 memcached yum install memcached 重新啟動 memcached service memcached start 設定自動開啟 memcached chkconfig memcached on 查詢程序 ps -ef | grep memcached 498       1536     1  0 00:47 ?        00:00:00 memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached/memcached.pid root      7972  1446  1 01:36 pts/0    00:00:00 grep memcached 設定開啟11211 memcached -u root -d -m 64 -l 127.0.0.1 -p 11211 查詢網路狀態 netstat -ln tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN 安裝 zlib-devel yum install zlib-devel 安裝 memcache pecl install memcache 編輯 php.ini 並加入 extension=memcache.so vi /etc/php.ini extension=memcache.so 重啟apache service httpd restart 查詢 phpinfo.php 應該會出現 memcache 狀態

centos 安裝 PHP bcompile 做 編譯/加密原始碼

圖片
因有需要研究了一下如何加密php程式碼,發現到 bcompile 似乎滿簡單的,安裝方式如下 yum -y install php-devel php-pear pecl install bcompiler 編輯 php.ini 並加入下列 extension=bcompiler.so service httpd restart 使用指令查看是否有安裝 php -m | grep bcompiler bcompiler phpinfo(); # 看是否有載入 bcompiler module  PHP bcompiler 使用 先寫一個編譯程式, 準備把 example.php 編譯成 example.phb (或 xxx.php 都可以), 詳細可見: bcompiler_write_file. 編譯其他程式用的檔案 bcompiler.php     <?php     $fh = fopen("example.phb", "w");     bcompiler_write_header($fh);     bcompiler_write_file($fh, "example.php");     bcompiler_write_footer($fh);     fclose($fh);     ?> hello.php     <?php     function hello()     {        echo "hello\n";     }     ?> example.php     <?php     include('hello.php');     hello();     ?>     編譯: php bcompiler.php # 會發現有產生出 example.phb (或於 bcompiler.php 有另外取名字的 xxx.php)     執行: php example.phb # 會秀 hello, 然後此檔案已經是編譯過的 php code. 如果使用 bcompiler 目的只是要加密 PHP 原始碼,可以直接使用 BENCODER 這支 Script 程式,

利用 php 連 MySQL 實作寫入測試資料進行壓力測試

圖片
壓力測試的軟體很多,有免費的 apache bench 也有要付費的,MySQL 則有 mysqlslap 壓力測試工具指令,但問題來了,如何驗證長期間資料不斷的寫入,系統的穩定性?在測試環境下常常很難找10個人或很很多人不斷的去新增資料創造流量來檢測,或許寫支 PHP 程式來讓資料可以不斷的慢慢寫入,然後再使用 apache bench 及 mysqlslap 同時來作壓力測試,或許才能有比較的檢測數據,於是自行寫了非常簡單的程式來做這件事情,簡單的欄位驗證、資料寫入、刪除、秒數延遲,來模擬現實中系統有可以在多人上線時同時寫入資料的效能問題,或許比起利用檢測工具一次批量的寫入資料,或者是短期間內產生大量資料,更有意義,因此自行寫了支程式,當然欄位、参數都可以隨意的去調整,這邊就不在多加贅述。 PHP 程式設計如下: 表單頁 submit.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript">         function check()         {                 if(reg.num.value == "")                 {                         alert("未輸入資料筆數");                 }                 else if(reg.second.value == "")                 {                         alert("未輸入延遲秒數,至少輸入0秒");                 }                 else reg.submit();          } </script> </head> <body></br></

在 windows 環境下 設定 Apache log rotate

若要修改 apache log rotate 設定,讓它可以自動依指定容量自動切割。 系統環境: Window Server Apache 2.2.25 #ErrorLog "logs/error.log" ErrorLog "|bin/rotatelogs.exe -l D:/Apache2.2/logs/error.%Y.%m.%d.log 86400" #CustomLog "logs/access.log" common CustomLog "|bin/rotatelogs.exe -l D:/Apache2.2/logs/access.%Y.%m.%d.log 86400" common #TransferLog "D:/Apache2.2/logs/ssl_access.log" TransferLog "|bin/rotatelogs.exe -l D:/Apache2.2/logs/ssl_access.%Y.%m.%d.log 86400" #CustomLog "D:/Apache2.2/logs/ssl_request.log" \ #          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" CustomLog "|bin/rotatelogs.exe -l D:/Apache2.2/logs/ssl_request.%Y.%m.%d.log 86400" \            "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 每天產出一個記錄檔 86400 指定容量產出一個記錄檔 500M 上面 log 後面的數字最後加入了 “M”, 即不是以時間輪替, 而且以 100MB 為體積上限輪替。 其他設定參數: %a – 3-character weekday name (localized) %B – full month na

MySQL產生測試資料二

利用MySQL Memory 引擎來建立基本的filler table. 首先調整my.cnf default-storage-engine= MEMORY mysql> show engines; +------------+---------+------------------------------------------------------------+--------------+------+------------+ | Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints | +------------+---------+------------------------------------------------------------+--------------+------+------------+ | MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         | | CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         | | MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         | | InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        | | MEMORY     | DEFAULT | Hash based, stored in mem

MySQL 產生測試資料

利用MySQL Memory 引擎來建立基本的filler table. 首先調整my.cnf default-storage-engine= MEMORY mysql> show engines; +------------+---------+------------------------------------------------------------+--------------+------+------------+ | Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints | +------------+---------+------------------------------------------------------------+--------------+------+------------+ | MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         | | CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         | | MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         | | InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        | | MEMORY     | DEFAULT | Hash based, stored in mem

[MySQL] 修改默認存儲引擎為 MyISAM

MySQL 從 5.5 以後的版本開始預設的儲存引擎為 InnDB 如果要改回 MyISAM 先停用服務,編輯 my.ini 修改一下參數即可 default-storage-engine= INNODB / MyISAM 顯示可使用的儲存引擎和預設儲存引擎 mysql> SHOW ENGINES; mysql> SHOW STORAGE ENGINES; 顯示innoDB存儲引擎的狀態 mysql> show innodb status;

使用指令模式取得 MySql 資料庫大小

取得資料庫的使用容量 SELECT table_schema "test", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ; 亦可查詢剩餘容量(?) SELECT table_schema "test", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema ;

CentOS 安裝快速 LAMP

一般來說安裝網頁伺服器 httpd (apache) ,只需要 yum install httpd -y 就搞定了,但為了能搭配 MySQL 跟 PHP 還得多安裝一些套件。 yum  -y  install  httpd  php  php-mysql  mysql  mysql-server 安裝流程步驟     1.啟動服務     2.設定防火牆     3.測試 php 跟 apache 的環境     4.進一步設定 MySQL ★啟動服務★ >>> 啟動 MySQL 1. sudo chkconfig mysqld on          //設定 MySQL 開機預設啟動,當然你也可以更進一步設定哪些 rc level 才執行他,例如「 chkconfig --levels 235 mysqld on 」 2. sudo /etc/init.d/mysqld start      // 執行 mysqld ,第一次會「正在初始化 MySQL 資料庫........」,且記得是 mysql + d 唷! >>> 啟動 Apache 1. sudo  chkconfig httpd on 2. sudo /etc/init.d/httpd start 註:如果還沒設定網域名稱,可能會得到這提示訊息「正在啟動 httpd:httpd: apr_sockaddr_info_get() failed for hostname httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName」 sudo vi /etc/httpd/conf/httpd.conf  然後尋找字串,增加一行 ServerName your.domain.com.tw:port 就不會有這個錯誤訊息了。 ★設定防火牆★ 這個部分就看你這個 web 的開放對象是誰?如果只允許特定IP,那你就可以增加設定 -A Fw-rules-INPUT -s 140.112.1.0/24 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A F

CentOS 簡易安裝 MySQL server 及基礎設定

僅架設CentOS作業系統並安裝 MySQL 做為 DB server 使用 安裝MySQL [root@host ~]$ yum install mysql mysql-server 啟動MySQL服務 [root@host ~]$ service mysqld start 設定 root 密碼 [root@host ~]$ mysqladmin -u root password 1234 #設定 root 密碼為 1234  [root@host ~]$ mysqladmin -u root -p password 5678 #修改 root 密碼為 5678  連線至 MySQL [root@host ~]$ mysql -u root -p 操控資料庫常用語法 mysql > show databases;                  #顯示資料庫 mysql > use your_databases;              #使用資料庫 mysql > show your_databases;             #顯示資料庫的所有 TABLE mysql > desc table_name;                 #查詢 TABLE 各欄位的資訊 mysql > create database your_database;   #建立新的資料庫 mysql > drop your_database;              #刪除資料庫 使用者權限管理 mysql > GRANT all ON your_db.* TO user@'localhost' IDENTIFIED BY '1234'; # 把 your_db 這個資料庫的所有資料表權限給 user 使用者 mysql > FLUSH PRIVILEGES;    # 更新權限 常用語法 select 欄位名 from 資料表名稱 like '%a%';               # 查詢資料 insert into 資料表名稱(欄位1,欄位2)values('值1','值2');  # 新增資料 delete from 資料表名稱 wher

使用 ApacheBench 進行網站伺服器壓力測試

ApacheBench是一個極為輕量級的壓力測試工具,基本上只要電腦有安裝Apache伺服器就會有這個工具。ApacheBench僅能測試一個網頁所能承受的負載能力,並無法模擬真正使用者操作網站的複雜動作,儘管如此,ApacheBench測試所提供的數據還是非常值得參考的,重點是它非常簡單好學。 1.ApacheBench 小檔案 軟體名稱:ApacheBench 軟體性質:免費 官網說明:[詳細說明] 2.使用教學 ApacheBench預設路徑為: 作業系統     位置 Windows     [Apache安裝目錄]\bin\ Linux     /usr/bin/ 如果環境變數有設定好可直接輸入以下指令看看電腦是否有安裝ApacheBench工具,如果沒有請先切換到上面說明的路徑之後再輸入以下指令看看。     [root@localhost ~]# ab -h 有安裝的話應該會出現ApacheBench 參數詳細說明 以下說明常用的參數供大家參考。 指令說明   指令:ab -k      //使用KeepAlive連線 -c      //同時連線數量 -n      //整個壓力測試的Request數量 現在我們模擬100個人同時連入http://127.0.0.1/,全部產生500個Request,只要輸入以下指令即可。     [root@localhost ~]# ab -k -c 100 -n 500 http://127.0.0.1/ 等待個1~2秒鐘應該就可以跑完了,底下是這次壓力測試的數據,主要我們可以觀看以下幾個指標: 指標名稱     說明 Complete requests     完成的Request次數 Failed requests     失敗的Request次數 Requests per second     每秒能處理的Request(越大越好) Time per request     單獨完成一個Request的時間(越短越好) Connection Times --Connect     client發出Request到server收到的時間 --Processing     server收到Request到server Response的時間 --Waiting     client發出Request到clie

mysql 主從複製之mysql-proxy讀寫分離之負載平衡完整詳解

繼先前實做出 mysql replication 主從網路拓樸架構後,我們繼續在建置一個 mysql-proxy server 將他設定為 192.168.1.214,並加入到整個 mysql replication 主從架構來實現讀寫分離機制。 實驗環境如下 centos6.6 192.168.1.215 master db centos6.6 192.168.1.212 slave db centos6.6 192.168.1.214 mysql-proxy server mysql replication master-slave 這邊不在多加贅述,請參考 前篇 在主從資料庫中加入mysql-proxy帳號權限 grant all on *.* to 'root'@'%' identified by 'password'; grant all on *.* to 'root'@'192.168.1.214' identified by 'password'; #Install EPEL ## Step 1 wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm ## Step 2 ls -1 /etc/yum.repos.d/epel* /etc/yum.repos.d/remi.repo /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/remi.repo ## Step 3 nano /etc/yum.repos.d/remi.repo ## Step 4 [remi] name=Les RPM de remi pour Enterprise Linux $releasever

Slave_IO_Running: NO

Slave I/O: error connecting to master 'backup@192.168.1.x:3306' - retry-time: 60  retries: 86400, Error_code: 1045 change master to master_host='192.168.0.20', master_user='repl', master_password='password', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=334;

MySQL Slave_SQL_Running NO的解決方式

MySQL Slave要確定是否正在運作,在執行【mysql>show slave status;】時,底下2個必須為Yes Slave_IO_Running: Yes Slave_SQL_Running:Yes 但是,如果Slave_SQL_Running為NO時,要怎麼解決呢? Slave_SQL_Running:NO 的解決方式1: 直接跳過一行造成停止的SQL指令 mysql> stop slave; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> start slave; Slave_SQL_Running:NO 的解決方式2: 直接指定Master記錄的File及Position到Slave 1. 先到slave主機停掉slave的運作。 mysql> stop slave; 2. 查看Master主機的File和Position的值。 mysql> show master status; +——————+———–+————–+——————+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +——————+———–+————–+——————+ | mysql-bin.000118 | 199777882 | | | +——————+———–+————–+——————+ 1 row in set (0.00 sec) 3. 到slave主機手動設定。 mysql > change master to >master_host=’master_ip’ , >master_user=’user’, >master_password=’pwd’, >master_port=3306, >master_log_file=’mysql-bin.000118′, >master_log_pos=199777882; 4. 最後啟動slave運作。 mysql> start slave;

MySQL Replication(Master Slave負載平衡)實作

圖片
網路上有很多人提供MySQL的負載方式,例如:Master Slave架構、MySQL MMM架構、DRBD、Cluster、HeartBeat…等一堆MySQL負載平衡的架構,一直MySQL負載平衡的架構,到底要選擇那一個方式才是最好的? MySQL 的M/S架構(Master Slave)是負載平衡中最基礎的架構,也就是很多的架構都是從此延伸出去。如果可以閱讀英文的網友可以直接參考MySQL官網的資料 http://dev.mysql.com/doc/refman/5.0/en/replication.html MySQL M/S架構的原理大致如下: 1.  新增(Add)、刪除(delete)、修改(update)的動作必須移至Master 2. Master會針對這些動作的語法自動產生binlog 檔案 3. Master會將binlog檔案同步(Replication)至所有的Slave 4. Slave會執行binlog檔案中的SQL語法 原理的圖形概念如下: 看到這個架構的原理,或者有些網友就想到了,程式中針對MySQL的動作(SELECT、UPDATE、DELETE、ADD…)都是固定在同一台MySQL中運作,除非是修改程式,否則要怎樣將讀寫分開呢?這個部份就要加入MySQL Proxy的概念了,MySQL Proxy可以自動將讀寫分開,不用修改程式碼,不過本章的重點不是在MySQL Proxy,有興趣的網友可以先參考 http://forge.mysql.com/wiki/MySQL_Proxy 了解MySQL M/S的運作原理之後,再來就是MySQL的設定了,假設要完成的架構如下:     Master:192.168.1.215     Slave:192.168.1.212     只有同步(Replication) 資料庫test     mysql版本:5.1.73(不同版本設定不太一樣) MySQL Replication Master設定 Master要做的流程大概如下: 1. 設定 一個同步的帳號(如果是用root,可以忽略此步驟) 2. 設定my.cnf 3. 將資料庫變成唯讀(read only) 4. 將mytest資料匯出(mysqldump或tar) 5.  解除資料

seajs介紹

SeaJS 官方網站 範例說明 (簡單範例) API說明 (使用文檔) 相關文章 (相關文章) Github SeaJS project SeaJS,是一套簡易使用的加載套件,優點在於nonblocking之後,加快使用者瀏覽頁面感覺,因分模組加載靜態檔案,可以節省時間及頻寬,不需 要的檔案可以在第二時間之後進行載入。這邊單純用文字說明,可能還不是很清楚,作者對於此部份有寫一篇文章大家可以參考看看, 計算機模組化開發 。 結語 SeaJS在目前使用經驗上,可以搭配任何套件,達到有效利用『模組化』的效果,使Javascript Code不會互相污染,盡量使用Object的方式開發,使團隊合作上效果更加顯著。 在使用者感受上,速度也會明顯提昇,同時對於Sever不會產生一次性龐大的reqeust,可以經由不斷地調整,分批下載所需的資料,以節省頻寬。

AngularJS入門

AngularJS入門教程目錄 1. 快速開始 2. 導言和準備 3. 引導程序 4. 靜態模板 5. AngularJS 模板 6. 叠代器過濾 7. 雙向綁定 8. XHR 和依賴註入 9. 鏈接與圖片模板 10.路由與多視圖 11.更多模板 12.過濾器 13.事件處理器 14.REST 和定制服務 15.完結篇 AngularJS快速開始 Hello World! 開始學習AngularJS的一個好方法是創建經典應用程序“Hello World!”: 1. 使用您喜愛的文本編輯器,創建一個HTML 文件,例如:helloworld.html。 2. 將下面的源代碼複制到您的HTML 文件。 3. 在web 瀏覽器中打開這個HTML 文件。 源代碼 <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script> </head> <body>         Hello {{'World'}}! </body> </html> 請在您的瀏覽器中運行以上代碼查看效果。 現在讓我們仔細看看代碼,看看到底怎麽回事。 當加載該頁時,標記ng-app告訴AngularJS處理整個HTML頁並引導應用: <html ng-app> 這行載入AngularJS腳本: <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script> (想了解AngularJS處理整個HTML頁的細節,請看Bootstrap。) 最後,標簽中的正文是應用的模板,在UI中顯示我們的問候語: Hello {{'World'}}! 註意,使用雙大括號標記{{}}的內容是問候語中綁定的表達式,這個表達式是一個簡單的字符串‘World’。 下面,讓我們看一個更有趣的例子:使用AngularJS對我們的問候語文本綁定一個動態表達式。 Hello AngularJS W