顯示具有 FreeBSD 標籤的文章。 顯示所有文章
顯示具有 FreeBSD 標籤的文章。 顯示所有文章

FreeBSD中的mysql安裝

>> 2011年12月13日 星期二


網路上以FreeBSD+MySQL搜尋,可以找到上百篇的安裝說明,
大致上的過程,不外乎就是:進入ports目錄,make、make install,
有的寫得比較詳盡一點的,會在make的時候加上一個WITH_CHARSET=utf8   或BUILD_OPTIMIZED=yes 或WITH_XCHARSET=all 這三個參數,
這幾個參數即使不加,也不會有太大的影響,還可以從設定檔裡面進行調整。
install之後,就是在/etc/rc.conf中加入mysql_enable="yes"
最後就可以用/usr/local/etc/rc.d/mysql-server start進行啟動,這樣大致上就完成了。
有的安裝文會在後面加上「cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf」
這是如果有一些設定要自訂的話,就需要加這個檔案調整。
常見的調整有:
query_cache_size = 32M ==>調整快取記憶體
[mysqld]
default-character-set=utf8  ==>預設編碼
[client]
default-character-set=utf8 ==>clinet預設編碼

大致上,不明究理的,跟著作,啟動都沒有太大問題,幾乎都會成功。
但是,天將降大認於斯人也,我就偏偏一直無法啟動,而且連個錯誤訊息都沒有。
幸好有雄大師會診,才發現之前發現的問題與嘗試的解決,都擦身而過。
好吧~把這一次的嘗試,對於mysql的相關運作,將所理解的寫在這邊紀錄一下吧!

有關於my.cnf的設定檔
1.可以不用複製與設定,當/etc或/usr/local/etc中沒有這個設定檔案時,系統會以預設的方式執行(例如編碼如果在make時有指定,則就會將指定編碼變成預設)
2.設定檔放在/etc或/usr/local/etc都可以。不過如果好習慣,應該要放在/usr/local/etc裡面。
3.這個設定檔只要有variable設定錯誤,就無法順利執行。
結論:若無特殊需求(如:需要加大快取記憶體)就不要複製、設定這個檔案了。

有關於錯誤訊息
一般系統錯誤訊息會從/var/log裡面去看,而mysql的錯誤訊息會紀錄在/var/db/mysql/server.domain.com.err裡面,其中server.domain.com會呈現你的hostname。
上面所說得設定檔若有錯誤,造成無法啟動,也可以在這個檔案中找到訊息。

有關於剛剛安裝後的初始處理
一般而言,剛剛安裝完以後,執行 /usr/local/etc/rc.d/mysql-server start 指令,系統就會自動進行資料庫初始化工作。
最原始的系統,會自動產生兩個資料庫:mysql、test。
並且,會產稱一個/var/db/mysql/server.domain.com.pid檔案。
不過,如果細心一點,會發現,當剛剛make install結束之後,會提醒你執行/usr/local/bin/mysql_install_db,進行資料庫初始化。
解析一下這個 mysql_install_db做了哪些事情。
mysql_install_db其實是一個shell script,會引用 my_print_defaults在執行的路徑底下產生一個data資料夾。裡面放的,就是預設會用的資料庫檔案。
不過,如果直接執行/usr/local/bin/mysql_install_db會出現下列的錯誤訊息:

 FATAL ERROR: Could not find ./bin/my_print_defaults
