lamp平臺搭建

LAMP是Linux、Apache、MySQL、PHP/Perl/Python的簡稱。它所組成的各組件都是開源軟件,因此很方便自由的獲取,導致這些組件的廣泛使用,並不斷完善發展,初步形成新的軟件系統格局,並可能成爲開源軟件系統工程化的核心模式。

要安裝比較新的httpd我們就必須安裝比較新的apr。紅帽6上就不需要再指定安裝apr了,因爲它默認安裝的版本比較新。但是我們這裏使用的是紅帽5.8的版本,它給我們安裝的apr版本有點老,我們要安裝新版本的apr,是不是老版本的apr就要卸載了呢?這不是的,老版本千萬不能卸載,可能會有依賴;那升級呢?也是不行的,升級後老版本也是會沒的。那有的朋友該問了,那兩個版本在是不是該有衝突了。我們只能使用多版本並存的機制,只要把編譯安裝的新版本和老版本安裝在不同的地方就可以了。

Rpm包安裝:        
 /bin, /sbin, /usr/bin, /usr/sbin ####二進制所在位置         
 /lib, /usr/lib ####庫文件所在位置         
 /etc ####配置文件所在位置         
 /usr/share/{doc,man}####幫助文檔/手冊  編譯安裝:       
 /usr/local/ ####定義安裝第三方軟件包                
 bin, sbin ####二進制所在位置               
 lib ####庫文件所在位置                
 etc ####配置文件所在位置                
 share/{doc,man} ####幫助文檔/手冊

我們這樣安裝,看上去還算工整,但是我們還要想到到時候要是想要卸載某個軟件怎麼辦?還要一個一個的找嗎?那不就變麻煩了。所以我們這樣調整,就是定義安裝第三方軟件包依舊放在/usr/local/下,並且還要創建以軟件名命名的目錄(爲了好找),然後把它有關的文件都放在這個目錄下面。但是這樣安裝又出現了問題,它的二進制程序不在PATH環境裏面,那就不能直接執行命令了,那就修改PATH變量;還要修改庫文件搜索路徑;還要修改man的配置文件等。

例如:    /usr/local/apr/

              bin, sbin, lib, includes, etc, share/man

下面我們就開始手動配置apr及apr-util,並且如何安裝httpd。(提示:這裏要下載源程序包)

第一步:安裝開發環境

第二步:安裝apr源程序

我們這裏是在我們的服務器上下載的,大家要是做的話去官方網站(apr.apache.org)上下載源程序包,我們這裏將它們放到了主目錄下面。如果不想放到這裏的話可以放到/usr/local/src下面,這裏專門放源碼的。下面我們就準備安裝apr【提示:如果你係統的時間比下載源碼包的時間還要早的話,這樣是會出錯的。如果時間不對的話可以用hwclock –s,這樣將軟件時間同步爲硬件時間。】

下面我們就要將軟件進行解壓後進行安裝。安裝完成後第一個包就裝好了。

[root@localhost apr-1.4.6]# make  [root@localhost apr-1.4.6]# make install

第三步:安裝apr-util

安裝apr-util和我們安裝apr是一樣的。不過它指定路徑的時候還要指定apr裝在什麼地方,如果不指定的話,它會自動找老版本的(05行最後面的紅色就是指定的apr安裝路徑)。

