將你的image server加上CDN

如果你是用AWS的Route53當作DNS,而你再做圖片處理的時候,無法直接用子網域指你的img.domainname.com指到cloudfare , 因為Cloudfare不允許你這樣做,因此你需要在多申請一個網域,將Name server指到cloudfare即可,在將圖片的url指定到新申請的網址,弄完後使用者發request到你的image server時會先過cloudfare,而cloudfare會自動把你的圖片cache起來,這樣可以大大提昇效能~

記得還要設定Apache的virtual host~

iframe的cross domain解法

網站如果使用iframe來load另一個網頁,在相同的domain下沒有任何問題,
但若要跨domain,例如你有子網域要互通,則你必須在javascript做點修改。

在你的兩個網頁的<head></head>加入以下code

這樣子可以解決cross domain的問題。理論上是它會去判斷你的document.domain,由於兩個子網域的document.domai不一樣,所以要針對這個地方做修改。

以上僅供參考

用Apache benchmark做壓力測試

Apache本身的套件有個ab程式可以做測試,它可以測試你的網站可以乘載多少壓力!

用法:

option:
-A auth-username:password
Supply BASIC Authentication credentials to the server. The username and password are separated by a single : and sent  on  the
wire  base64  encoded.  The  string  is  sent  regardless of whether the server needs it (i.e., has sent an 401 authentication
needed).

-b windowsize
Size of TCP send/receive buffer, in bytes.

-c concurrency
Number of multiple requests to perform at a time. Default is one request at a time.

-C cookie-name=value
Add a Cookie: line to the request. The argument is typically in the form of a name=value pair. This field is repeatable.

-d     Do not display the “percentage served within XX [ms] table”. (legacy support).

-e csv-file
Write a Comma separated value (CSV) file which contains for each percentage (from 1% to 100%) the time  (in  milliseconds)  it
took to serve that percentage of the requests. This is usually more useful than the ‘gnuplot’ file; as the results are already
‘binned’.

-f protocol
Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL).

-g gnuplot-file
Write all measured values out as a ‘gnuplot’ or TSV (Tab separate values) file. This file can easily be imported into packages
like Gnuplot, IDL, Mathematica, Igor or even Excel. The labels are on the first line of the file.

-h     Display usage information.
-H custom-header
Append  extra  headers  to the request. The argument is typically in the form of a valid header line, containing a colon-sepa‐
rated field-value pair (i.e., “Accept-Encoding: zip/zop;8bit”).

-i     Do HEAD requests instead of GET.

-k     Enable the HTTP KeepAlive feature, i.e., perform multiple requests within one HTTP session. Default is no KeepAlive.

-n requests
Number of requests to perform for the benchmarking session. The default is to just perform  a  single  request  which  usually
leads to non-representative benchmarking results.

-p POST-file
File containing data to POST. Remember to also set -T.

-P proxy-auth-username:password
Supply BASIC Authentication credentials to a proxy en-route. The username and password are separated by a single : and sent on
the wire base64 encoded. The string is sent regardless of whether the proxy needs it (i.e., has sent an 407 proxy  authentica‐
tion needed).

-q     When  processing  more  than  150 requests, ab outputs a progress count on stderr every 10% or 100 requests or so. The -q flag
will suppress these messages.

-r     Don’t exit on socket receive errors.

-s     When compiled in (ab -h will show you) use the SSL protected https rather than the http protocol. This feature is experimental
and very rudimentary. You probably do not want to use it.

-S     Do  not  display  the median and standard deviation values, nor display the warning/error messages when the average and median
are more than one or two times the standard deviation apart. And default to the min/avg/max values. (legacy support).

-t timelimit
Maximum number of seconds to spend for benchmarking. This implies a -n 50000 internally. Use  this  to  benchmark  the  server
within a fixed total amount of time. Per default there is no timelimit.
-T content-type
Content-type header to use for POST/PUT data, eg. application/x-www-form-urlencoded. Default: text/plain.

-u PUT-file
File containing data to PUT. Remember to also set -T.

-v verbosity
Set  verbosity  level  –  4 and above prints information on headers, 3 and above prints response codes (404, 200, etc.), 2 and
above prints warnings and info.

-V     Display version number and exit.

-w     Print out results in HTML tables. Default table is two columns wide, with a white background.

-x <table>-attributes
String to use as attributes for <table>. Attributes are inserted <table here >.

-X proxy[:port]
Use a proxy server for the requests.

-y <tr>-attributes
String to use as attributes for <tr>.

-z <td>-attributes
String to use as attributes for <td>.

-Z ciphersuite
Specify SSL/TLS cipher suite (See openssl ciphers).

相關文章:
http://blog.longwin.com.tw/2005/08/apache_ab_test_performance/

