[技術分享 ] 23 八月, 2007 19:26

今天在維修主機的同時..收到了來自公會的消息..幸好沒什麼責怪..因為算是天災....哇哈哈..真是太高興了...所以這要架的更好...

論壇大致上沒有什麼問題, 還是使用 Discuz6.0RC1 來安裝..風格容後再安裝就好...但是..dkp系統就有點疑慮了...因為長以來都是使用eqdkp來支援, 但總是有些東西支援不足, 這次就趁機找一套好一點的來試試...找了半天...在藍色小舖裡有人分享了一個FSDKP v1.53 繁體中文版來用...高興嘍...趕快下傳回來...但是心裡有一絲不安...因為我在想會不會是asp寫的...結果一打開..真的...啊~~~~~晴天霹靂..我自己並沒有架IIS的主機...怎麼辦...XD

當然又使用了GooGle大師...找到了一篇報導, 原來有iASP可以在Linux Apache下使用...當場開始研究了....
Linux運行ASP

但是..似乎是很早之前的資料了..而且找到原文章時..居然是安裝RH5.1的版本...心想...這應該是早期的做法..就朝另一個方向去找 Apache + ASP....這裡有一個參考的..但又是原文..似乎很難理解..所以我把大致的安裝方法記下來就好了..有興趣的人再自己去詳讀..@@

首先...要安裝Apache的擴展套件apxs...這是httpd-devel之中的一個套件..所以我們當下用yum將其安裝....
# yum -y install httpd-devel

利用指令確認安裝位址...
# which apxs
/use/sbin/apxs

嗯..這步完成了..接下來要去下載mod_perl模組來安裝..可以直接到以下鏈結下載
mod_perl 2.0: Version 2.0.3 - November 28, 2006

利用以下指令將其解壓並安裝
# tar zxvf mod_perl-2.0-current.tar.gz
# cd mod_perl-2.0.3
# perl Makefile.PL USE_APXS=1 WITH_APXS=/usr/sbin/apxs EVERYTHING=1

