跳到主要內容

發表文章

目前顯示的是有「CEntOS」標籤的文章

CEntOS 上 PHP 5.3 的時區設定問題

最近將原本 Fedora 12 的主機更換成 CEntOS 6.3 版,在這個版本中的 PHP 預設為 5.3.3 版。放上先前撰寫的程式,當有使用到 Date 函數時會出現下面的警告訊息: "PHP Notice: It is not safe to rely on the system's timezone settings, You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier" PHP 5.3 現在需要我們在 php.ini 中設定 timezone 的資訊,或是在使用 date() 函數前先做  date_default_timezone_set() 的設定。 因為是自己的主機,因此我趨向更改 php.ini 設定即可。打開 /etc/php.ini 設定,大約在 943 行的地方有 timezone 的設定項目內容如下: [Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone ; date.timezone = 因為我主機的時區位置是 Taipei 時間,取消 date.timezone 前面的註解符號,並在等號後方加入 "Asia/Taipei"(PHP 的時區可以參考官方 List of Supported Timezones )修改後項目內容如下: [Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual/en/datetime.co...

好用的工具 Tmux

介紹 Tmux 是一套最近接觸到於 tty 下的多程式視窗工具,類似很多老手在使用 Linux or BSD 就有使用 GUN Screen 這一個程式。使用 tmux 和 screen 最大好處在於遠端管理的時候,如果需要執行相當耗時的程式,可以讓我們在離開(或許這裡稱「斷開」比較合適)的時候還可以繼續的執行,下次回來的時候再「取回」之前的內容即可。 Tmux 和 Screen 不同的地方,主要在於: 視窗分割 在一個視窗中縱向或是橫向分割許多視窗 視窗切換 在 Session 中相互切換 多人共用視窗 可以被多個 ssh 連線共用一個  tmux session Screen 和 Tmux 的架構圖,可以參考下面兩張圖(圖片來源: 這樣做就對了 ) Screen 架構: Screen 一次只能有一個連線,切換視窗必須先 detach。 Tmux架構: Tmux 有 Session、Window、Pane 的概念,而且隨時可以作彈性切換,將 Pane 獨立成新的 Window。 安裝 目前在常見的 Linux distributions 中都可以利用套件庫安裝,如果沒有也可以下載 Tarball 來安裝: 自行下載 Tarball 安裝,下載位置 Tmux (目前最新為1.6版) uBuntu 安裝 # sudo apt-get install tmux CentOS 安裝 # yum install tmux $PS1顯示問題 安裝完 Tmux 在 tty 中輸入 tmux 可以啟動進入,如果有在 .bashrc 中設定 $PS1 的顯示方式,uBuntu 中(測試為 uBuntu 12.04)會發現失去設定的效果,而在 CEntOS 6.2 中顯示為正常。要如何修正讓在 Tmux 環境中仍然可以正常顯示? 開啟 .bashrc 檔案,找尋 「case "$TERM" in」部份,加入 screen 項目(如下紅字部份)再重新進入tmux 環境即套用設定。( 參考資訊 ) case "$TERM" in xterm*|rxvt*| screen* )     PS1="\[\e]0;${...

在 Linux 中解決 umount 時 Divice is busy 的問題

現在 Linux 環境中掛載外接的設備越來越方便,支援度也越來越高,很多設備接上後直接自動 mount 上來,不需要在系統中慢慢找尋和掛載。接上設備很方便但往往在移除卸載時,有可能發生 Divice is busy 的狀況,可能有程式或是使用者正在使用,我們會擔心如果沒有正確移除設備,可能會造成資料的遺失資料的遺失或是資料可能會不完整。 要如何解決這樣的問題,讓我們可以卸載設備? 在安裝 Linux 時,就有支援 fuser 這個指令,這是用檔案或是檔案系統來找出使用者或程序的指令,詳細的使用參數可以在系統中 man 一下或是參考 鳥哥網站的說明 。 # fuser -m -v /mnt/mymount (mount point) -m: 顯示所有使用檔案或檔案系統的程序,後面可以接掛載點或設備。 -v: 列出詳細資訊 顯示的內容除了程序名稱,還會有 process id,有了 PID 就可以用其他指令來 kill 佔用的程序。 如果要查詢時一併馬上刪除佔用的程式,可以直接在加上 -k 這個參數。 # fuser -m -v -k /mnt/mymount (mount point) 如果擔心這樣刪除太狠了,可以再加上 -i 這個參數,在刪除前先跟下指令的使用者確認一下。 # fuser -m -v -k -i /mnt/mymount (mount point) (-i 需要和 -k 相互配合使用) 先處理佔用卸載資源的程序後,我們就可以安全的卸載和移除硬體了。

CEntOS RTNETLINK 錯誤修正

新的伺服器安裝了 CEntOS 6.2 系統,雖然 Redhat 6 開始多了許多的 GUI 工具,無法常常進入機房的情況下,還是習慣使用文字的方式來管理。 安裝的時候幾乎都使用了預設的套件選項,網路部分則會包含在這個版本新增的 NetworkManager 工具。完成安裝,第一次開機後在 GUI 環境下設定一切都相當順利的上線,而近來直接在 terminal 下直接修改 ifcfg-ethx(x為數字) 這個檔案後重新開機,網路部分會變成無法上線!即使刪除 ifcfg-ethx 再重新開啟 GUI 介面設定網路,仍然無法成功讓網路上線。 若將 network 重新啟動,則會出現如下的錯誤訊息: ... 略 ... RTNETLINK answers: File exists RTNETLINK answers: File exists RTNETLINK answers: File exists ... 略 ... 原來,這是 CEntOS 下兩個和網路相關的服務相互衝突造成的,一個是 /etc/init.d/network,另一個是 /etc/init.d/NetworkManager。網路上可以查到的解決方法為關閉 NetworkManager,可以用下面的指令來查詢開啟的網路管理服務。 # chkconfig --list | grep -i network 關閉開機啟動的方法為 # chkconfig NetworkManager off 要特別注意 network 服務有沒有預設啟動,沒有的話記得加上 # chkconfig network on 在關閉 NetworkManager 並重新啟動 network 時,仍然出現相同的錯誤訊息?!摸索一陣子後才發現,原來 ifcfg-ethx 裡的設定有一行也需要修改才行。 DEVICE="eth0" NM_CONTROLLED=" yes " -->" no "  <=== 是否由其他軟體管理,可能只的是 NetworkManager ONBOOT=" yes "  <=== 開機預設啟動 ... 略 ... 修改後再重新啟動 network 就可以上線正常運作了。

CEntOS 6 安裝 PHP Mcrypt 問題

利用新年假期,有個連續的時間可以幫新購的 Server 完成相關的設定,依照往常的安裝了 phpmyadmin 作為 MySQL 的 Web 管理介面。不同於往常的是這次 phpmyadmin 的登入認證改用 cookie 而不是用 http 的方式。這樣就不需要將帳密記錄在 config.inc.php 中。 而且使用 cookie 方式會有一個比較美化的登入介面,但是會需要 Mcrypt 這個函式庫。 Mcrypt 是一個強大的加密演算法函式庫, php 官方文件 中有相關說明,然而在 php 原本套件中不包含這個函式庫,CEntOS 6 的套件庫中也未包含 php-mcrypt 模組,無法使用 yum 安裝該函式庫,所以需要透過 Extra Packages for Enterprise Linux (EPEL) 套件庫來解決這個問題。 首先先安裝系統相對應的 package,我的是 EL 6 所以安裝 epel-release-6-5.noarch.rpm # rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm 更新套件庫 # yum update 檢查套件庫的清單中是不是包含了 epel 套件庫 # yum repolist ... 略 ... epel                    Extra Packages for Enterprise Linux 6 - x86_64 使用 yum 安裝 php-mcrypt # yum install php-mcrypt 重新啟動 Apache 讀取安裝的套件 # service httpd restart 大功告成嘍!重新回到 phpmyadmin 的登入畫面就不會在出現警告訊息了。