萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 手動配置lamp服務器

手動配置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,這樣將軟件時間同步為硬件時間。】

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

手動配置lamp服務器 三聯

  [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

copyright © 萬盛學電腦網 all rights reserved