Category: 資訊科技

  • EC2上的Ubuntu裝ec2-api-tools出現錯誤

    因為從2010年11月開始一年,有一台micro主機免費所以開始使用EC2。不過卻發現之前用的alestic提供的Ububtu 10.10的image的EBS空間是切15GB,而免費的quota是10GB所以多出來的5GB變成額外要charge,而我架這個blog也才使用1GB左右的空間而已,所以決定著手調整EBS的size。可是卻發現Ubuntu上沒有預載ec2的api tools,但是嚇了sudo apt-get install ec2-api-tools ec2-ami-tools卻出現下面這種錯誤。 $ sudo apt-get install ec2-ami-tools Reading package lists… Done Building dependency tree Reading state information… Done Package ec2-ami-tools is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package…

  • [memo] Ubuntu 安裝Oracle JDK (12.04 / 12.10)

    在Ubuntu以往的版本中可以直接透過apt-get install sun-java-jdk來安裝官方版本的JDK,可是Ubuntu 10.04之後將Sun的JDK移到partner的repositoty中(詳情),也因此無法直接下apt-get install sun-java-jdk來安裝JDK。所以必須要把相關資訊加入apt的repository中才能安裝。 Ubuntu 12.04 & 12.10 由這個團隊提供。 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer   Ubuntu 11.04 & 11.10 (已失效) Ubuntu 11.04之後的版本,apt repository的位置與10.x版本不同。 sudo apt-get install python-software-properties sudo add-apt-repository ppa:ferramroberto/java sudo apt-get update sudo apt-get install sun-java6-jdk sun-java6-plugin   Ubuntu 10.04 & 10.10 sudo apt-get install python-software-properties sudo…

  • AP遠端連接MySQL Connection暴增最後造成ERROR 1040 (HY000): Too many connections

    PHP連接遠端mysql server最終造成ERROR 1040 (HY000): Too many connections 最近遇到一個很詭異的問題,原本的PHP系統要擴增AP Server並把MySQL移到一台獨立的Server上運作,原本認為這個task幾乎是沒有風險的,沒想到一接上線,大量的Client端的請求不僅無法消化,MySQL這邊的Connection數目竟然會很快地暴增,進而讓MySQL不斷吐Too many connections的錯誤的訊息。

  • 利用SSH Tunnel連線至內部網路

    以往要連線回公司的內部網路,或是連線到某些限制只有公司IP可以使用的服務的時候通常是透過VPN來完成。但VPN有些麻煩的是它會利用VPN遠端的閘道取代原本的閘道,這樣一來原本閘道的路由就會斷線,其實有點麻煩,例如:我連到公司的VPN,但公司的網路會擋MSN Messenger的連線,所以連VPN的過程中MSN就會斷線了。(註:當然可以透過VPN會指定通過遠端閘道的路由規則) 所以如果在要連線的地方有一台開放SSH連線的Server的話,其實可以透過SSH Tunnel達到類似VPN的效果,透過SSH Tunnel可以連到遠端主機可以連到的任何主機,其實SSH Tunnel的運作簡單說就是透過SSH作為通道然後利用遠端主機作為跳板來連線。不過缺點是每個要連線的位置都需要設定,所以如果需要連10種服務就必須設定相對多次,數量一多設定起來其實也相當麻煩!

  • [memo] Ubuntu Linux 10.04透過apt-get安裝JDownloader

    JDownloader是一套基於Java的下載軟體,除了可以支持跨平台運作外,最大的特點就是可以自動下載像是Megauploader、Rapidshare、ZShare、訊6、Bandongo(這個好像壞掉很久了)、…等等,免費空間的檔案。在Windows上只要裝好JRE然後下載下zip檔就可以直接打開, 這邊介紹一下如何用Ubuntu Linux直接利用apt-get安裝下載JDownloader,透過apt來下載最大的好處是apt會幫忙handle安裝其他相依套件及更新程式的工作,一般直接利用官方下載執行檔安裝無法達到上述個功能,操作起來也比較麻煩。其實透過apt安裝其實只要下下面的三行指令,就可以把JDownloader的下載放到apt的repository裡面,然後更新apt的內容後就可以直接安裝JDownloader。 sudo add-apt-repository ppa:jd-team/jdownloader sudo apt-get update sudo apt-get install jdownloader 還是稍微說明一下上面指令的意義,第一行是把jdownloader加入到apt-get的套件庫(repository)中。另外可能會遇到類似下面這種gpg錯誤 gpg: 正在請求金鑰 6A68F637 自 hkp 伺服器 keyserver.ubuntu.com gpg: 金鑰伺服器逾時 gpg: 從金鑰伺服器接收失敗: 金鑰伺服器錯誤 這是因為在加入repository的時候會去ubuntu的keyserver取得金鑰來驗證。但是取得金鑰的過程卻發生錯誤。這可能是因為取得金鑰是走 11371 port 而防火牆沒有開啟該port的連線的緣故。如果有遇到無法取得金鑰的問題可以測試看看該port是否可以聯通。 第二行指令是命令apt去更新repository的套件清單,這樣才能讀取到剛剛加入的repository。 第三行是讓apt去安裝jdownloader。 下載安裝完畢後,只要在指令列下jdownloader,程式就會開始運行。 簡單memo一下嚕。

  • [超易] 兩行指令搞定 Linux SSH登入免密碼

    用ssh登入通常需要密碼,有些情況下SSH不想要輸入密碼,(例如:想要寫script進行ssh遠端操作,一來ssh連線輸入密碼的地方又必須是interactive的沒辦法在script裡面寫密碼,二來是密碼用明碼紀錄在script實在是不大安全)。本篇用最快速的方式介紹SSH免登入的設定方式,本次要介紹的方式就是在Client端產生一組金鑰,然後把把公開金鑰複製到Server的信任名單中。 關鍵知識 其實關鍵點只有下面這兩點(注意,這兩點所說的檔案是放在兩台不同的主機喔): 要連接ssh的client端必須產生一組主機使用者的金鑰組。金鑰組可以在~/.ssh中找到,檔名是id_rsa(私鑰)、id_rsa.pub(公鑰)。(ps. rsa是加密演算法的名子,也可能利用其他的演算法對金鑰加密,如dsa等)。如果沒有產生金鑰組則必須產生一組,方法詳見Step1。一般來說,公鑰的檔名會像是這樣: ~/.ssh/id_rsa.pub 把公鑰複製到Server端的信任名單中。一般來說會放在下面檔案中: ~/.ssh/authorized_keys 後面的範例是從金鑰產生到匯入信任清單的示範,如果有需要的話可以參考。 Step 1.  在Client端產生金鑰組 使用下面指令就可以產生金鑰,所有設定都用預設的就可以了,不需要特別設置。特別注意的是”Enter passphrase”的地方請直接壓enter,這樣才能不用輸入密碼。 ssh-keygen -t rsa 金鑰組檔案會預設放在~/.ssh/id_rsa是私鑰(private key)、~/.ssh/id_rsa.pub是公鑰(public key)。金鑰組務必保存好權限不要開太大,否則會造成安全性的問題。 2. 將公鑰的內容放置在Server的信任清單中 只要在client端下下面這個指令,這樣金鑰就會輸入進Server的信任清單中了。實在是很簡單吧。 cat ~/.ssh/id_rsa.pub | ssh server-user@server-host “cat >> ~/.ssh/authorized_keys” 另外特別還是要補充一下,因為金鑰如果可供寫入的話十分危險。所以許多人會將 ~/.ssh裡面的id_rsa.pub id_rsa authorized_keys三個檔案設定成唯獨,所以如果不成功的話,可能是server端的user把authorized_keys設定成唯獨。所以可以用下面這個指令先把authorized_keys檔案的讀寫先打開再下Step2的命令: ssh server-user@server-host “chmod 600 ~/.ssh/authorized_keys” 設定完畢後記得再把權限改回來 ssh server-user@server-host “chmod 400 ~/.ssh/authorized_keys”

  • 在Linux上移除舊檔案(過期的檔案) – 應用find指令

    在管理主機的時候常常會遇到主機的應用裡面肥大又過時的log檔案,動輒單個檔案就上看GB等級的log檔日積月累下來恐怕沒有幾台主機可以吃得消。如果每次手動清理除了費時外主機一多也很難管理。其實最好的方式是在系統的排程(如cron)內寫進自動刪除的指令,我這邊所提供的解法是用find指令列出舊的檔案,然後把這些檔案刪除。 1. 用find指令在Linux上列出舊的檔案 find /var/log/apache2 -mtime +30 上面這個指令的意思是在/var/log/apache2底下,-mtime是限定修改時間(單位是24小時),後面接著的數字的表示法如下: +n:表示比n單位以上的檔案 (例如:+30,代表30天之前) –n:表示比n單位之內的檔案 (例如:-30,代表30天之內) n:不給給正負號代表正好n單位的檔案。 此外還有time跟min也都是代表修改時間,但是後面接的數字的單位變成分鐘。此外其他相關的指令如下: -mtime、-mmin:檔案內容(data)最後的修改(modify)時間 -atime、-amin:檔案最後被存取(access)的時間 -ctime、-cmin:檔案狀態(status)最後被修改的時間(change)。 (註:檔案狀態是指:修改擁有者或群組(即調用chown、chgrp)、修改檔案存取權限(即調用chmod) 2. find資料後執行刪除指令 find到檔案後可以用-exec指令來進行相應的處理,下面這個指令示範的是直接下rm指令刪除 find /var/log/apache2 -mtime +30 -exec rm -f {} ; -exec是表示找到檔案後要執行的指令,現在要執行移除檔案的指令rm,但rm指令會與使用者確認是不是要刪除檔案,因為每個檔案都會問所以挺麻煩的所以加入-f (force) 參數讓rm強制移除檔案。然後 {} 則代表指令接檔案名稱的地方,find會將找到檔案的檔名與路徑帶入到{} 這邊。最後加入; 代表指令結束,不可以省略。 希望這樣介紹可以讓大家更了解find這個指令。

  • Ubuntu Linux 網卡設定範例 Sample

    Ubuntu Linux在命令列下改網卡的IP的方式: #修改時需要root權限 sudo vim /etc/network/interfaces DHCP的設定 auto eth0 iface eth0 inet dhcp 手動設定static IP的方式 auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.255 gateway 192.168.1.254

  • 釋放與清除 Linux記憶體中的Cache Memory

    參考網站 http://www.ubuntu-unleashed.com/2008/04/free-up-cache-memory-in-linux.html http://www.linuxinsight.com/proc_sys_vm_drop_caches.html http://blog.linux.org.tw/~jserv/archives/002039.html http://phorum.study-area.org/index.php?topic=39976.0;wap2 在Linux Kernel 2.6.16後對於Linux的VM(Virtual Memory)進行了調整,因此會在top等指令發現雖然process所使用的記憶體不多,但是透過free來觀察卻發現只剩下一點點的剩餘記憶體。 但是關閉一些程式卻發現total的free memory並沒有被釋放,造成系統剩餘記憶體總是不夠的感覺,而全部processes佔用的記憶體好像也沒有實際上看到的那麼多,這其實是cache占用了memory中的空間。而且但是根據小州老師(kenduest,是我的啟蒙恩師呢~泣~)表示,雖然記憶體剩餘空間看起來沒有被釋放,但是process實際需要使用時kernel仍會自動從memory釋放cache給process使用,所以使用者不必擔心。 ↓ 使用top指令看到的剩餘記憶體,與free指令看到的容量是差不多的 ↓ 在執行一些需要大量cache的程式後會發現剩下的記憶體只剩下一點,而實際上處理程序卻沒有用掉那麼多記憶體 ↓ 而如果是用htop指令來觀察系統狀況的話會發現memory的bar雖然很長,但是實際上卻只吃掉1GB的記憶體,其實bar的黃色部分是cache佔用的,處理程序要使用時kenel還是會自動將cache釋放給處理程序使用。 要強制手動釋放或清除Linux中的Cache Memory可以使用下面的指令 echo 3 > /proc/sys/vm/drop_caches 3 是指釋放pagecache、dentries與inodes,也就是釋放所有的cache,其他也可以下: #釋放pagecache echo 1 > /proc/sys/vm/drop_caches #釋放dentries與inodes echo 2 > /proc/sys/vm/drop_caches ↓ 下過指令後,就可以在htop中就可以觀察到黃色部分的cache不見了 打完收工,感謝收看嚕~

  • 2010/05/23 部落格搬家~

    因為快要搬家了~所以不能再把部落格擺在家裡~弄了好久終於弄好~ 放在SUSE總是有問題~結果擺在Ubuntu就稍微弄一下就好了~實在是覺得很奇怪捏~ 順便發一下測試文~哈哈 http://www.youtube.com/watch?v=Z4DIyn7EdKI