利用CentOS 6.2 建構LAMP環境

CentOS 6也推出一陣子了,
為了日後可能也將loki.ind主機升級為第六版先實作一下LAMP環境,

1. 安裝CentOS 6.2
由於是純伺服器的環境,因此我只下載
CentOS-6.2-x86_64-minimal.iso
最小安裝的光碟ISO,
由於只包含最基本的套件安裝,
安裝過程中除了硬碟分割、網卡與時區設定外,
幾乎是點下一步就可以了。

2. 環境設定
一開始安裝CentOS 6.2沒先設定網卡是不會啟動它的,
如果安裝時沒設定要就編輯 /etc/sysconfig/network-script/ifcfg-eth0
例如內容是:

DEVICE="eth0"
HWADDR="00:0C:29:B4:C2:2A"
NM_CONTROLLED="yes"
ONBOOT="no"

就改為(BOOTPROTO依取得IP的方式修改):

DEVICE="eth0"
HWADDR="00:0C:29:B4:C2:2A"
NM_CONTROLLED="yes"
BOOTPROTO="dhcp"
ONBOOT="yes"

再重新啟動網卡:
service network restart

由於CentOS 6.2預設的防火牆規則把SSH以外的協定都檔掉,
如果不熟iptables的設定可以安裝system-config-firewall-tui這個工具:
yum install system-config-firewall-tui
接著就直接輸入system-config-firewall-tui去使用這個工具,
選擇Customize將WWW (HTTP)開放即可,
退出system-config-firewall-tui後它會馬上幫你套用新設定至iptables,
很方便的設定工具。

3. 安裝Apache + PHP + MySQL
這次我不用下載tarball自行編譯安裝的方式,
由於CentOS 6裡的套件都比較新,
改用方便的yum來安裝:
yum install httpd php php-devel php-gd mysql mysql-server
一樣視需求增加要安裝的套件。

接下來啟動服務前設定好my.cnf內容,
可以直接到/usr/share/mysql下找到設定範例檔直接利用,
例如我選擇my-large.cnf將替換新建立的my.cnf (視主機記憶體大小去選擇,設定檔內容開頭也會寫)
cp /usr/share/my-large.cnf /etc/my.cnf

最後啟動mysqld和httpd即可:
service mysqld start
service httpd start
若需要開機時一併啟動服務則只要設定chkconfig將兩項服務on起來:
chkconfig mysqld on
chkconfig httpd on
就這麼簡單!

海大光畫社-新聞Blog 後台功能異常修正

今天接到學弟的通知說Blog的後台不能使用,
只看到一片空白,
查了一下Apache的log看到:

[Wed Sep 21 21:59:13 2011] [error] [client 115.43.122.215] PHP Fatal error:  Smarty error: unable to write to $compile_dir '/maskmask/blog/tmp/1'. Be sure $compile_dir is writable by the web server user. in /maskmask/blog/class/template/smarty/Smarty.class.php on line 1095, referer: http://loki.ind.ntou.edu.tw/~mac/blog/admin.php

實際進去該目錄去看原來是權限有問題,
之前Apache是用daemon這使用者和群組名稱來讀寫,
但最近升級重新安裝Aapche後我是讓它改用apache,
結果tmp目錄下的東西都不能讀寫了,
修正該目錄底下檔案的權限後即正常。
cd tmp/
chown -R apache:apache *

單張網卡綁多個IP的設定方法

1. Linux
利用ifconfig指令將原本的eth0掛上兩個不同的ip:
ifconfig eth0:0 192.168.1.3 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.1.3 netmask 255.255.255.0 up

再到/etc/sysconfig/network-script 加入對應的設定,
以上述為例子可以將eth0的設定檔複製再更名:
cp ifcfg-eth0 ifcfg-eth0:0
再編輯ifcfg-eth0:0將以下內容:
DEVICE=eth0
改為
DEVICE=eth0:0

2. FreeBSD
編輯/etc/rc.conf直接加入設定,
例如該檔對em0這張網卡的設定述敘為:
ifconfig_em0=”inet 172.16.1.5 netmask 255.255.255.0″
再加入一行alias0(視需求可以再加alias1、alias2等等):
ifconfig_em0_alias0=”inet 172.16.1.6 netmask 255.255.255.0″

最後再下 /etc/netstart 這個指令便可生效,
若之後要移除alias0時有時可能要執行兩次 /etc/netstart 才會生效。

[MySQL] 設定檔範例檔位置 in CentOS

在CentOS以yum安裝MySQL後,
設定檔範例會放在:
1. CentOS 5.x: /usr/share/mysql
2. CentOS 4.x: /usr/share/doc/mysql-server-4.1.27 (最後一層目錄名稱依MySQL版本會有所不同)
會有根據主機記憶體大小不同有各個合適的範本可以使用:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf

像我自己主機的記憶體是2GB,
可以使用my-huge.cnf這個範本,
將它複製到/etc下再更名為my.cnf後重新啟動MySQL即可。

[Apache] log檔分割工具-cronolog

測試環境:CentOS 5.6

CentOS 5.6無法利用yum來安裝cronolog,
要先到官網下載tarball下來編譯,
如果沒有編譯的工具須先行安裝。
[cc theme=”blackboard” width=”600″]yum install gcc make[/cc]
以下用cronolog-1.6.2.tar.gz為例子:
[cc_bash theme=”blackboard” width=”600″]tar zxf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install[/cc_bash]

然後可以在httpd.conf的VirtualHost設定部份利用cronolog來分割log檔,例如:
[cc]CustomLog “|/usr/local/sbin/cronolog /home/test/public_html/logs/testlog.%Y%m%d.log” combined
ErrorLog “|/usr/local/sbin/cronolog /home/test/public_html/logs/test_errorlog.%Y%m%d.log”
[/cc]

[CentOS] 安裝圖形介面

測試環境 CentOS 5.6

1. 安裝X Window
yum groupinstall ‘X Window System’ -y

2. 安裝Gnome Desktop
yum gropuinstall ‘GNOME Desktop Environment’ -y

3. 編輯 /etc/inittab 將以下內容:

id:3:initdefault:

改為:

id:5:initdefualt:

4. 安裝並設置中文環境
yum groupinstall ‘chinese support’ -y
編輯/etc/sysconfig/i18n將以下內容:

LANG="en_US.UTF-8"

改為:

LANG="zh_TW.UTF-8"

5. 重新開機
reboot