2014年4月29日 星期二

AWS 筆記 - 使用 Amazon Elastic Load Balancing 與 SSL/HTTPS (GoDaddy) 設定



首先,先開一台 EC2 機器,架設一下 HTTP/HTTPS,設定完就建一個 AMI 保存起來,再從 My AMI 再多開一檯出來(記得要擺在同一個 Availablility Zone才行),變成有兩檯 EC2 機器正在運行。此外,若 SSL 憑證有第三方簽證,而對於 EC2 上的機器,其 SSL 憑證可以不必用第三方簽證,只要在 Elastic Load Balancer (ELB) 上頭是第三方簽證的就夠用了!讓管理方便許多。

接著設定 ELB 吧,比較需要留意是 SSL 的設定,其中 DNS 跟 SSL 憑證是委託 GoDaddy 維護的,所以先從 GoDaddy 取得 SSL 憑證吧,大概會有三個檔案:
  • xxxxxx.crt
  • gd_bundle-xxxx.crt
  • xxxxxx.key



此時在填寫資料時,在 Public Key Certificate 就是 xxxx.crt ,而 Certificate Chain 就是 gd_bundle-xxxx.crt ,比較麻煩一點的是 Private key 那塊,需要稍微轉換 xxxxx.key

$ openssl rsa -text -in *.key

再把 -----BEGIN RSA PRIVATE KEY----- 到 -----END RSA PRIVATE KEY----- 裡的資料貼上即可。如此一來即可完成 SSL 設定。其他的步驟就沒什麼難的。



設定要用來監控判斷機器狀況的檔案:





挑兩檯機器以上吧:






設定好後就會得到一個網址可以連,此網址就會動態調整 requests 到數檯機器上:



此外,若有機器 out of service 時,也能觀測或動態刪減,十分方便:



其他筆記:
  • 關於 SSL / HTTPS 的部分,記得去申請個 CNAME Record 來對應到 ELB 的網址,如此一來,使用者逛網頁時就不會彈跳出不會彈跳出憑證問題
  • 關於如何測試 ELB 到底有沒有動態調整 requests 的部分,建議可以寫一隻 PHP 讀 /etc/hostname 出來,接著就可以透過 ELB 網址瀏覽,觀察讀出來的 hostname 是否有在變化

    $ cat index.php
    <?php
    @date_default_timezone_set("Asia/Taipei");
    $current_datetime = @date('Y-m-d H:i:s', @time());
    echo "Service @ $current_datetime:".file_get_contents('/etc/hostname')."\n";

AWS 筆記 - 查詢 Amazon RDS Disk Space 硬碟空間使用情況


AWS Console -> RDS -> Instances -> choose an instance -> Show Monitoring -> Freeable Sapce (MB)

此例是建立 300GB RDS,還剩 284053 MB 可用。還可以查看兩星期內的空間使用變化。

2014年4月28日 星期一

AWS 筆記 - 使用 Amazon EC2 以及建立自己的 AMI

老實說,已經有 4 年沒摸 EC2 了 XD 上去逛了一下,整個界面都不一樣了,慶幸地使用流程跟 4 年前差不多,連建立 AMI 的部分也是如此。

建立 Ubuntu 14.04 機器一檯:

Step 1:



Step 2:



Step 3:



Step 4:



Step 5:



Step 6:



建立 AMI:

Step a:



Step b:



接著,開機器時,可以從自己的 AMI 開一檯機器出來:

[Linux] Apache/2.4.7 [authz_core:error] : client denied by server configuration @ Ubuntu 14.04

開始在 AWS 上試用 Ubuntu 14.04 了,結果安裝完碰到這問題 XD 說真的有好一陣子沒有用 apache web server ,為了方便 deploy 跟 server 管理,就又改用 apache 了

關鍵解法:
Require all granted
範例:

$ sudo apt-get install mysql-client php5 apache2
$ sudo mkdir -p /data/dev
$ sudo vim /etc/apache2/conf-available/dev.conf
Alias /dev /data/dev
<Directory /data/dev>
        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride None

        Require all granted
</Directory>

$ sudo a2enconf service-dev
$ sudo service apache2 restart

2014年4月27日 星期日

使用 Graph API 得知指定 URL 在 Facebook 散播的情況

很久沒用都會忘記 Orz

透過 Open Graph:

$ curl https://graph.facebook.com/?ids=http://blog.changyy.org/ | python -mjson.tool
{
    "http://blog.changyy.org/": {
        "id": "http://blog.changyy.org/",
        "shares": 2
    }
}


透過 FQL: SELECT url,id,site FROM object_url WHERE url = 'http://blog.changyy.org'

$ curl http://graph.facebook.com/fql?q=SELECT%20url,id,site%20FROM%20object_url%20WHERE%20url%20=%20%27http://blog.changyy.org%27 | python -mjson.tool
{
    "data": [
        {
            "id": 597172713656917,
            "site": "blog.changyy.org",
            "url": "http://blog.changyy.org"
        }
    ]
}