[root@localhost ~]# tar xf apr-util-1.5.2.tar.bz2  
[root@localhost ~]# cd apr-util-1.5.2  
[root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr  
[root@localhost apr-util-1.5.2]# make  
[root@localhost apr-util-1.5.2]# make install

第四步:安裝httpd

在安裝httpd之前我們還要安裝一個模塊,這個模塊是pcre。除了配置那些模塊還有可能會用到--enable –deflate配置壓縮模塊的. --enable –expires過期首部控制。如果要以fastCGI模式工作的話必須啓用—enable-proxy-fcgi。這裏我們是以模塊的方式工作,暫時不用啓用。--enable-mpms-shared=all在版本2.2中是沒有的,但是在版本2.4中就有了。Apache是支持MPM(躲到處理模塊)有三種形式,prefork,worker,event。支持哪一種在編譯的時候已經確定了。在2.4的時候以模塊化的方式使用MPM,也就是可以同時將這三種模塊一併寫進來用哪個可以切換哪個。聽起來非常棒,但是PHP以模塊化方式給MPM結合的時候,如果使用prefork,PHP很簡單。但是你使用的是worker或event我們的PHP必須編譯成ZTS格式,如果你想靈活使用的話,還要編輯兩次PHP。在2.2默認MPM是prefork ,在2.4默認的MPM是event。--with-mpm=MPM 指定哪一個爲默認。【提示:詳細內容就在圖中】

[root@localhost ~]# tar xf httpd-2.4.4.tar.bz2  
[root@localhost ~]# cd httpd-2.4.4  
[root@localhost httpd-2.4.4]# yum -y install pcre-devel ####安裝pcre模塊
[root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

第五步:關閉selinux

之所以將這一項作爲一大步來說是因爲關閉selinux,不關閉的話,你的服務器啓動不了。默認基本上是開啓的,我們要把它給關掉。

1、暫時性的關閉

2、永久性關閉

[root@localhost httpd-2.4.4]# vim /etc/selinux/config

第六步:啓動web服務器

在/usr/local/paache下面有一個腳本可以啓動服務,腳本名稱爲bin/apachectl。

這裏給大家說一下/usr/local/apache裏面的內容,順便把網頁的內容添加hello apache,這時候我們查看一下。

第七步:將.pid文件放到/var/run下

我們一般都是將生成的.pid文件放到/var/run下面的,但是這裏的.pid文件都放到了/usr/local/apache/logs下面,但是我們的/logs/下面都是放日誌的,放這些.pid文件顯然是不合適的,我們這裏編輯配置文件(/etc/httpd/httpd.conf)將它的.pid文件都生成到/var/run下面。我們在配置文件中添加的內容是:PidFile "/var/run/httpd.pid"。【提示:我們還可以驗證,當你沒有輸入這些內容的時候,關閉服務器(bin/apachectl stop)我們再用netstat –tnlp查看一下80端口,已經不再處於監聽狀態,我們在查看一下logs下面已經沒有了.pid文件。這時候在配置文件中添加PidFile "/var/run/httpd.pid",我們發現.pid文件已經放到了/var/run/下面了,並且名字爲httpd.pid。】

第八步:啓動方便

我們這時候雖然能啓動起來但是啓動總是那麼的不方便,這時候我們就要寫腳本來讓它方便起來了。將文件放在/etc/init.d/httpd裏面,編輯完成後給它權限就行了,直接啓動就行了。接下來我們讓它開機後自動啓動起來。

[root@localhost apache]# vim /etc/init.d/httpd 
[root@localhost apache]# chmod +x /etc/init.d/httpd
#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#	       HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid

# Source function library.
. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/httpd ]; then
        . /etc/sysconfig/httpd
fi

# Start httpd in the C locale by default.
HTTPD_LANG=${HTTPD_LANG-"C"}

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0

start() {
        echo -n $"Starting $prog: "
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

stop() {
	echo -n $"Stopping $prog: "
	killproc -p ${pidfile} -d 10 $httpd
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
    echo -n $"Reloading $prog: "
    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
        RETVAL=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
        status -p ${pidfile} $httpd
	RETVAL=$?
	;;
  restart)
	stop
	start
	;;
  condrestart)
	if [ -f ${pidfile} ] ; then
		stop
		start
	fi
	;;
  reload)
        reload
	;;
  graceful|help|configtest|fullstatus)
	$apachectl $@
	RETVAL=$?
	;;
  *)
	echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
	exit 1
esac

exit $RETVAL

第九步:安裝mysql

從上面的順序可看出,下面我們將要演示MySQL安裝過程,這裏我們先使用5.5這個版本是如何安裝的,回頭再講5.6的安裝過程。大家要演示的話到mysql的官方網站上去下載(www.mysql.com)。這裏就從怎樣安裝開始講起。這個時候我們就可以解壓【官方要求:但是我們必須要將mysql放到/usr/local下面,並且目錄名稱還必須是mysql,壓縮過去後,我們是重命名還是使用連接?這裏最好使用的是連接,這樣的它的版本號還有平臺這些字符創都會保留着,容易識別正在使用的是什麼版本的。

