在 Fedora 或 Amazon Linux AMI 架設 Nginx + PHP FastCGI

799px-Amazon.com-Logo.svg
上一篇介紹如何在 Ubuntu 底下安裝 Nginx + PHP FastCGI,這次來紀錄如何安裝在 Fedora 系統,目前環境是使用 Amazon Linux AMI,如果有在玩 AWS EC2 或是 Fedora Linux 的話,對這 OS 就不會很陌生了。 Continue reading “在 Fedora 或 Amazon Linux AMI 架設 Nginx + PHP FastCGI”

在 CentOS 上面安裝 Ruby 環境

centos
目前開發網站都傾向於用 Compass 這套 CSS Framework 來 develop,開發之前必須把環境先弄好,就是要有 Ruby 套件才可以安裝 Compass,網路上的教學幾乎都在是 Ubuntu 底下用 apt-get 方式來安裝,其實相當方便,但是 FedoraCentOS 就是要用 yum 方式來安裝,這次碰到 CentOS 竟然 yum search git 出來的結果是空的,所以決定全部都透過 tar 的方式來安裝全部套件了。由於 Fedora 幾乎都可以找到套件,但是碰到 rubygems 需要用到 ruby 1.8.7 以上版本,所以還是乖乖的用 tar 方式吧。 大家可以試試看透過底下 yum 方式安裝:
yum install -y ruby ruby-devel rubygems
雖然 Fedora 透過上面可以安裝成功,可是 ruby 跟 rubygems 的版本根本是…太舊了吧 … Continue reading “在 CentOS 上面安裝 Ruby 環境”

AWS 機器上 duplicated RPM 問題

AWS-logo
昨天幫忙升級全部 AWS RPM 套件,升級過程本來很順利,不過不知道哪一個 RPM 造成 SSH 全面斷線,接著我直接到 AWS Management Console 把機器 restart,登入系統之後下 yum update,直接給我噴出底下錯誤訊息
---> Package zlib.i686 0:1.2.3-24.7.amzn1 will be updated
---> Package zlib.i686 0:1.2.3-25.8.amzn1 will be an update
--> Finished Dependency Resolution
 You could try using --skip-broken to work around the problem
** Found 155 pre-existing rpmdb problem(s), 'yum check' output follows:
audit-libs-2.1-5.15.amzn1.x86_64 is a duplicate with audit-libs-2.0.4-1.14.amzn1.x86_64
authconfig-6.1.12-5.14.amzn1.x86_64 is a duplicate with authconfig-6.1.4-6.13.amzn1.x86_64
basesystem-10.0-4.9.amzn1.noarch is a duplicate with basesystem-10.0-4.8.amzn1.noarch
bash-4.1.2-8.14.amzn1.x86_64 is a duplicate with bash-4.1.2-3.13.amzn1.x86_64
binutils-2.20.51.0.2-5.20.17.amzn1.x86_64 is a duplicate with binutils-2.20.51.0.2-5.12.15.amzn1.x86_64
cloud-init-0.5.15-16.amzn1.noarch is a duplicate with cloud-init-0.5.15-8.amzn1.noarch
coreutils-8.4-13.13.amzn1.x86_64 is a duplicate with coreutils-8.4-9.12.amzn1.x86_64
coreutils-libs-8.4-13.13.amzn1.x86_64 is a duplicate with coreutils-libs-8.4-9.12.amzn1.x86_64
cpp-4.4.5-6.35.amzn1.x86_64 is a duplicate with cpp-4.4.4-13.33.amzn1.x86_64
Continue reading “AWS 機器上 duplicated RPM 問題”

How to change run levels and init.d scripts in Ubuntu & Debian

