發表文章

目前顯示的是 2010的文章

web版linux系統管理員介面 - webmin安裝

圖片
linux伺服器上面最麻煩的一件事情就是指令很多,對於不熟指令的初學者網管來說簡直是惡夢。
其實有比較簡單的管理介面可以使用啦!我們只要在伺服器上安裝webmin這個套件就可以利用網頁的方式管理伺服器的系統,權限大到連重開機都不是問題喔!



只要在指令界面上輸入;
rpm -U http://ncu.dl.sourceforge.net/project/webadmin/webmin/1.530/webmin-1.530-1.noarch.rpm

就可以由遠端伺服器上直接下載webmin來安裝了
安裝完後管理的路徑就是
http://伺服器網址:10000

因為安裝完後預設的port是10000所以如果連不進去請檢查一下防火牆設定吧(建議是在防火牆還沒啟用前就先安裝啦,這樣最不會出問題)

登入的帳號密碼就跟你在linux上設定的使用者是相同的。



webmin中文化流程
這個套件是多國語言版本的,不過安裝完成時是預設英文版的,所以我們要選擇中文語系來使用。

在左手邊主選單找到webmin -> Change Language and Theme
預設應該是Global language (English (US)),把他改成Personal choice->Traditional Chinese (ZH_TW.UTF-8)就是正體中文啦!

設定完成後將頁面重新整理就可以看到令人感動的中文介面了。

google 天氣 API

圖片
這幾天在翻文件又被我抓到好東西了
google天氣查詢API ,這個東東基本上官方還沒有看到有正式公告出來,不過大家都用得很開心了。


用GET的方式傳值
http://www.google.com/ig/api?hl=zh-tw&weather=tainan
很明顯的,weather=地名
就可以取得天氣資料。 是XML格式,直接解析就行了。貼心的是icon這個標籤竟然附帶了對應天氣的圖檔,如果沒時間自己設計就拿來用吧!!

http://www.google.com/ig/images/weather/mostly_sunny.gif

FaceBook社群插件

這個功能其實已經推出一段時間了,不過FB一直都把他擺在很難找的地方。大概是覺得工程師們都很厲害的可以找的到吧!

目前FB推出幾個社群插件:

可以在這個網址找到:http://developers.facebook.com/plugins

這幾個的安裝方式基本上都一樣,就拿一個來介紹就好了。



FACEBOOK Like Box Plugin:
這個插件算是我最常用的吧!他可以把你指定的頁面有多少人點讚還有最新發布的文章都列出來,相當實用

簡單實做css圖片裁切

圖片
當我們在做開放給很多人可以上傳圖片的平台時,例如部落格 相簿 商城等平台。常常會遇到一個困擾:遇到不會修圖的會員,圖檔規格都很奇怪導致索引頁面跑版
像這樣:
這個時候其實我們只要做一下小小的css設定就可以矯正這個問題:
1.建立一個div把圖片包起來:

<div class=img>

<img src=\"圖片路徑\" width=\"鎖定寬度\" />

</div>
2.設定css內容 重點是要設定overflow=hidden

.img{
width:100px;
height:100px;
overflow:hidden;
}
這樣的做法,圖片本身不會受到影響,但是多餘的部分就會被隱藏起來。

這樣就會整齊一點啦!不過上傳時的圖片預先裁切才是要先做好的功課喔!

jQuery 製作下拉選單

圖片
這個其實是一套常用到的選單如下

