先前在CentOS 6測試環境中用tarball編譯安裝安裝PHP時出現以下的錯誤訊息:
/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [libphp5.la] Error 1
補行安裝libtool-ltdl-devel即可:
yum install libtool-ltdl-devel
先前在CentOS 6測試環境中用tarball編譯安裝安裝PHP時出現以下的錯誤訊息:
/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [libphp5.la] Error 1
補行安裝libtool-ltdl-devel即可:
yum install libtool-ltdl-devel
可利用/dev/null把檔案文件清空
cat /dev/null > filename
因為之前安裝CentOS 6時是用最小化安裝,
所以少了這個套件,
再補安裝並啟動就可以了。
yum install crontabs
service crond start
以yum安裝crontabs時會一併安裝sendmail,
因為用不到它所就乾脆停用別讓它開機時執行:
chkconfig sendmail off
不知從哪一個版本開始表情符號有幾個顯示不出來,
後來發現是檔名的問題,
像困惑的表情符號其圖片檔名為icon_e_confused.gif ,
但phpBB3裡的連結是用icon_confused.gif ,
所以把這些GIF檔名中間有 _e_ 的改掉就可以了。
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的後台不能使用,
只看到一片空白,
查了一下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 *
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 才會生效。
在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即可。
測試環境: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]
phpBB轉移至新環境後出現下面的錯誤訊息:
[cc]Fail sending email :: PHP ::
DEBUG MODE
Line : 238
File : emailer.php
[/cc]
原因是因為新機的CentOS是以最小方式安裝,
缺少sendmail,
再補安即可。
[cc_bash theme=”blackboard” width=”600″]yum install sendmail[/cc]