Ubuntu 6.10 (Edgy Eft) 之後使用 Upstart 代替原來的 sysinit,而 init 是用來管理 Upstart 的 Daemon,本來系統預設的 runlevel 可以在 /boot/menu.list 或者是 /etc/inittab,可是現在這檔案已經移除了,取而代之的就是 Upstart 管理,可以利用 telinit 來改變系統 runlevel,然而現在 runlevel 的定義跟以前不太一樣了,原先 Ubuntu 跟 Fedora 系列 runlevel 代表意義如下:
0:系統關機 (to halt the system) 1:單一使用者模式 (single-user mode) 2:尚未使用(可由使用者定義) 3:多使用者模式 (文字介面登入) 4:尚未使用 (可由使用者定義) 5:多使用者模式 (含有一個X介面的登入畫面) 6:重新開機 (reboot the system)
轉換成 Upstart 的話,就會變成底下
0:系統關機 (to halt the system) 1:單一使用者模式 (single-user mode) 2:多使用者模式 (含有一個X介面的登入畫面) 3:多使用者模式 (含有一個X介面的登入畫面) 4:多使用者模式 (含有一個X介面的登入畫面) 5:多使用者模式 (含有一個X介面的登入畫面) 6:重新開機(reboot the system)
上面資訊可以在 man telinit 裡面找到,寫得很詳細,現在 Ubuntu 9.10 系統,預設啟用是在 runlevel 2,只要執行 runlevle 指令,就可以查出先前跟目前所設定的 runlevel 值,這些數值是存放在 /var/run/utmp,這是一個 UTMP File,你會發現,現在只要安裝好 Ubuntu Desktop 系統,就會自動啟動,所以常常會看到 Linux 使用者會來詢問如何關閉 gdm 桌面程式,其實有很多手動的方式,init 也管理了開機所需執行的程式,如果是跑 runlevel 2,就會去執行 /etc/rc2.d/* 底下所有的 script 檔案,所以大家可以發現會有 /etc/rcX.d/ (X:0,1,2,3,4,5,6,S),其中的 S 代表 single user mode,我們用 rc2.d 底下的檔案來說明: /ect/rcX.d/ all script (by appleboy46) 大家可以看到,每個檔案命名方式:[S|K]\d{2}script_name,S 代表開機會啟動,K 代表開機不啟動,後面接兩位數字,代表開機優先權順序,這些檔案都是利用 Soft link 方式連接到 /etc/init.d/ 底下,所以修改 /etc/init.d/ 資料夾檔案內容,就可以自動更新 /etc/rc[0-6].d/ 檔案,相當方便吧,那該如何產生對應檔案到 /etc/rc[0-6].d/ 資料夾底下,可以利用 update-rc.d 這指令,update-rc.d 是用來產生或移除 init script links,可以參考 Debian Policy Manual

如何使用 update-rc.d 管理 init script links

利用系統預設值來新增 script links,預設值啟動 runlevels 2-5 跟停止於 runlevels 0, 1 and 6
update-rc.d script_name defaults
或者是可以自行設定執行優先順序跟自訂啟動 runlevel (ps. 請注意後面都有 . 符號)
update-rc.d script_name start 20 2 3 4 5 . stop 20 0 1 6 .
移除這些 script links (-f 參數代表強制移除)
update-rc.d -f script_name remove
2010-01-28 11 52 06 (by appleboy46) 可以看到在 runlevel 0126 是不啟動,345 是啟動 gdm 狀態,在 Ubuntu 9.10 底下,如果不想要開機就執行桌面程式,那就是必須要把 gdm 關閉,可以用下面兩種 command line 關閉
/etc/init.d/gdm stop
service gdm stop
但是這兩種方式只會在開機後手動執行,大家需要的是開機不會啟動,當然可以寫到 /etc/rc.local,因為在 rcX.d 底下會有 S99rc.local 執行,底下分享一下如何修改開機 runlevel,預設值是 2,但是之前都是另用 /etc//inittab 方式來修改,那其實現在這檔案消失了,您也可以自行新增喔,請先看 /etc/init/rc-sysinit.conf
# Default runlevel, this may be overriden on the kernel command-line
# or by faking an old /etc/inittab entry
env DEFAULT_RUNLEVEL=2
在這裡就可以修改系統 runlevel,註解也有說明,可以新增 /etc/inittab 來讓系統讀取其內容
id:2:initdefault: 
最後也是會讀取 /etc/inittab
# Check for default runlevel in /etc/inittab
if [ -r /etc/inittab ]
then
    eval "$(sed -nre 's/^[^#][^:]*:([0-6sS]):initdefault:.*/DEFAULT_RUNLEVEL="\1";/p' /etc/inittab || true)"
fi
所以最後還是會依照 /etc/inittab 寫入的資訊來判斷系統 runlevel,最後才會去執行 rcX.d 所有 script 檔案。不想執行桌面程式,會在網路上找到利用
update-rc.d gdm stop 20 0 1 2 3 4 5 6 .
這樣正常來說不會去啟動 gdm 才對,可是實驗結果,還是會繼續啟動,後來找到 /etc/init/gdm.conf 底下這段程式碼:
start on (filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [016]
把 stop on runlevel [016] 改成 stop on runlevel [0123456] 這樣就可以了 參考網站: Choosing different run level in Ubuntu upstart 和ubuntu启动过程原理介绍 [Linux]ubuntu下修改服務的執行等級 [ubuntu] Need to disable gdm

[Ubuntu&Fedora] 開機 網路卡 MAC 變動亂跳 [解決方法]

最近在幫 lab 同學處理他安裝好的 ubuntu linux,結果發現一個問題,就是只要重新開機,網路卡的 mac 就會改變,還真是奇怪,後來在 google 找到一篇文章:Ubuntu的MAC一直亂跳嗎? 或者是ubuntu官方論壇:解決方法,才終於解決這個問題。 在主機板 GA-M56S-S3 這個系列板子都會有這種問題,至少我測試過兩張主機板都會這樣,所以看了那些解決方法,可以解決 ubuntu 的問題,但是不能解決 fedora core 的問題,我解決 fedora 的方法,其實很簡單,只要你會利用文字介面設定網路,就可以了 fedora 解法:前提是你不會讓機器開機亂跳動 ethx,所以你要按照上面的解法,解決前半部份 先在 root 底下新增一個檔案 ifcfg-eth0,然後寫入
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0
BOOTPROTO=none
BROADCAST=140.123.107.255
HWADDR=00:15:F2:A7:37:42
IPADDR=140.123.107.*
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=140.123.107.0
ONBOOT=yes
GATEWAY=140.123.107.249
TYPE=Ethernet
Continue reading “[Ubuntu&Fedora] 開機 網路卡 MAC 變動亂跳 [解決方法]”