這支程式的原理是先用html建立一個會全部顯示的主選單及子選單,用css設定子選單預設關閉當主選單被滑鼠移入時就會觸發顯示的動作。顯示的同時將依照主選單的座標來控制子選單的位置。html 部分:<div id=\"main_link\"> <div class=\"main\" id=\"a\">主選單1 <p class=\"sub\">sub1<br/>sub1</p> </div> <div class=\"main\" id=\"b\">主選單2 <p class=\"sub\">sub2<br/>sub2</p> </div> </div> <div id=\"con\">內容</div> jQuery部分
<script type=\"text/javascript\"> $(function(){ $(\".main\").mouseenter(function(){ var position = $(this).offset(); var x = position.left; var y = position.buttom ; $(\".sub\",this).slideDown(); $(\".sub\").css(\"left\",x); $(\".sub\").css(\"top\",y); }); $(\".main\").mouseleave(function(){ $(\"p\",this).hide(); }); }); </script> CSS部分
body{ marg…

Apache Mode Rewrite 安裝設定

mode rewrite的應用範圍在我們想要把顯示在url上的檔名隱藏或修改的時候

通常都是很多文章或是很多商品的時候
不想要直接把get的參數險是在網址列,這時候這個模組就會用到啦

坊間常用的WordPress就有支援這樣的功能


安裝方式:
step 1.
httpd.conf 中
#LoadModule rewrite_module modules/mod_rewrite.so
把前面的#拿掉

step 2.
一樣在httpd.conf 中找到
AllowOverride None
改成
AllowOverride All
就可以開放所有的資料夾都支援這個功能


step 3
記得重啟




附註:
如果是在有vhost的主機下要順便檢查一下vhost的檔案裡面是不是也有
AllowOverride None
如果有的話也要記得改成none

google Chart API - QRcode 線上直接產生二維條碼

圖片
google的圖形API有提供一個線上產生QRcode的功能
https://developers.google.com/chart/infographics/?hl=zh-TW

API路徑
http://chart.apis.google.com/chart?參數

主要參數
圖檔尺寸:chs=寬x高
宣告二維條碼:cht=qr
內容:chl=文字內容或網址"建議使用前先urlencode"

非必要參數
choe=編碼方式



有些時候可能會需要把圖檔也存到伺服器端而不是即時讀取,那麼我們就要搭配一下copy()這個函式,把這個圖檔路徑抓到伺服器儲存。




google 官方說明頁面
http://code.google.com/intl/zh-TW/apis/chart/docs/gallery/qr_codes.html

快速製作日期選單 -jQuery UI datepicker

圖片
我們在製作網頁表單的時候常常會用到填寫日期的地方。 早期我們只能讓使用者填寫完後,再來檢查格式對不對,有了AJAX技術後我們常常會看到下面的畫面:


利用萬年曆方式選擇日期,這樣的好處就是使用者終於不用猜我們網站的日期格式了。 這個技術同時會使用到 jquery  jquery-ui  

1.在head貼上
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js">script>這是連結到jquery網站上面的程式路徑,你也可以直接去這個路徑把檔案抓到你的網頁資料夾上。2.貼上javaScript語法其中我們看到第三行 #birthday 表示這個功能要套用到ID為 birthday 的表單,datepicker裡面代的參數可以在官方網站裡面查到主要是用來控制細部功能的。3.建立一個input欄位ID和上面設定相同。這樣就大功告成了!相關網站: http://jqueryui.com/demos/datepicker/

將多階層JOSN 轉成php 陣列的方式

這幾天剛好在研究facebook api

它們使用的方式就是用json把值回傳給我們,但是呢?大部分的API回傳值都是多階層的JSON不是單階層的

json傳回的型態是obiect所以我們需要把json decode後再將資料轉變成陣列
如果只是單一階層的json object那麼我們只需要使用php官方提供的get_object_vars()函式就可以輕鬆搞定 
但是如果是多階層的就沒有官方的函式可以用了
拜訪google大神後發現有人提供了這樣的函式


function std_class_object_to_array($stdclassobject)
{
    $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;

    foreach ($_array as $key => $value) {
        $value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value;
        $array[$key] = $value;
    }

    return $array;
}
// print_r(std_class_object_to_array(json_decode($json_str)));
?> 在文件中先貼上這支function後,std_class_object_to_array()這隻函式就可以幫我們把多階層的object也加入陣列中瞜


是不是很方便阿!


參考資料來源:
PHP 將 Object 轉換成 Array (CLI JSON Reader) | Tsung's Blog

CENTOS 5 中 MySQL忘記密碼重新設定方法

在網路上面找到一堆沒用的資料好不容易又被我找到說對了的人

資料來源:http://www.tisswb.cn/archives/552.html

很剛好的我的mysql也是用yum安裝的


只要按照下面的步驟就可以完成更新的動作

# /etc/init.d/mysqld stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysqld restart
# mysql -uroot -p

centOS5 安裝yum

這兩天在評估轉換VPS(虛擬實體主機)的供應商,由本來的iSmlie 改到戰國策,價格稍微貴一點,不過目前看起來速度ok。重點是他們有提供電話服務24H的喔。

不過戰國策提供的linux VPS 拿到的時候其實滿傻眼的。因為他的centOS中竟然沒有yum。這對我們這種linux菜鳥來說簡直快要抓狂。這個時候怎麼辦呢?

找了好多文章上面提供的yum套件rpm安裝檔 連結都失效,終於被我在一個國外網站上面找到有人分享這個:

#rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/yum-3.2.22-20.el5.centos.noarch.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/python-elementtree-1.2.6-5.i386.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/python-sqlite-1.1.7-1.2.1.i386.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/rpm-python-4.4.2.3-18.el5.i386.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/m2crypto-0.16-6.el5.6.i386.rpm \http://mirror.centos.org/centos/5/os/i386/CentOS/yum-fastestmirror-1.1.16-13…

偵測mysql 服務是否正常運作 shell Script實作

話說,最近遇到一台機器 mysql 服務時常會忘記自己還在
搞了很久實在都搞不定,因此我決定發揮頭痛醫頭的精神。直接寫一個shell Script來偵測看他是不是活著。

Liunx Shell Script 範例:
#!/bin/bash
T=$(date +%H:%M:%S)
D=$(date +%m%d%Y)

mysqladmin -u test flush-hosts $1  >> /dev/null || {
    /etc/init.d/mysqld restart $1 >> /dev/null || {
        echo "$T" > /s_"$D".error
    }
echo "$T" error > /"$D".error
}

說明:
先設定兩個變數 T 和 D分別用來記載時間和檔名,因為我們要讓每天的錯誤檔案分開記這樣比較清楚。

mysqladmin -u test flush-host $1 >> /dev/null
這行的動作是說如果mysqladmin -u test flush-host執行成功( $1 表示執行成功),就不處理
>>表示把處理後的值丟到下面的地方 /dev/null 表示不處理,因此剛剛那一段的意思表示:如果mysql 釋放成功那就不管他

||  要不然(或)

/etc/init.d/mysqld restart $1 >> /dev/null  把mysqld 重新啟動
這個地方要注意一件事情:
在指令模式中,/etc/init.d/mysqld restart 也可以寫成 service mysqld restart。不過在shell script中這樣的寫法是不被允許的,在這裡面的執行路徑都必須是絕對路徑。除非你不想給cron進行排程。

echo "$T" > /s_"$D".error  這表示如果連重新啟動都失敗,就寫入log到 /s_當天日期.error的檔案



存檔後要記得把檔案設成可以被執行  chmod +x 檔案路徑
然後丟到cron中就可以啦


你可能還會需要看:
crond linux 系統排程

CentOS5 Apache 限制目錄存取

伺服器中如果只輸入網址但是沒有輸入檔名通常我們都會預設指向到index.php  或是index.htm
這個部份只要在httpd.conf中設定
DirectoryIndex index.php
就好。

但是偏偏事情總是會有例外,如果某個資料夾中剛好沒有index.php這個檔案,那麼檔案結構和目錄就會被看光光。這樣是很危險的。
這個時候我們需要找到這行:

Options Indexes FollowSymLinks
改成
Options -Indexes FollowSymLinks
仔細看這兩行的差別,只是差了一個 - 號就可以給我們的檔案一點基本的保護喔!

ps.在CentOS中內建的apache 剛好就沒有設定到這一段...因此使用CentOs的同學們要特別注意喔