在CentOS6上使用源碼編譯LAMP平臺

LAMP源碼編譯總結

    最近在學習重要的Web服務,當然也就少不了很重要的httpd和php.而動態網站必定又會使用數據庫如mysql之類的,那么,今天就總結一下最近做的LAMP平臺編譯實驗。具體過程如下。

實驗名:在CentOS6上使用源碼編譯LAMP平臺

實驗環境:CentOS6.5,安裝時選擇了使用最多的兩個開發包組。

          使用系統默認基本yum源+epel6源(aliyun: http://mirrors.aliyun.com/repo/epel-6.repo)

          使用源碼包:httpd-2.4.9 ;二進制安裝包mysql-5.5.33 ;php-5.4.26

實驗步驟:

一.安裝httpd服務


1.安裝httpd的依賴軟件包。

    安裝apr-1.5.0

    # tar xf apr-1.5.0.tar.bz2

    # cd apr-1.5.0

    # ./configure –prefix=/usr/local/apr

    # make && make install

    安裝apr-util-1.5.3

    # tar xf apr-util-1.5.3.tar.bz2

    # cd apr-util-1.5.3

    # ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr

    # make && make install

    若httpd有可能要支持ssl請要安裝openssl及openssl-devel.另,若有安裝,請查看是否這兩個包有     更新過。

    另編譯過程中也會使用pcre,請在編譯httpd前安裝,系統安裝盤是有這個包的。

2.接著就是解壓httpd的源碼包并安裝了,使用如下命令:

    

    # tar xf httpd-2.4.9.tar.bz2

    # cd httpd-2.4.9

    # ./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd24 –enable-so –enable-ssl –enable-cgi –enable-rewrite –with-zlib –with-pcre –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –enable-modules=most –enable-mpms-shared=all –with-mpm=event

說一下./configure里面的參數吧。

第一個參數–prefix是設定安裝目錄的;

第二個是服務的配置文件存放目錄;

第三個是開啟動態模塊的選項;

第四個是編譯并啟用ssl模塊;

第五個是啟用CGI功能;

第六個是rewrite;

第七個是編譯數據壓縮相關模塊;

第八個是使用pcre,這個一個perl的正則匹配類的函數庫;

第九個是指明apr的路徑;

第十個指明apr-utin的路徑;

第十一個是編譯最多的模塊;

第十二個是構建mpm為動態模塊并編譯所有支持的模式;

第十三個是指明默認mpm模塊為event事件處理方式。

注:最后兩個選項很重要,不太明白請搜索關鍵字“構建MPM模塊”

3.好了,一會后,檢查發現沒有問題,就make && make install安裝吧。

。。。。。一會就安裝好了。

4.接著,修改主配置文件中的Pid文件路徑。

5.編輯/etc/httpd/httpd.conf,添加如下行即可:

PidFile  "/var/run/httpd.pid"

6.最后,是提供SysV腳本,以方便我們管理服務。

編輯一個/etc/rc.d/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

7.添加腳本的執行權限后(# chmod +x /etc/rc.d/init.d/httpd)。最后,是不是應該把這個服務加入系統開機啟動中呢,明顯是必須的嘛。

# chkconfig –add httpd

8.這就是安好apache了哈,不過測試訪問前請記得關掉或放行iptables哦。

我來測試一下。

在CentOS6上使用源碼編譯LAMP平臺apache.png

再接再厲,我們接著裝第二個,mysql服務。

  1. 安裝前先準備好數據存放的目錄和服務運行的用戶。設置目錄是為了方便以后數據庫的數據管理哈,設置用戶是為了安全。

    #mkdir -pv /mydata/data

    #groupadd -r mysql

    #useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

    #chown -R mysql:mysql /mydata/data

2.解壓下載好的二進制安裝包并初始化mysql,千萬千萬要下對版本,我就下錯版本白忙了3個小時。  

    #tar xf mysql-5.5.33-linux2.6-i686.tar.gz -C /usr/local

    #cd /usr/local/

    #ln -sv mysql-5.5.33-linux2.6-i686  mysql

    #cd mysql 

    #chown -R mysql:mysql  .

    #scripts/mysql_install_db –user=mysql –datadir=/mydata/data

    #chown -R root  .

3.為Mysql提供主配置文件

    方法是把解壓目錄下的樣例配置文件拷貝并修改。

    #cd /usr/local/mysql

    #cp support-files/my-large.cnf  /etc/my.cnf

    修改my.cnf文件中的thread_concurrency的值為你的CPU個數乘以2(此值是mysql運行使用的系統CPU資源設定),并添加datadir = /mydata/data,這就是設置我們第一步新建的數據目錄了。

4.然后當然也是提供SysV腳本了

    不過這一次我們不用建文件,直接有樣例,拷貝就好。

    #cd /usr/local/mysql

    #cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

    #chmod +x /etc/rc.d/init.d/mysqld

5.同樣的加入系統啟動服務

    #chkconfig –add mysqld

    #chkconfig mysqld on

然后我們就可以啟動了。#service mysqld start

6.輸出mysql的man手冊至man命令的查找路徑

    編輯/etc/man.config,添加 MANPATH  /usr/local/mysql/man

7.輸出mysql的頭文件至系統頭文件路徑/usr/include    

    通過簡單的創建鏈接實現:

    #ln -sv /usr/local/mysql/include  /usr/include/mysql

8.輸出mysql的庫文件給系統庫查找路徑

    # echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

    系統重載系統庫 # ldconfig

9.修改系統PATH變量。修改/etc/profile或~/.profile或/etc/bashrc或~/.bashrc

這樣就完成了mysql的安裝了。

在CentOS6上使用源碼編譯LAMP平臺二進制包Mysql安裝成功提示.jpg

三.php的安裝

  1. 安裝依賴軟件包。

    若沒有安裝兩個開發包,請先安裝。

    另外要安裝bzip2-devel及libmcrypt-devel,后一個是epel的軟件包哈。

    #yum -y install bzip2-devel libmcrypt-devel 

  2. 解壓編譯安裝php-5.4.26

    #tar xf php-5.4.26.tar.bz2

    #cd php-5.4.26

    #./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

同樣的解釋一下./configure的參數。

第一個是安裝的目錄

第二個是使用mysql

第三個是使用openssl

第四個是使用mysqli這種方式連接mysql

第五個是不同語言的編碼(如ISO-8859,utf-8等等)能夠正常轉換的函數庫

第六個是用于顯示各種各樣的字體的

第七、八個分別是激活對jpeg、png的支持

第九個說過了

第十個、十一個是對xml的支持

第十二個是開啟sockets

第十三個是對apache擴展模塊的支持

第十四個是支持加密

第十五、十六個是配置文件目錄和擴展配置文件所在目錄

第十七個是支持壓縮傳輸

第十八個是支持apache的多種MPM

檢查通過我們就make && make install吧。

3.為php提供配置文件:

    #cp php.ini-production /etc/php.ini

4.編輯apache配置文件httpd.conf,以apache支持php

    # vim /etc/httpd/httpd.conf

     添加如下二行

     AddType application/x-httpd-php  .php

     AddType application/x-httpd-php-source  .phps

     定位至DirectoryIndex index.html 

     修改為:

     DirectoryIndex  index.php  index.html

好了,這樣基本也就配置完成LAMP了,試試結果。

先提供測試頁面。

    #vim /usr/local/apache/htdocs/index.php

    寫入

          $link = mysql_connect('127.0.0.1','root','');

          if ($link)

            echo "Success…";

          else

            echo "Failure…";

          mysql_close();

    ?>

    保存退出。

嗯,測試之前別忘了,剛才改過apache的配置文件,要重啟一下httpd哈。

    #service httpd restart

看一下測試結果。

在CentOS6上使用源碼編譯LAMP平臺LAMP.jpg

作為linux最常用的平臺,我會多練N次直到我能不看文檔就能熟練安裝的,請各位同仁也加油吧

    ヽ(.??ˇд ˇ??;)? ヽ(.??ˇд ˇ??;)? ヽ(.??ˇд ˇ??;)?

51CTO發布文章大姨媽了……

原創文章,作者:北京-清虛,如若轉載,請注明出處:http://www.www58058.com/4890

(0)
北京-清虛北京-清虛
上一篇 2015-06-01 19:07
下一篇 2015-06-01 19:14

相關推薦

  • old notes

    yum update: update software guest edition ***: how to install guest edition: 1) need to root: su – 2) yum install kernel-devel 3)yum install gcc* ( when don't remember n…

    Linux干貨 2016-09-19
  • 馬哥教育網絡21期+第6周博客練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s@\(^[[:space:]]\+\)@#&@g # Let rhgb know that we&#0…

    Linux干貨 2016-08-15
  • hadoop分布式集群

    分布式集群的實現 環境: 192.168.36.129 ? node1:NN,SNN,RM ?192.168.36.130 ?node2:DN,NM 192.168.36.132 ? node3:DN,NM 192.168.36.133 ? node4:DN,NM 配置java環境,每個節點時間同步,基于主機名互相通信,定義/etc/hosts 文件 &nb…

    2017-12-09
  • Linux screen命令

    screen命令 一、簡介 Screen是一款終端模擬的屏幕管理器,用于命令行終端自由切換。 當我們需要執行一個用時較多的作業,不希望自己或者他人誤操作關閉終端導致作業中斷,可以進入screen,這樣,當終端關閉,作業仍會繼續執行。 GNU’s Screen 官方站點:http://www.gnu.org/software/screen/ &nb…

    2017-07-13
  • 高可用集群基本概念與heartbeat文本配置接口

    一、高可用集群基本概念:     什么是高可用集群:          所謂高可用集群,就是在出現故障時,可以把業務自動轉移到其他主機上并讓服務正常運行的集群構架     高可用集群的構架層…

    Linux干貨 2016-01-13
  • 基于httpd服務實驗構建網站域名DNS解析

    具體組成簡圖 實驗前期準備 httpd的安裝 后期補充 做httpd 服務器的IP 為: 172.18.148.62 安裝DNS域名解析包 bind yum install bind 修改DNS 的基礎配置文件 /etc/named.conf   關閉所有的虛擬機的 防火墻 iptables -F CENTOS7 的系統關閉selinux sete…

    2017-04-16

評論列表(2條)

  • stanley
    stanley 2015-06-01 19:13

    代碼的格式化非常重要,極有利于可視性,標簽的添加有利于seo命中,+u

  • 黑白子
    黑白子 2015-06-02 13:15

    你好,看文章中的pcre好像不用安裝的,那個應該是nginx才會用到的。

欧美性久久久久