不知為何..他還是會問你一次apxs的full path...就再輸入 /usr/sbin/apxs 就開始安裝了...
Please provide a full path to 'apxs' executable
(press Enter if you don't have it installed):  /usr/sbin/apxs

接下來要安裝Apache的ASP模組..我是使用CPAN方式安裝..先安裝CPAN Shell...
# perl -MCPAN -e shell

在第一次起動時..最後會問您的國別及地區..來判定那一個線上更新伺服器最理想..請依個人需求選擇..一定跑到出現 CPAN> 後開始接下來的安裝..請依序輸入
cpan> install CPAN
cpan> install MLDBM
cpan> install MLDBM::Sync
cpan> install Digest::MD5
cpan> install Apache::ASP
cpan> install Bundle::Apache::ASP::Extra
最後一項跑得最久..我差點睡著了...XD...
值得一提的是..所有選項都可以用預設跳過..唯一有一項要問您apache的src在那..那個可以直接回答 "q" 就跳過搜尋了..
Please tell me where I can find your apache src [../apache_x.x/src] q

最後輸入exit結束CPAN
cpan> exit

再來修改 httpd.conf 在裡面加上如下設定項...
=========================
 PerlModule  Apache::ASP
<Files ~ (\.asp)>
    SetHandler  perl-script
    PerlHandler Apache::ASP
    PerlSetVar  Global .
    PerlSetVar  StateDir /tmp/asp
</Files>

=========================
宣告一下ASP檔的處理方式....

最後一步也是最重要的..不然你只會看到一堆500..而且在/var/log/httpd/error_log裡也只會看到一堆Can't locate object method "get" via package 的訊息, 看起來似乎是權限或是PERL的版本不對..其實不是的..是還要做一個modules的使用宣告....怎麼做呢??

先產生一個檔案..我將他取名為 start_asp.pl 再賦予權限...我將他放在 /etc/http/conf.d
# vi /etc/httpd/conf.d/start_asp.pl
打入內容
=========================
#!/usr/bin/perl
use Apache2::compat;
1;
=========================
然後存檔再給予權限
# chmod 755 /etc/httpd/conf.d/start_asp.pl

接下來在httpd.conf裡再加上下面的宣告...再重起apache...就OK了...
# vi /etc/httpd/conf/httpd.conf
內容
=========================
PerlRequire /etc/httpd/conf.d/start_asp.pl
=========================
# service httpd restart

最後自己做一支簡單的ASP檔跑...一切OK的啦...哇哈哈..

以下提供數個參考連結文件..有興趣可以看看
Apache::ASP http://www.apache-asp.org/
mod_perl http://perl.apache.org/

 

[技術分享 ] 22 八月, 2007 15:29

主機掛掉後(傷心)...開始了我的重灌之路...去義守大學檔案伺服器拿回了FedoraCore7 ISO後, 又去生了一台DVD光碟機來給主機安裝(我就是沒有DVD..至少我可以生出來)...

經過了約40分鐘, 安裝完畢, 一切都非常順利, 依照規畫先把eth0設定成區域IP 192.168.168.188方便我管理後, 再來就是ADSL撥接了...利用adsl-setup設定好設定值後, 開始撥接...問題出來了...怎麼會撥不上..都會停好久再出現

/sbin/pppoe-start: line 215: 3563 Terminated $CONNECT "$@" > /dev/null 2>&1

然後連不上...我的XXOO...= ="...查了資料, 似乎好多人都有這個問題, 甚至直接傳出FC5~FC7的RP-PPPOE包都有問題...因為FC7年紀還很小, 可查的"台灣"文件少得可憐, 只能自己K Document來測試了, 首先...我把所有的相關套件全部反安裝降級為FC5使用的版本, 還是不行...只要再昇回來..再來看到文件上有說..是開機的核心問題..選用base而不要用xen就可以了...反覆試了許多次...終於得到了一個結果, 所以把他記錄下來以防下次又忘了..

原來..大家說的都對, 但是都不齊全..FC7目前所提供的re-pppoe沒有問題..有問題的在libpcap這支函式上...只要把他降回FC5用的libpcap-0.9.4-2.1.2就可以完成了第一步, 現在能用嗎!?...當然不行...開機核心也要選base來搭配就可以正常了...但是..另一個問題來了..系統會自動更新呀..而且每次重開又會選xen的核心....我這台主機是要用來當SERVER的..那怎麼辦, 只要重開就倒站!?

放心, 這都是小事..我們一步一步來..
首先, 先把pppoe撥接的設定刪掉, 還有把服務ntpd(自動校正時間)設定為不啟用, 以防ADSL還不能用時, 他們在開始時會一直找網路而拖到我們的時間..
# rm -rf /etc/撥接設定檔
# chkconfig ntpd off

再來把libpcap反安裝..直接使用yum即可, 他會一併移掉依附的package...等下還要裝回來..
# yum remove libpcap

會提示一併移如下套件
==========================================================
 Package                 Arch       Version          Repository        Size
==========================================================
Removing:
 libpcap                 i386       14:0.9.7-1.fc7   installed         256 k
Removing for dependencies:
 nmap                    i386       2:4.20-5.fc7     installed         2.4 M
 nmap-frontend           i386       2:4.20-5.fc7     installed          88 k
 ppp                     i386       2.4.3-6.2.1      installed         821 k
 rp-pppoe                i386       3.5-31           installed         227 k
 wvdial                  i386       1.54.0-5.2.2     installed         264 k

Transaction Summary
==========================================================

接下來去下載舊的RPM包來安裝...
libpcap-0.9.4-2.1.2.i386.rpm
nmap-4.00-1.2.i386.rpm
nmap-frontend-4.00-1.2.i386.rpm
ppp-2.4.3-6.2.1.i386.rpm
rp-pppoe-3.5-31.i386.rpm

wvdial-1.54.0-5.2.2.i386.rpm

使用rpm-ivh xxxx.rpm 安裝回去...
再重設一次撥接帳號...是否順利撥接了呢!?

接下來要處理開機時核心選擇問題..其實..不管後來他有更新的核心或他預設是xen, 其實都由設定檔控制的..我們只要把設定檔備份下來後, 再把用不到的設定項拿掉即可..就不擔心重開機會跑錯核心了...
以GRUB例:

# cp /boot/grub/grub.conf /etc/grub/grub.conf.bak
# vi /boot/grub/grub.conf

====================================
title Fedora (2.6.22.1-41.fc7)
        root (hd0,0)
        kernel /vmlinuz-2.6.22.1-41.fc7 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.22.1-41.fc7.img
title Fedora (2.6.20-2925.13.fc7xen)
        root (hd0,0)
        kernel /xen.gz-2.6.20-2925.13.fc7
        module /vmlinuz-2.6.20-2925.13.fc7xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.20-2925.13.fc7xen.img
title Fedora-base (2.6.21-1.3194.fc7)
        root (hd0,0)
        kernel /vmlinuz-2.6.21-1.3194.fc7 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.21-1.3194.fc7.img
title Fedora (2.6.20-2925.9.fc7xen)
        root (hd0,0)
        kernel /xen.gz-2.6.20-2925.9.fc7
        module /vmlinuz-2.6.20-2925.9.fc7xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        module /initrd-2.6.20-2925.9.fc7xen.img
====================================
紅色的設定部份把他拿掉就可以了, 以後要用再從備份拿回來就好了..

這樣是不是輕輕鬆鬆完成ADSL設定呢...^^


 

[生活札記 ] 22 八月, 2007 15:11

在西元2007年08月20日, 一個值得紀念的一天, 因為主機及我的部落格隨著閃電而去, 真是無限感概, 也從中得到了一個時常被遺忘的經驗, 那就是常常要關心自己的電腦並且常常做一下資料備份...XD

話說當天凌晨, 一陣轟然巨響的雷聲, 在天空中響起, 當然沒有吵起我, 吵起我的是兩台主機同時"嗶"一聲, 讓我不由得毛骨悚然, 天啊~~上個月的事件不會再發生吧, 上次這樣過後, 主機的檔案系統就出了問題, 是很用力的把他救回來, 那又是一段往事了, 不過看到他只開了一次機就不再重開後, 心裡也安然了許多, 不多說...就再繼續睡了..XD

一如往常工作, 到了下午, 突然主機在乾妹"樺樺"進去收信時, 造成主機大LAG後, 我的主機就完全沒反應了, 天啊!! 真的發生了..

一回到家, 直接衝到主機前關心他, 發現他硬碟燈一直在不斷快閃, 心想~~不會吧...閃了一下午??....這樣不是不妙..而是非常不妙了....就只有進入系統下了強制關機指令, 結果無效...只有忍痛把電拔掉(因為機體溫度已經好高了)...果然重開機..馬上就過熱警示, 拆下來拿到冷氣前花了五分鐘把他吹冷, 再重開機...情況一樣...一直沒有方法解決, 用了 single mode來修復...也顯示說無壞軌, 到底是怎麼了呢!?

經過五六次的重開後..終於在開機BOOT時就掛了...唉!! 該來的還是要來, 跑不掉了...拆下硬碟拿到Window系統上利用Explorer2fs來查看內容, 無法讀取....再利用R-Studio修復, 救回了不少東西(在此也要喇叭一下R-Studio真的好用)...

就在昨晚, 買了新材料回來換, 把整台重整後, 下載了最後的FedoraCore7來安裝, 開始的重灌之路, 人家系統Crash重灌Windows是家常便飯, 但是重灌Linux是一個大工程, 尤其又是FC7, 只能自己摸...這個日子就漫長了...到目前為止恢復的服務也只有WWW, MAIL, DNS, FTP, SAMBA而已..還有好多項還沒裝回來...包含網站..論壇...天啊....真是讓我好好的上了一課, 資料一定要勤備份~~~~

目前進度想慢慢先把Blog恢復, 不過內容已經不想再PO了..就讓他隨風而逝吧~~~

請老天祝福我早日完成這個大任務~~~~

ps. 光想到魔獸公會的DKP...我就已經想自殺了...哇啊啊啊~~~~

 

[技術分享 ] 01 八月, 2007 13:59

今天在新專案上寫上一個跑馬燈公告程式...因為舊式的 marquee 實在不符合效益..而且訊息也必須是即時讀取的動態公告才是..所以就用Javascript寫了一支程式..當然了, 為了可以不斷去資料庫抓取資料及重覆迴圈, 就得要用到 setTimeout的程序來運行嘍..程式原碼如下...

====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var newRand;
var msg = new Array("台股開盤勁揚139點 攻上9200點", "中信金:兆豐金股票四年內賣光光", "台新銀:全力推動與彰銀換股", "公營事業成功轉型 台肥鎖定藍金產業 賣水也賣保養品");
var num = msg.length;
showData();

function getRandom() {
       var ranNum= Math.floor(Math.random() * num);
       return ranNum;
}
function showData() {
    seq = 0;
    showObj.innerHtml = '';
    newRand = getRandom();
    Scroll();
    setTimeout("showData()", changetime );
}
function Scroll() {
    showObj.innerHTML = msg[newRand].substring(0, seq);
    seq++; seq++;
    setTimeout("Scroll()", interspeed );
}
====================================================

結果一運行...ㄟ..好了...沒什麼問題..但是...偶然按出工作管理員後..發現CPU佔用率居然一開始就45%...第二迴圈一開始就變成98%了...哇....而且顯示的速度也變快了...真慘...經過一番測試, 才發現似乎是setTimeout在搞鬼 查詢資料結果 嗯..似乎大家也有這些問題..而且只要把IE縮下來又正常了..但是..事情不能就這樣算了..因為如果使用者一直停在這一頁, 過了一段時間, 會因為程序不斷佔用而造成系統 crash , 所以開始了Debug之旅...首先...找到了一篇有關於setTimeout的教學...(筆者都會了..= =)..讀了其中的內容..找到了一個似乎可以解決的方法..就是 clearTimeout 的形式, 真是如獲至寶, 立刻改寫程式碼如下:

====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var newRand;
var nextShow;
var showing;

var msg = new Array("台股開盤勁揚139點 攻上9200點", "中信金:兆豐金股票四年內賣光光", "台新銀:全力推動與彰銀換股", "公營事業成功轉型 台肥鎖定藍金產業 賣水也賣保養品");
var num = msg.length;
showData();

function getRandom() {
       var ranNum= Math.floor(Math.random() * num);
       return ranNum;
}
function showData() {
    if (showing || nextShow) {
        clearTimeout(showing);
        clearTimeout(nextShow);
    }

    seq = 0;
    showObj.innerHtml = '';
    newRand = getRandom();
    Scroll();
    nextShow = setTimeout("showData()", changetime );
}
function Scroll() {
    showObj.innerHTML = msg[newRand].substring(0, seq);
    seq++; seq++;
    showing = setTimeout("Scroll()", interspeed );
}
====================================================

修改完再次運行, 嗯...發現顯示速度正常了, CPU佔用率也一直保持在38%...果然如筆者所猜測一樣..所以問題就解決了, 原來...程式的收尾也是很重要的, 在設計師的一念之間, 會方便到許多人的使用, 多了數行程式碼, 也將會使您的程式更加完善, 所以筆者再將本次經驗詳實記錄下來, 也可以供以後查閱嘍...cccc
最後為了要在同一頁不變換的狀態下, 重新讀取最新公告..所以加入了PHPRPC的程式碼, 把亂數取陣列資料改到server端讀取, 每次只讀回一筆最新的亂數資料即可...也可以節省在頁面reload時所再必須讀取的資料量...最後完成的程式碼為:

====================================================
var showObj = document.getElementById('HotNews');
var interspeed = 150;
var changetime = 9000;
var seq;
var msg;
var nextShow;
var showing;

var num;
showData();

function showData() {
    if (showing || nextShow) {
        clearTimeout(showing);
        clearTimeout(nextShow);
    }
    rpc.rpc_getData("news", function(msg) {
        seq = 0;
        showObj.innerHtml = '';
        Scroll();
       
nextShow = setTimeout("showData()", changetime );
    });
}
function Scroll() {
    showObj.innerHTML = msg.substring(0, seq);
    seq++; seq++;
   
showing = setTimeout("Scroll()", interspeed );
}
====================================================

嗯...Javascript 還有許多筆者未探知的世界...現在開始運用也不會太晚..就怕沒有開始...^^
坐而論 ---> 起而行!!

«上一篇   1 2 3 4 5 6 7 8 9 10 11 12 13 14