本文參考了網上高手的教程和結合自己的實踐經驗而來。網上關于LAMP安裝配置的教程雖然很多,但長篇大論的讓你抓不到重點,短小精悍的對新手來說又難了點,所以初次配置時最容易在某個環節卡住,從而打擊了學習的激情或者耽誤了寶貴的時間。于是就整理出這個學習筆記。如果文中有錯誤的地方,懇請大家指正,不要誤導了初學者。
一、系統約定
1、系統環境
Linux:CentOS-4.4.ServerCD
Apache:2.2.4
MySQL:4.0.26
PHP:4.3.11
ZendOptimizer:3.2.2
phpMyAdmin:2.10.0.2
2、源碼包存放位置:/usr/local/src
#為什么一定要在/usr/local/src/下進行Tarball呢?這僅是約定俗成的,因為如此一來,大家都安裝在這個地方,以后主機的維護與移交都很簡單,并且對于將來在主機上面進行“升級”與”版本識別“都有很好的幫助。
二、系統環境部署及調優
1、基本安全設置
對于一個在Internet上提供服務的主機,安全性很重要,這方面的工作包含主機的包漏洞修補、關閉并不是必須的守護進程(端口)、防火墻配置以及每日的日志分析等。在裝完系統后,建議按照以下步驟來進行安全設置:
1)關閉并不是必須的守護進程(端口)
CentOS4.4系統安裝完成后,一些可能并不是必須的守護進程會啟用。禁用非必要的進程會減少系統的內存開銷,同時也可以減少系統的安全隱患,可以釋放更多的內存空間、減少系統的啟動時間、減少CPU處理的進程數量。
默認情況下,很多守護進程可以安全的在系統下停止和禁用。下表列出了CentOS4.4安裝(安裝時軟件包只選擇開發工具一項)的一些守護進程,如果不是必須的你可以考慮禁用這些進程。進程描述
acpid提供高級電源管理。建議保留
anacron一個自動化運行任務守護進程。RedHatLinux隨帶四個自動化任務的工具cron、anacron、at、和batc。當你的Linux服務器并不是全天運行,這個anacron就可以幫你執行在"crontab"設定的時間內沒有執行的工作。
apmdapmd(AdvancedPowerManagement)是高級電源管理。傳統的電源管理標準,對于筆記本電腦比較有用,可以了解系統的電池電量信息。并將相關信息通過syslogd寫入日志。也可以用來在電源不足時關機。
atd計劃任務(執行一次)守護進程。建議保留
autos自動mount文件系統進程(例如自動mount光驅),在服務器系統上文件系統很少使用自動mount功能。關閉
cpuspeed動態調整CPU頻率的進程,在服務器系統中這個進程建議關閉。
crond計劃任務(循環執行)守護進程。建議保留
cups通用UNIX打印系統,如果你計劃在服務器上運行打印服務就不要關閉這個進程。
gmp文本終端的鼠標服務,如果你想在本地文本終端支持鼠標就不要禁用這個進程。
haldaemon和Windows的硬件管理類似,掛載U盤等必不可少。建議保留
iptables這個是防火墻守護進程,無論如何,先啟動它。
irqbalance在多個處理器之間平衡中斷,如果你使用一個單CPU系統或者你計劃靜態的平衡中斷可以禁用這個進程。
isdnISDN調制解調器支持,如果你準備在服務器上支持ISDN調制解調器就不要禁用這個進程。
kudzu檢測和配置新硬件,如果硬件配置改變了應該手動運行。
mdmonitorRAID相關設備的守護程序。
messagebus掛載U盤時,要確保haldaemon和messagebus服務啟動,所以這個也建議保留。
microcode_ctl可編碼以及發送新的微代碼到內核以更新IntelIA32系列處理器守護進程。建議保留
netfs用于支持NFS共享,如果你準備在服務器上支持NFS共享就不要禁用這個進程。
network激活/關閉啟動時的各個網絡接口守護進程。
nfslock對nfs啟用文件鎖,如果你準備在服務器上支持NFS共享就不要禁用這個進程。
pcmciaPcmcia支持,在服務器上很少使用pcmcia適配器因此可以安全的禁用這個進程。
portmap為RPC服務動態分配端口(例如NIS和NFS),如果系統沒有支持RPC服務可以禁用這個進程。
rawdevices提供對裸設備綁定的支持,如果你不準備在系統中使用裸設備可以禁用這個進程。
rpcgssd主要用于NFS和Samba的多個遠程調用進程,如果系統沒有基于rpc服務的支持,可以禁用這個進程。
rpcidmapd同上
sendmail郵件傳輸代理,如果服務器需要支持郵件服務就不要禁用這個進程。
smartd使用S.M.A.R.T兼容設備的進程,如果你不是使用IDE/SATA磁盤子系統,可以禁用這個進程。
sshdOpenSSH服務器守護進程,如果你不需要遠程管理主機,可以關閉,不過應該沒有幾個人不需要這個服務吧。
syslog把各類事件寫入日志,是相當重要的服務,務必啟動。
xfsXWindow的字體服務,如果你的運行級別是5請不要禁用這個進程。
xinetd支持多種網絡服務的核心守護進程。務必啟動。
[root@localhost~]#ntsysv
#根據自己的需要,使用ntsysv工具來啟用那些里程。
[root@localhost~]#reboot
#重新啟動使設置生效
[root@localhost~]#netstat-an|more
#......信息略......
#檢查一下當前開啟的端口
#netstat是個很重要的命令,請大家務必掌握,這部份的知識自行在網上查閱。
2)基本防火墻配置
[root@localhost~]#/etc/rc.d/init.d/iptablesstop
#防火墻開啟
[root@localhost~]#/etc/rc.d/init.d/iptablesstart
#防火墻開啟
[root@localhost~]#vi/etc/sysconfig/iptables
#根據自己的情況增加防火墻規則。
[email=root@localhost]root@localhost[/email]~]#iptables-save>filename
#上面的命令用于將當前主機上的防火墻規則保存到filename文件。
root@localhost~]#iptables-restore
#上面的命令用于將filename防火墻規則文件(注意:不是sehllscripts格式)的規則讀入當前Linux主機環境中。
3)locate命令用數據庫更新及自動更新設定
[root@localhost~]#vi/etc/updatedb.conf
#將“DAILY_UPDATE=no”修改為“DAILY_UPDATE=yes”后保存、退出。
[root@localhost~]#updatedb
#運行locate數據庫更新命令,稍等片刻…更新成功后出現提示符
4)修改yum倉庫的鏡象地址,以提高下載速度
[root@localhost~]#cd/etc/yum.repos.d/
[[email protected]]#mvCentOS-Base.repoCentOS-Base.repo.bak
[[email protected]]#wgethttp://mirror.be10.com/centos/4.4/CentOS-Base.repo
5)停止打印服務
[root@localhost~]#/etc/rc.d/init.d/cupsstop ←停止打印服務
Stoppingcups: [OK] ←停止服務成功,出現“OK”
[root@localhost~]#chkconfigcupsoff ←禁止打印服務自動啟動
[root@localhost~]#chkconfig--listcups ←確認打印服務自啟動設置狀態
cups0:off1:off2:off3:off4:off5:off6:off ←0-6都為off的狀態就OK(當前打印服務自啟動被禁止中)
6)在線升級Linux
[root@localhost~]#yumupdate
#通過yum工具更新系統,更新后請重啟系統
#yum的用法請見《如何使用yum管理RPM(CentOS)》
2、其它設置
1)語言環境缺省設置
[root@localhost~]#vi/etc/sysconfig/i18n
加上如下一行
QUOTE:
LANG="zh_CN.GB18030"
[root@localhost~]#reboot
#重新啟動要設置生效
如果臨時需要英文環境,執行以下命令即可。
[root@localhost~]#exportLANG='en_US'
2)對TCP/IP網絡參數進行調整,加強抗syn_flood能力
[root@localhost~]#echo'net.ipv4.tcp_syncookies=1'>>/etc/sysctl.conf
[root@localhost~]#sysctl–p
3)網絡校時
[root@localhost~]#date
#確認系統時間是否正確
[root@localhost~]#ntpdate210.72.145.44
#與中國國家授時中心進行時間校正
[root@localhost~]#yuminstallntp
#安裝ntpdate程序。系統雖然默認沒有安裝這個套件,但我們可以很方便的通過yum工具來在線安裝。
[root@localhost~]#crontab-e
[Copytoclipboard][-]
CODE:
023***root/usr/sbin/ntpdate210.72.145.44>/dev/null2>&1
#以上命令設置好后存盤。您的機器將在每天的23:00根據中國國家授時中心的NTP服務器時間自動校準時間。
#關于linux下定時執行工具crontab的介紹請見http://hi.baidu.com/monobao/blog/item/01e9ecdcbc6a14a1cc11665b.html
3、安裝有依賴關系RPM包
[root@localhost~]#viinstall.sh
[Copytoclipboard][-]
CODE:
yum-yinstallgcc
yuminstallcpp
yuminstallgcc-c++
yuminstallncurses
yuminstallncurses-devel
yuminstallgd-develphp-gd
yuminstallzlib-devel
yuminstallfreetype-develfreetype-demosfreetype-utils
yuminstalllibpng-devellibpng10libpng10-devel
yuminstalllibjpeg-devel
yuminstallImageMagick
yuminstallflex
yuminstallImageMagick-devel
[root@localhost~]#shinstall.sh
#為了方便,直接這些軟件包在線安裝的指令行編寫到到腳本(ShellScript)中,下次用到時,你只需執行這個腳本就能自動安裝了。因為ShellScript是利用您平日在使用的一些指令,將之組合起來,成為一個"程式"。如果您平日某些序列的指令下得特別頻繁,便可以將這些指令組合起來,成為另一個新的指令。這樣,不但可以簡化并加速操作速度,甚至還可以乾脆自動定期執行,大大簡化系統管理工作。
下面正式步入LAMP的的安裝步驟,開始安裝之前,先了解一下源碼編譯方面的知識,參考文獻《Linux系統管理員(二)---套件管理RPM與Tarball》。
三、安裝Mysql
1、建立msyql用戶組
[root@localhost~]#grepmysql/etc/group
#查詢系統中是否有mysql這個用戶組,沒有則添加。
[root@localhost~]#groupaddmysql
#增加一個名為mysql的用戶組
2、建立mysql用戶
[root@localhost~]#grepmysql/etc/passwd
#查詢系統中是否有mysql這個用戶,沒有則添加。
[root@localhost~]#useraddmysql-gmysql-M-s/sbin/nologin
#增加一個名為mysql的用戶。
-g:指定新用戶所屬的用戶組(group)
-M:不建立根目錄
-s:定義其使用的shell,/sbin/nologin代表用戶不能登錄系統。
3、下載:mysql-4.0.26
[root@localhost~]#cd/usr/local/src/
[root@localhostsrc]#wgethttp://ftp.gamearena.cn/software/mysql-4.0.26.tar.gz
#......(信息略)......
[root@localhostsrc]#chmod+xmysql-4.0.26.tar.gz
#修改文件權限為755
[root@localhostsrc]#tar-zxvfmysql-4.0.26.tar.gz
#......(信息略)......
#解壓縮
PS:當你在www.mysql.com下載MySQL的時候,會發現有binary/rpm/source三種包。binarydistribution是由mysql官方優化編譯好的,不需要make。
3、設置編譯器的編譯參數
[root@localhostsrc]#cd/usr/local/src/mysql-4.0.26
[[email protected]]#./configure--prefix=/usr/local/mysql--with-unix-socket-path=/tmp/mysql.sock--localstatedir=/usr/local/mysql/data--with-charset=gbk--without-debug--enable-assembler--without-isam--with-client-ldflags=-all-static--with-mysqld-ldflags=-all-static
#這些設置告訴編譯器如何編譯apache:
--prefix=/usr/local/mysql
指定msyql安裝目錄
--with-unix-socket-path=/tmp/mysql.sock
這個是指定mysql服務器啟動后,聯機套接字文件所處的位置和文件名。
--localstatedir=/usr/local/mysql/data
指定mysql的數據庫目錄
--with-charset=gbk
添加gbk中文字符支持
--without-debug
去除debug模式
--enable-assembler
使用一些字符函數的匯編版本
--without-isam
去掉isam表類型支持,現在很少用了,isam表是一種依賴平臺的表
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
4、編譯和安裝
[[email protected]]#make
#“make”命令把源文件編譯成可執行的二進制文件
[[email protected]]#makeinstall
#“makeinstall”把二進制文件和配置文件安裝在合適的目錄下
6、初始化系統庫
[[email protected]]#./scripts/mysql_install_db
7、其它設置
[[email protected]]#cpsupport-files/my-medium.cnf/etc/my.cnf-fv
#注解:
-f,刪除目標中同名的文件或目錄,并且不給任何提示。
#還有一些其它的my.cnf配置文件。適合不同的應用規模。型式如my-*.cnf。根據自己的需要cp。
[[email protected]]#cpsupport-files/mysql.server/etc/init.d/mysqld
#添加到起動腳本
[[email protected]]#chmod700/etc/init.d/mysqld
[[email protected]]#cd/usr/local
[root@localhostlocal]#chmod750mysql-R
#注解:
-R遞歸改變目錄及其內容的權限。
[root@localhostlocal]#chown-Rmysql.mysql/usr/local/mysql
#設置所有者,mysql起動時會以mysql用戶的身份運行,這樣可以提高系統的安全性。
[root@localhostlocal]#chown-Rmysql.mysql/usr/local/mysql/data
[root@localhostlocal]#cd/usr/local/mysql/libexec
[root@localhostlibexec]#cpmysqldmysqld.old
[root@localhostlibexec]#stripmysqld
[root@localhostlibexec]#chkconfig--addmysqld
#添加一個服務
[root@localhostlibexec]#chkconfig--level345mysqldon
#設置開機時起動
[root@localhostlibexec]#servicemysqldstart
#啟動mysql服務
[root@localhostlibexec]#ln-s/usr/local/mysql/bin/mysql/sbin/mysql
[root@localhostlibexec]#ln-s/usr/local/mysql/bin/mysqladmin/sbin/mysqladmin
[root@localhostlibexec]#ln-s/usr/local/mysql/bin/mysqldump/sbin/mysqldump
[root@localhostlibexec]#mysqladmin-urootpassword"youpassword"
#設置root帳戶的密碼
[root@localhostlibexec]#mysql-uroot-p
#輸入你設置的密碼
mysql>usemysql;
mysql>deletefromuserwherepassword="";
#刪除用于本機匿名連接的空密碼帳號
mysql>flushprivileges;
#刷新一下權限,不執行,對user表的修改不會立即生效
mysql>showdatabases;
+----------+
|Database|
+----------+
|mysql|
|test|
+----------+
2rowsinset(0.08sec)
#顯示一下數據庫,測試mysql是否安裝正常。
mysql>quit
Bye
四、安裝Apache
1、下載:apache2.2.4
[root@localhost~]#cd/usr/local/src/
[root@localhostsrc]#wgethttp://archive.apache.org/dist/httpd/httpd-2.2.4.tar.gz
[root@localhostsrc]#chmod+xhttpd-2.2.4.tar.gz
[root@localhostsrc]#tar-zxvfhttpd-2.2.4.tar.gz
3)設置編譯器的編譯參數
[root@localhostsrc]#cdhttpd-2.2.4
[[email protected]]#./configure--prefix=/usr/local/apache2--enable-so--enable-rewrite=share--enable-proxy=share--enable-proxy-ajp=share--enable-dav=share--enable-dav-fs
#注解:
--prefix=/usr/local/apache2
設置Apache安裝目錄。這里設定安裝在/usr/local/apache2下,今后如果要卸載或者升級Aapche時,直接刪除這個目錄即可。
--enable-so
指定允許DSO(動態共享對像)
--enable-rewrite=share
開啟Rewrite支持,以實現url重定向到靜態頁面,建議開啟。
--enable-dav-fs
開啟WebDAV支持,svn服務器等需要。附:《什么是webDAV?及如何應用?》
#其它的額外設置請使用./configure--help來查看。
4)編譯和安裝:
[[email protected]]#make;makeinstall
#如果沒有錯誤的話,那么Apache就已經安裝在/usr/local/apache2目錄中了
3、啟動服務:
[[email protected]]#/usr/local/apache2/bin/apachectlstart
4、確定啟動狀:
[root@localhostapache2]#netstat-utl
tcp00*:http*:*LISTEN
#看到上面這行就表示你的Apache已經啟動。
#用瀏覽器訪問,看到Itworks!,說明apache已經安裝成功了,恭喜您!
五、安裝PHP
1、下載:php4.3.11
[root@localhost~]#cd/usr/local/src/
[root@localhostsrc]#wgethttp://ftp.gamearena.cn/software/php-4.3.11.tar.gz
[root@localhostsrc]#chmod+xphp-4.3.11.tar.gz
[root@localhostsrc]#tar-zxvfphp-4.3.11.tar.gz
2、設置編譯器的編譯參數
[root@localhostsrc]#cdphp-4.3.11
[root@localhostsrc]#./configure--prefix=/usr/local/php4--with-mysql=/usr/local/mysql--with-apxs2=/usr/local/apache2/bin/apxs--with-config-file-path=/usr/local/php4--with-gd--with-jpeg-dir--with-png--with-ttf--with-zlib--enable-mbstring--enable-ftp--with-freetype-dir--with-xml--disable-debug--enable-inline-optimization-q--enable-thread-safety
#參數注解:
--with-mysql=/usr/local/mysql
指定mysql的安裝位置
--with-apxs2=/usr/local/apache2/bin/apxs
編譯共享的Apache2.0模塊。FILE是可選的Apache的apxs工具的路徑,默認為apxs
--with-config-file-path=/usr/local/php4
設定php.ini所在的路徑,默認為PREFIX/lib
--with-gd
指定gd
--with-jpeg-dir
--with-png
--with-ttf
--with-zlib
--enable-mbstring
--enable-ftp
打開ftp支持
--with-freetype-dir
--with-xml
--disable-debug
禁用調試符號
--enable-inline-optimization
-q
--enable-thread-safety
3、編譯和安裝
[[email protected]]#make;makeinstall
4、轉存php基本配置文件
[[email protected]]#cpphp.ini-dist/usr/local/php4/php.ini
#這個路徑必須和./configure中的--with-config-file-path設置一致
5、整合apache與php
[[email protected]]#vi/usr/local/apache2/conf/httpd.conf
加上:
QUOTE:
AddTypeapplication/x-httpd-php.php
查找
QUOTE:
DirectoryIndexindex.phpindex.html
PS:其實這個DirectoryIndex和IIS中”啟用默認內容文檔“那項設置是一個含義,應該知道是干什么用的了吧。
6、重啟apache
[[email protected]]#/usr/local/apache2/bin/apachectlstop
[[email protected]]#/usr/local/apache2/bin/apachectlstart
切記:不要直接用[[email protected]]#/usr/local/apache2/bin/apachectlrestart,我第一次配置時,就是這樣操作導致apache的服務啟動不了,害得我查了半天。
7、測試php是否正常工作
[[email protected]]#echo''>/usr/local/apache2/htdocs/phpinfo.php
#在瀏覽器中輸入http://你的地址/phpinfo.php,如果出現如下畫面,就說明PHP編譯成功了。
六、安裝ZendOptimizer
1、下載ZendOptimizer3.2.2
[root@localhost~]#cd/usr/local/src/
[root@localhostsrc]#wgethttp://downloads.zend.com/optimizer/3.2.2/ZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
[root@localhostsrc]#chmod+xZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
[root@localhostsrc]#tar-xzvfZendOptimizer-3.2.2-linux-glibc21-i386.tar.gz
2、安裝ZendOptimizer
[root@localhostsrc]#cd/usr/local/src/ZendOptimizer-3.2.2-linux-glibc21-i386
[[email protected]]#./install.sh
#根據安裝提示一路回車即可,唯獨要注意的是選擇php.ini目錄的那里,你要修改為你php.ini實際所在的目錄。由于之前我們編譯安裝php時,指定為--with-config-file-path=/usr/local/php4,所以我們修改將默認的/etc修改為/usr/local/php4。如圖:
3、通過php探針文件核查ZendOptimizer是否安裝成功
正常的話,應該能看到成功安裝ZendOptimizer的信息,圖中紅框部份
7、安裝phpMyAdmin
1、下載版本
[root@localhostsrc]#wgethttp://jaist.dl.sourceforge.net/...s-utf-8-only.tar.gz
#從phpMyAdmin官方站點下載phpMyAdmin-2.10.0.2-all-languages.tar.gz文件。
2、安裝配置
[root@localhostsrc]#tar-xzvfphpMyAdmin-2.10.0.2-all-languages-utf-8-only.tar.gz
[root@localhostsrc]#mvphpMyAdmin-2.10.0.2-all-languages-utf-8-only/usr/local/apache2/htdocs/phpmyadmin
#把解開的phpMyAdmin拷貝到你的web發布目錄
在瀏覽器訪問http://你的地址/phpmyadmin/scripts/setup.php,點擊Add按鈕,如下圖所示
將Authenticationtype設為cookie后,點擊Add按鈕提交
點擊Download按鈕下載配置文件到本地,重命名為config.inc.php(默認為config[1].inc.php),
然后拷貝此文件到phpMyAdmin的安裝目錄(我們上面示例的目錄為/usr/local/apache2/htdocs/phpmyadmin),在瀏覽器訪問http://你的地址/phpmyadmin,輸入mysql的用戶名和密碼,便能正常登錄了。
如果出現如下提示,清空一下IE緩存就正常了。
安裝完成后,請務必刪除scripts目錄下的setup.php文件