[root@localhost ~]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local  ####由於包有點大所以速度有點慢 
 [root@localhost local]# ln -sv mysql-5.5.28-linux2.6-i686/ mysql    ####創建連接

     對我們而言,要想初始化安裝mysql,我們就要使用mysql用戶mysql組,並且還不能讓它登錄(不創建家目錄)。

實際上在mysql裏面有個文件是INSTALL-BINARY,這個文件裏面說明了是如何安裝的,這裏給大家講解一下,下面就給大家演示一下如何去安裝mysql的。

這裏我們就可以更改mysql的權限了,更改權限後我們先查看一下scripts下面的腳本,這個腳本是進行初始化的,裏面也是有很多選項的,有個選項是—datadir=path,我們要將數據另外保存在什麼地方,我們用rpm包安裝默認在/var/lib/mysql。我們用編輯的方式安裝mysql,它默認都放在/usr/local/mysql/data下面。我們要是把數據放在軟件安裝路徑下面可不是好的選擇,我們要給它另找路徑,我們知道這個數據是不斷變大的,我們最好把它放到邏輯卷中,這樣等數據很大的時候我們可以用擴展邏輯卷的方式繼續存放數據。這裏我們先創建一個20G的邏輯分區,將其設置成邏輯卷類型。

[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/*  
[root@localhost mysql]# fdisk /dev/sda  
[root@localhost mysql]# pvcreate /dev/sda5   ####創建物理卷  
[root@localhost mysql]# vgcreate myvg /dev/sda5   ####創建卷組  
[root@localhost mysql]# lvcreate -n mydata -L 5G myvg  ####創建5G的邏輯卷  
[root@localhost mysql]# mke2fs -j /dev/myvg/mydata  ####格式化爲ext3格式  
[root@localhost mysql]# mkdir /mydata  ####創建文件夾  
[root@localhost mysql]# vim /etc/fstab   ####開機自動掛載 
 /dev/myvg/mydata        /mydata       ext3    defaults        0 0  
[root@localhost mysql]# mount –a

如果把mydata作爲數據目錄的話,將來所有文件將直接放到這個分區上了,爲了便於管理我們在建立一個子目錄data。它的屬主屬組應該是mysql,但現在是root,所以我們還要更改屬主屬組。並且其他用戶也是不能隨意查看的。

[root@localhost mysql]# mkdir /mydata/data  
[root@localhost mysql]# chown -R mysql.mysql /mydata/data   ####更改屬主、屬組  
[root@localhost mysql]# chmod o-rx /mydata/data    ####更改其他用戶的權限

這個時候我們就可以執行腳本了,進行初始化。爲了安全起見,初始化完成後我們要將mysql下面的屬主改爲root。【提示:如果你使用的是默認的data,那你還要將data的屬主改爲mysql,而我們是又創建的文件存放數據,所以這裏就不用改了】

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data  
[root@localhost mysql]# chown -R root /usr/local/mysql/*

第十步:啓動mysql

我們這時候是沒有腳本的,所以不能用service mysqld start。但是mysql給我們提供的有腳本,在support-files下面有個文件叫mysql.server,這就是它的腳本,我們只需要將它複製過去就行了。

    這個時候我們還不能啓動mysql,因爲我們還沒有設置配置文件,mysql找配置文件的時候先去找/etc/my.cnf,再去找/etc/mysql/my.cnf,找完這裏還去找$BNSEDIR/my.cnf。有人問$BNSEDIR是什麼?一般來講就是你的安裝目錄。下面還去找~/.my.cnf。找完後如果有衝突怎麼辦?這裏就是以最後一個爲準(後一個會覆蓋前一個)。我們到support-files目錄中選擇一個配置文件,其中我們要選擇合適的,我們就以正確的作爲例子,我們這裏查看一下文件中的內存是否爲我們合適的內存。這裏我們選擇my-large.cnf,因爲我們的內存是512M的,所以這裏我們就選擇它了。然後我們將它複製到/etc/下面,並命名爲my.cnf,然後編輯配置文件。最後啓動serice mysqld start。

[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf  
[root@localhost mysql]# vim /etc/my.cnf

[root@localhost mysql]# service mysqld start

我們編譯的時候服務器端和客戶端的mysql都裝了,我們這裏的mysql的二進制也裝了,但是找不到,所以我們要給它一個路徑這樣就行了,這裏我們登錄一下mysql,結果如下。

[root@localhost mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin

第十一步:安裝php

這裏我們開始安裝php,大家去php的官網(http://php.net/downloads.php)下載安裝包,php有很多功能都要依賴於你係統上的某些功能的,它可以給我們動態生成圖片,但是它要依賴於圖片庫,如果當前系統上沒有圖片庫,它就沒法使用這個功能。這裏我們就先解壓,解壓後我們就可以配置了。

[root@localhost ~]# tar xf php-5.4.13.tar.bz2  [root@localhost ~]# cd php-5.4.13
[root@localhost php-5.4.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts
詳解: 
--prefix=/usr/local/php   ####安裝目錄 
--with-mysql=/usr/local/mysql                       ####mysql的位置 
--with-openssl            ####是否支持openssl功能 
--with-mysqli=/usr/local/mysql/bin/mysql_config     ####php與mysql交互的另一個接口(是個二進制程序) 
--enable-mbstring         ####支持中文(非單個字節表示的語言) 
--with-freetype-dir       ####支持fretype功能(fretype是實現引用不同字體的)
 --with-jpeg-dir           ####支持jpg格式的圖片 
 --with-png-dir            ####支持png格式的圖片 
 --with-zlib               ####支持通用格式的壓縮庫 
 --with-libxml-dir=/usr    ####xml的庫的位置 
 --enable-xml              ####支持擴展標記語言 
 --enable-sockets          ####支持基於套接字的通信 
 --with-apxs2=/usr/local/apache/bin/apxs     ####將它編譯成apache的模塊 
 --with-mcrypt             ####支持加密功能的 
 --with-config-file-path=/etc                ####php文件存放的目錄(主配置文件爲php.ini)
 --with-config-file-scan-dir=/etc/php.d      ####主配置文件有很多片段放的位置(格式是.ini) 
 --with-bz2                ####支持壓縮庫 
 --enable-maintainer-zts   ####主要取決於apache的類型(爲prefork不用,使用event或worker需要要用)如果apache以線程方式工作必須編譯成這種格式

這裏執行後可能會出現錯誤,因爲它所依賴的還有別的庫文件不存在,這裏我們手動解決依賴關係就行了。我們查看圖片出現了錯誤,它說你沒有安裝mcrypt相關的軟件包,加密不了了。有兩種解決方案:一、不適用加密功能把--with-mcrypt給去了。二、使用加密功能,安裝mcrypt相關的包。我們這裏使用第二中方案。這裏我們需要安裝四個軟件包,一個是mhash,一個是mhash-devel,一個是libmcrypt,最後一個是libmcrypt-devel。

這幾個軟件包去rpmfind.net上面搜索,裏面有很多版本的,我們這裏選定的是mhash-0.9.2-6.el5.i386.rpm和mhash-devel-0.9.2-6.el5.i386.rpm。然後我們再上網上下載libmcrypt-2.5.7-5.el5.i386.rpm,libmcrypt-devel-2.5.7-5.el5.i386.rpm軟件包,然後解壓。解壓完成後我們就可以再次執行./configure了。執行完成後我們就可以make和make install。

第十二步:提供配置文件

Php的配置文件比較獨特,在/etc/php.ini。php-5.4.13下面有兩個文件,一個是php.ini-development用戶開發環境的,另一個是php.ini-production用於生產環境的。我們用於生產環境的,把php.ini-production複製到/etc/下並命名爲/php.ini。下面我們就說一說如何讓apache和php結合起來工作。主要修改apache的配置文件來實現。編輯apache的配置文件,讓apache處理php結尾的頁面文件,既然我們能夠支持php了,我們主頁面也應該有以php結尾的頁面了。

[root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini 
[root@localhost php-5.4.13]# vim /etc/httpd/httpd.conf

下面我們要進入網頁默認目錄,然後修改index.html,更改爲index.php格式的。然後編輯內容,我們這裏用php連接mysql,然後進行測試,我們在把mysql關閉(service mysqld stop)然後在進行測試。

[root@localhost ~]# cd /usr/local/apache/htdocs  
[root@localhost htdocs]# mv index.html index.php  
[root@localhost htdocs]# vim index.php

[root@localhost ~]# service mysqld stop

第十三步:配置xcache

下面我們就實現如何讓我們的php支持虛擬主機,但是在支持虛擬主機之前,我們先讓我們的php能夠使用xcache,對php和opcod進行加速。這裏我們直接下載好了,大家做了上網上下載(http://xcache.lighttpd.net/)。我們這裏使用的是xcache-2.0版本。xcache的安裝比較獨特,因爲xcache是php的模塊準確的說是php的擴展,我們首先要使用php的命令來加載這個擴展,要識別這個擴展。Phpize意思是準備好一個擴展以便進行編譯的。Php-config是能夠獲取php的配置信息,以及編譯時候所使用的選項信息的【提示:能夠和php-5.4結合工作的只支持xcache2.0及其以後的版本】

[root@localhost ~]# tar xf xcache-2.0.0.tar.bz2  
[root@localhost ~]# cd xcache-2.0.0 
[root@localhost xcache-2.0.0]# /usr/local/php/bin/phpize   ####【提示:幾乎所有擴展在安裝之前都要執行這個命令的。】  
 
[root@localhost xcache-2.0.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config  --enable-xcache    ####啓用xcache功能  --with-php-config=/usr/local/php/bin/php-config   ####php的配置命令  
[root@localhost xcache-2.0.0]# make

安裝完成後會在xcache-2.0.0目錄下面生成一個文件叫xcache.ini。要想php能夠支持xcache這個功能,那就意味着把xcache的配置信息必須要提供到php裏面去,所以我們要把xcache.ini追加到php裏面去,或者直徑將xcache.ini直接複製到php.d下面,不過這個php.d目錄是我們手動創建的,複製完成後我們要進行編輯,我們這裏只把常用的給列了出來,我們應該重啓才能生效,這裏要重啓web,因爲它的模塊是被web加載的。我們還需要在/usr/local/apache/htdocs/index.php 添加一項“phpinfo();“,我們在測試一下,由此可見xcache工作起來了。

[root@localhost xcache-2.0.0]# mkdir /etc/php.d  
[root@localhost xcache-2.0.0]# cp xcache.ini /etc/php.d  
[root@localhost xcache-2.0.0]# vim /etc/php.d/xcache.ini

[xcache.admin]      ####xcache的管理功能 
xcache.admin.enable_auth = On    ####管理功能認證打開 
xcache.admin.user = "mOo"      ####管理用戶是什麼 ; 
xcache.admin.pass = md5($your_password)    ####用md5加密的方式加密碼 
xcache.admin.pass = ""          ####管理密碼是什麼 
xcache.shm_scheme =        "mmap"    ####使用哪種方式來共享內存,“mmap”內存映射(一個內存可以讓多個進程同時訪問) 
xcache.size  =               60M     ####用於緩存opcode代碼的空間有多大(可修改的) 
xcache.count =                 1     ####設置你的CPU個數 
xcache.slots =                8K     ####在緩存當中,有幾個槽位來緩存opcode,並且每個槽位是多大 xcache.ttl   =                 0     ####過期時間,0表示永不過期  
xcache.gc_interval =           0     ####過期的時候都清理出去,我們的垃圾回收器多長時間工作一次,0表示永不工作
[root@localhost xcache-2.0.0]# service httpd restart  
[root@localhost xcache-2.0.0]# vim /usr/local/apache/htdocs/index.php



本文轉載自:http://www.uzzf.com/news/7974.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章