Ubuntu:了解chgrp/chown/chmod的意義

chgrp:改變檔案群組
chown:改變檔案所屬人
chmod:改變檔案的屬性,SUID等等的特性

chgrp
要改變成為的群組名稱必須要在/etc/group裡面存在的名稱才可以
chgrp [-R] dirname/filename
參數:
-R:進行遞迴,表示連同次目錄下所有檔案與目錄都更新為這個群組的意義

chown
要改變檔案所屬人,使用者必須是已經存在系統中的,也就是在/etc/passwd這個檔案裡有紀錄的使用者。
chown [-R] 帳號名稱 檔案/目錄名稱
ex.
chown -R root:root xxx.php

這個指令通常用這複製別人檔案時,需將檔案所屬人從其他使用者改為自己的等等。

chmod
改變(owner/group/others)的三個屬性
r:4 w:2 x:1
ex
chmod 775 xxx.php
此時檔案所屬人與群組用有rwx屬性,而其他不屬於該群組與該所屬人的只擁有rx屬性
如果要將某個檔案變成可執行檔,但不要讓其他人修改可以設為755,
另外如果你不希望某個檔案讓人看到則可以設為740

目錄屬性的意義
r:表示具有讀取目錄結構的權限,所以當你具有讀取某個目錄檔案的權限時,可以用ls這個指令將該目錄的內容列印出來。
w:當你擁有w屬性時,表示你可以對該目錄
1.建立新的檔案與目錄
2.刪除已經存在的檔案與目錄(不論該檔案屬於誰的)
3.將已存在的檔案或目錄進行更名
4.搬移該目錄內的檔案與目錄位置

注意:x屬性關乎你可否進入某個目錄,而w屬性則關呼若你擁有某個目錄的寫入權限,則不論該目錄裡面的檔案所屬人屬於誰的,你都可以進行刪除修改的動作!

在ubuntu下設定語系locale

看看目前的語系設定

看看目前已經安裝的語系

相關的檔案資訊可以至以下目錄查看

當你打locale後會列出目前的語系設定,以下是它的相關意思

如果要修改上述某個顯示設定,可以用export,例如

若要變更的是系統全域設定,可以把設定寫在 /etc/default/locale 這個檔案裡
或是加到環境變數的設定檔/etc/environment

AWS EC2的.pem檔丟失,又無法ssh登入時

今天發生了一個悲劇,我在ec2的機器不小心改動到一些東西,結果ssh無法登入ec2,然後之前的.pem檔又弄丟了。

google了好久都找不到解法,只好直接在該機器上燒AMI,然後用這個AMI燒一台ec2 機器(順便加大了一點硬碟空間)
再把原本的EIP指到新開的這台機器,一下子就把問題搞定了。原本那台ec2就直接停掉了……
只能說AWS的AMI真的是太方便了。

AWS的AMI

ami
AWS的AMI可以替你搞一模一樣的機器,如果你服務做大了,一台機器負荷不了,可以在該EC2上燒AMI,燒完之後在開機器,非常方便。而你需要做的只是在該instance上點右鍵按create Image。

man指令後面數字的意義

man

man指令後面的數字意義

1使用者可以操作的指令或可執行檔
2.系ㄨ核心可呼叫的函數或工具等等
3.一些常用的函數(function)或函式庫(library)
4.裝置檔案的說明
5.設定檔或者是某些檔案的格式
6.遊戲(game2)
7.慣例與協定等,例如Linux標準檔案系統,網路協定,ASCII code等等的說明內容
8.系統管理員可用的管理指令
9.跟kernel有關的文件

用man查詢說明時,可分為下列幾個部份
NAME:簡短的指令,資料名稱說明
SYNOPSIS:簡短的指令下達語法(syntax)簡介
DESCRIPTION:較為完整的說明,這部份最好仔細看看!
OPTIONS:針對SYNOPSIS部份中,有列舉的所有可用的參數說明
COMMANDS:當這個程式執行時,可以在此程式中下達的指令
FILES:這個程式或資料所使用或參考或連結到的某些檔案
SEE ALSO:可以參考的,跟這個指令或資料有相關的其他說明
EXAMPLE:一些可以參考的範例
BUGS:是否有相關的臭蟲

檔案異地直接複製: scp

將檔案從一台主機複製到另外一台主機, scp 用法如下:
將本機的 /home/user/xxx 全部複製到 127.0.0.1 上面的 sc 家目錄內

將 127.0.0.1 這部遠端主機的 /etc/bashrc 複製到本機的 /tmp 底下

如果要連同目錄都一起複製,記得加-r。另外,連接在冒號後面的就是遠端主機的檔案。 因此,如果冒號在前,代表的就是從遠端主機下載下來,如果冒號在後,則代表本機資料上傳!