原因在於,這個shell中 basedir變數預設空白,所以需要在指令後面加上 --basedir 參數,指定程式的位置,要正常執行會是下面的樣子:
/usr/local/bin/mysql_install_db --basedir=/usr/local
 (/usr/local後面不要加/,不然路徑會變成/usr/local//bin...,是沒有影響啦!)
正常的執行之後,還會有一段的提醒文字,提醒你執行之後要去修改密碼。
這時候,在你執行這個指令的根目錄會產生一個data資料夾,裡面有預設需要用到的檔案。
此時,當你執行 /usr/local/etc/rc.d/mysql-server start,系統便會去複製這個資料夾的檔案到var/db/mysql裡面。

這就是整個資料庫的初始化過程囉!

最後,可以用ps ax | grep mysql指令看看是否有正常執行。
還有,記得要
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h server.domain.com password 'new-password'
這兩個指令,指定資料庫密碼喔!

Read more...

在FreeBSD中透過ssh上傳檔案

>> 2011年11月16日 星期三

linux-like系統中,若是使用ssh連線,可以透過scp的方式,將檔案直接上傳到主機端,相當方便。
可是,FreeBSD預設的安裝中,並沒有支援這樣的功能。(目前還在確認中!據說啟用sshd就可以使用了,可是我的就是不行。)(CentOS中預設就有這樣功能支援)
這時候需要手動進行安裝,才能使用。

首先,我們需要下載所需套件,因為我已經安裝好wget這個程式,所以直接已指令:
# wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz
進行下載即可。
(附註:經search ports,其中是有 lrzsz-0.12.20_3的套件可以使用,不過我在 fetch 時,卻無法順利抓到原始檔,導致安裝失敗。 )

接下來解壓縮:
# tar -xzvf rzsz-3.48.tar.gz
# cd src
# vi Makefile
修改 Makefile中的 OFLAG= -O 變為:OFLAG= -O -DREGISTERED
(用意在於,避免之後上傳、下載完成後,都會跳出提示。)
# make posix
cc -O2 -pipe -O -DREGISTERED -DPOSIX -DMD=2 rz.c -o rz
size rz
text data bss dec hex filename
29201 640 6328 36169 8d49 rz
rm -f rb rx rc
ln rz rb
ln rz rx
ln rz rc
cc -O2 -pipe -O -DREGISTERED -DPOSIX sz.c -o sz
size sz
text data bss dec hex filename
34740 704 38828 74272 12220 sz
rm -f sb sx zcommand zcommandi
ln sz sb
ln sz sx
ln sz zcommand
ln sz zcommandi
到這邊,如果沒有出現錯誤訊息,那幾乎已經完成安裝,
接下來只要把sz與rz兩個執行檔複製到 /usr/sbin/ 或 /usr/local/bin 即可。
# cp rz sz /usr/sbin/
# cp rz sz /usr/local/bin

可能出現的問題解決方案:


    • 使用時如果遇到以下的錯誤:
    -bash-3.00$ sz sz.doc
    /dev/pts/5: Permission denied
    -->則以root的身份,修改/dev/pts/5的權限即可。
    • 編譯時出現 cc 找不到的訊息:
    -->修改Makefile 裡的cc 為gcc 即可
    • 編譯出現 size 找不到 的訊息:
    -->把/usr/ccs/bin/ 加入$PATH

    Read more...

    FreeBSD中ports的安裝相關指令

    • ports檔案的放置位置:/usr/ports
    • 每個目錄中包含的檔案:
      •  Makefile :安裝軟體的編譯設定,編譯、安裝軟體時的參數可以在這邊修改。
      • distinfo :安裝說明檔,說明安裝時所需要的檔案以及MD5的檢查資料。
      • files:是個目錄,裡面放著程式的原始碼。
      • pkg-descr :軟體的詳細描述。
      • pkg-plist :軟體安裝的清單,以及安裝之後的檔案放置位置。
    •  尋找想要安裝軟體的目錄:
      • # cd /usr/ports
      • # make search key='關鍵字'
    •  安裝指令:
      • # make install :進行編譯、安裝動作
      • # make clean :清除編譯過城中產生的檔案
      • # make deinstall :移除已經安裝的軟體(重要:執行這個指令,一定要在該軟體的目錄中執行喔!如果在/usr/ports中執行這個指令,則會將所有安裝的軟體統統移除喔!)
      • # make reinstall :重新安裝之前安裝過程中斷的程式。
      • # make cinfigure :重新進行組態,但不繼續編譯。
      • # make all install :抓回原始檔案、編譯、安裝。
      • # make fetch :抓回所需要的原始檔。
      • # make fetch-list :顯示安裝所需要的檔案。
      • # make checksum :抓回原始檔案並且使用md5檢查正確性。
      • # male extract:抓回原始檔,並且將他解開。
      • # make package :將做好的porst打包製作成packages。
    •  更新ports tree 的方法:

    Read more...

    判斷NFS是否連線的sh

    >> 2011年11月8日 星期二

    NFS用在資料的備份是相當的方便,但是隱藏著一個危機:
    當server端沒有開啟或是無法順利掛載時,
    若是將NFS掛載寫在/etc/fstab中,則會造成無法順利開機。
    若是將NFS掛載寫在備份執行的shell中,
    則會讓備份檔案備份在本機,(NFS需要掛載在本機的一個目錄中)
    這樣的結果,輕則造成硬碟空間被佔據,嚴重的話,則會因為分割區爆滿而整台server掛點。
    避免這樣的問題其實很簡單,加個幾行的判斷式,就可以避免這樣的危機。
    這個判斷式的原理很簡單,我用df加上管線指令去判斷目前的磁碟中是否存在指定的主機所掛載的磁碟。如果有,就繼續進行其他的動作,如果沒有,則終止整個sh,並傳出一個錯誤代碼1。
    我把這一段判斷式寫成一個sh檔案,判斷完成後的剩餘工作,就由使用者自行去填寫囉!
    因應linux與FreeBSD所使用的shell不一樣,在一開使的使用shell宣告上有些許不同,因此我針對不同的OS,寫了不同的sh,其實,差異只在於一開始的宣告而已。

    test NFS link:

    #!/bin/bash
    # Program:
    #       This program for test is nfs link?
    # History:
    # 2011/11/06    Yixin Chen(cat)      0.1 release
    # 2011/11/07    Yixin Chen(cat)      0.1.1 release
    # 2011/11/08    Yixin Chen(cat)      0.1.2 release
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    # setting var
    nfsip="172.17.1.241"
    # -----------------------
    flag=$(df |grep ${nfsip})
    if [ "$flag" == "" ]; then
      echo "NFS is NOT link!"
    exit 1
    fi
    echo "NFS is link!"
    # other active ....
    exit 
     sh檔案for LINUX:下載
     sh檔案for FreeBSD:下載

    其他有關於NFS的掛載資訊,請參閱:
    雄的 FreeBSD 筆記‧NFS (Network File System)
    鳥哥的 Linux 私房菜第十三章、檔案伺服器之一:NFS 伺服器

    Read more...

    FreeBSD舊版本連線NSF的問題解決

    NSF是一個相當方便的磁碟掛載機制,用在資料備份上面尤其方便,
    區域網路內,可以限制clinet的連結,安全性相對也比較高。

    一般來講,clinet需要的套件,freeBSD已經都具備了,只是較舊的版本(我所遇到的為FreeBSD 6.2-RELEASE,網路上看到的,甚至7.0都有這個問題)當使用

     mount -t nfs server.ip.addr:/path1/path2/backup /tmp/backup/ 
    這樣的指令時,會出現下列的錯誤訊息:
    [udp] server.ip.addr:/path1/path2/backup: NFSPROC_NULL: RPC: Timed out
    這樣的問題,看起來是出在於所使用的通訊協定問題,
    感謝同事楊老師的協助,提供一個參數-o,整個指令變成:
    mount -o tcp -t nfs server.ip.addr:/path1/path2/backup /tmp/backup/ 
    這樣,就可以順利掛載囉!


    其他有關於NSF的設定,請參閱:雄的FreeBSD 筆記‧NFS (Network File System)

    Read more...

    飛瑞UPS控制卡:USAH的製造商

    >> 2011年8月17日 星期三

    經過飛瑞UPS的代理商說明才知道,
    原來UPS的控制卡USHA並不是飛瑞自己製造的,
    是由Ingrasys( 鴻佰科技)這家公司製造。
    如果需要最新的clinet控制程式,就要到這邊去下載。
    之前都傻傻的到飛瑞的網站找,很難找到,而且不一定最新,
    如果要給比較不常見的OS版本也要到這邊找,
    例如光碟中的FreeBSD只有支援到5.0,但是目前最新的是8.2,
    要能用的程式,就得要到原公司網站下載。
    ---------------網站資訊----------------------
    Ingrasys網站:http://www.ingrasys.com/
    USHA卡的相關程式下載:http://www.ingrasys.com/?page=PENG_USHA_SmartII&info=download

    Read more...

    cp到底複製了下一層的東西還是這個目錄

    >> 2011年7月3日 星期日

    在linux裡面使用cp這個指令複製檔案相當方便,並且可以使用-p這個參數保留屬性。
    但是在目錄的最後,加了一個/,對於複製的東西就有差了,有的時候會把整個目錄都搬過去,
    可是,有時候我們卻想要只搬目錄下的檔案,這要怎麼隨心所欲呢?以下做個詳細分析。

    # cp -Rp /home/testuser/ /tmp/home
    # cp -Rp /home/testuser/ /tmp/home/
    都是將/home/testuser/這個資料夾裡面的資料放到/tmp/home/這個資料夾裡面,也就是將/home/testuser下一層的東西整個複製過去,不包含/home/testuser這個目錄。

    # cp -Rp /home/testuser /tmp/home/
    # cp -Rp /home/testuser /tmp/home
    都是將/home/testuser/這個資料夾放到/tmp/home/資料夾裡面,這會包含了testuser這個資料夾本身,並且下層結構整個複製過去。

     這樣以後應該比較明確,要複製時要不要包含本身目錄還是下層目錄了。

    Read more...

    好用的ssh Clinet端軟體-xshell

    >> 2011年6月3日 星期五

    過去使用終端機連線,會採用telnet的方式進行,但是他的安全性不夠,
    尤其對MIS而言,會需要連線進到終端機,通常是要進行一些很重要的設定工作,
    使用telnet,連線過程的封包並沒有加密,很容易被竊聽到。這是後關鍵的帳號、密碼就危險了。
    正因如此,後來對於伺服器的終端管理,我都採用ssh的方式進行連線。
    而在Windows clinet使用的ssh連線軟體,最有名的算是Putty,但是就我的使用經驗上,實在不怎麼好用。
    最明顯的不方便在於,常常需要對於終端機裡面的內容進行複製或貼上的動作,可是putty在這方面顯得不那麼方便。
    於是找了一下同時可以以ssh通訊協定連線,又可以方便進行編輯操作的軟體。
    在這邊要記錄下來,目前很滿意的,要算是Xshell這一個了。
    他的功能相當多, 綠色工廠中有一篇對他的介紹,大家可以參考。

    ※Xshell基本資料

    官方網站:http://www.netsarang.com/missing.html
    下載點:[1]、[2]、[3]
    授權方式:家用與學校使用免費

    Read more...

    FreeBSD使用APC ups實現一台連線通知全部關機

    >> 2011年6月2日 星期四

    機房中的伺服器需要使用ups來做到電源防護機制,而機房裡的server多使用FreeBSD系統,
    市面上on-line ups對於clinet的支援程式以Windows最為普及,其次為linux,對於FreeBSD則不見得能夠支援。
    雖然可以使用NUT (Network UPS Tools) 的方式來達到溝通,但是不同廠牌的支援度不一,不見得可以完全支援。(NUT設定可參考雄的FreeBSD筆記)
    因此,選擇一台對的UPS相形重要。
    之前曾經使用過飛瑞的USHA網卡對linux通知,效果不錯。但是雖然程式中附有FreeBSD的clinet安裝軟體,但是版本只有支援到FreeBSD 5,對於新版的 6、7、8接無法使用,會出現找不到 libc.so.5 的問題。網路上有針對飛瑞ups 的com port的設定進行說明(Ref.1,2),但是使用snmp協定的並沒有。(但是可以透過NUT中的ACL設定,做到主、被空端的通知。)
    對於FreeBSD的支援最好的,要算是APC了。因為在FreeBSD的ports中就有apcupsd,直接make install之後就可以使用,非常方便。
    以下就針對無網卡的APC ups採用com port連線方式進行主、被控端連線的apcupsd安裝說明。
    環境預設,有兩台主機,主機A為主控端,APC ups的黑色RS232線連接在這一台,主機B為被控端,一樣使用APC ups電源。

    Read more...

    linux、BSD中常用指令

    >> 2011年5月19日 星期四

    自己健忘,常常需要用到一些指令的時候,都還要去查,就寫在這邊,方便自己使用。
    ----------------------------------------------
    tar

    打包+壓縮檔案

    使用gzip壓縮  tar -zpcv -f filename.tar.gz /dirname

    使用bzip2壓縮(有比較好得壓縮比) tar -jpcv -f filename.tar.bz2 /dirname

    解壓縮
    在目前所在的目錄中解開壓縮
    tar -zxv -f filename.tar.gz
    tar -jxv -f filename.tar.bz2
    在指定的目錄中解開壓縮

    tar -zxv -f filename.tar.gz -C /dirname
    tar -jxv -f filename.tar.bz2 -C /dirname

    參數說明:
    -c 建立壓縮檔案
    -x 解開壓縮檔案
    -z 透過gzip壓縮或解壓縮
    -j 透過bzip2壓縮或解壓縮
    -v 壓縮或解壓縮的過程顯示檔案名稱
    -f 指定的檔案名稱
    -p(小寫) 保留資料原本屬性
    -P(大寫) 保留絕對路徑
    如果要將絕對路徑備份下來,請加上參數P(大寫p)


    -------------------------------------------------------
    cp
    複製檔案
    cp -a /source/file /toget/file
    cp -a /source/folder/ .


    參數說明:
    -a 相當於dpr
    -p 保留檔案權限與屬性
    -d 若為連解檔案,則複製連結檔案屬性
    -r 目錄的遞迴複製
    -l 硬式連解檔案的建立
    -s 符號連結檔案(捷徑)的建立
    在freebsd中,舊一點的版本無法使用-a參數
    freebsd中,-a相當於-RpP選項
    -R相當於上面的-r
    -P(大寫)相當於上面的-d


    -------------------------------------------------------
    以後陸續增加

    Read more...

    在FreeBSD中修改ip

    >> 2011年2月18日 星期五

    因為有需求,所以爬文學習。因為走過了,所以留下足跡。

    -----------------------------------------------------------------------------------------

    1. 修改:/etc/rc.conf
    2. 在ifconfig_lnc0="inet xxx.xxx.xxx.xxx netmask 255.255.255.0"
    3. defaultrouter="xxx.xxx.xxx.xxx (gateway ip address)"
    4. 之後重新啟動網路卡:/etc/init.d/networking restart   /etc/rc.d/netif restart
    5. 或者可以使用ifconfig rl0 down                        ifconfig rl0 up 

    Read more...

    freeBSD下不正常關機後的處理

    >> 2011年2月14日 星期一

    FreeBSD下,如果遇到突然斷電,又沒有UPS系統,不正常關機後,重新開機就會遇到目錄無法掛載的問題,處理的方式如下:

    1. 開機之後進入單人模式。
    2.   # mount -a   將所有的磁碟掛載進來。
    3.   # df   查看目前掛載的磁碟名稱與掛目錄。記下掛目錄。
    4.  記得,先解除目錄掛載(以 /home 目錄為例)。  # umount /home
    5.    # fsck -y /home 或者   fsck -y /dev/da1s1d 都可以
    6. 最後記得把目錄掛回來:# mount /home
    7. 如果連fsck指令都沒辦法用,記得先fsck根目錄。
    有關於fsck指令的說明:
    fsck的語法如下:
           fsck (-F fstype) (-v) (-m) (-special.)
           fsck (-F fstype) (-v) (-y|Y|n|N) (-o fstype options) (special.)
    其中:
          -F fstype : 說明被檢查的文件系統的類型
          -v : 返回完成的命令行,但不運行
          -y|Y: 對所有問題均回答Yes
          -n|N: 對所有問題均回答No
          -m: 對文件系統進行檢查,不修覆文件系統,
    如果文件系統經檢查後是可安裝的,則顯示
          ufs fsck : sanity check : /dev/rdsk/c0t0d0s0 okay.
          -o: 文件系統類型選項,選項由逗號分隔,
    最常用的選項有兩個:
          P: 整理(preen)模式
          F: 強制檢查模式,此選項忽略文件系統狀態標誌。
                1) 移去一個沒有相關文件的目錄入口 答Yes或Y來刪除該目錄入口
                2) 重連接一個已分配但不能訪問的文件對fsck的」RECONNECT?」回答Yes,即把該I節點連接到lost+found目錄下,文件名即是I節點號
                3) 連接數調整 回答Yes或Y來改正連接數
                4) 自由塊表不一致 回答Yes或Y來修正超級塊
    對於fsck詢問的問題大多數情況下都可以用Yes來回答,所以在實際應用時,可以用」 -y」選項來執行該命令對硬碟進行檢查和修復。

    Read more...

    About This Blog

    程式碼標示

      © Free Blogger Templates Joy by Ourblogtemplates.com 2008

    Back to TOP