編譯配置LAMP:
Linux, Apache, MySQL, PHP(Python, Perl)
其大概步驟大緻可以分為
httpd --> MySQL --> Php
他們三者的關系又是什麼呢?
1、apache是伺服器基礎,php和mysql都需要他來協調工作
2、php是腳本解釋,如果不用php那麼apache出來的東西就隻是靜态的,而不能在伺服器實作功能
3、mysql是資料庫,完全可以單獨使用,但是和另外兩個一起,則是由php代碼調用mysql接口,而apache就負責解釋php代碼,讓他能真正地實作對mysql的調用
這三個放在這裡,大概可以這樣講
是以稍微理清了下思緒,我們開始來進行試驗!
<b>前提:</b>
<b>另外需要檢視selinux</b><b>是否開啟。同樣可參照上邊部落格中的方法來實作關閉selinux</b>
[root@localhost ~]# getenforce
Enforcing
[root@localhost ~]# setenforce 0
Permissive
//當然。這裡也需要到vim /etc/selinux/config将其中的SELINUX=enforcing替換為SELINUX=permissive
<b>一、編譯安裝apache</b>
<b> </b>注意:事先把<b>httpd-2.4.3.tar</b><b>,apr-util-1.4.1.tar</b><b>,apr-1.4.6.tar </b>這三個包放到/usr/local/src/目錄中,方法具體不在介紹xshell與window界面拖拽。另外需要注意的是,要将虛拟機裡linux的時間做同步。--hwclock -s
<b>1</b><b>、</b><b>解決依賴關系</b>
(1) 編譯安裝apr
[root@localhost src]# ls
apr-1.4.6.tar.bz2 apr-util-1.4.1.tar.bz2 httpd-2.4.3.tar.bz2
[root@localhost src]# tar xf apr-1.4.6.tar.bz2
[root@localhost src]# cd apr-1.4.6
[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr // prefix指定路徑
[root@localhost apr-1.4.6] # make && make install //這裡稍微簡略了下步驟
//這個時候,apr已經安裝好了 。然後去安裝apr-util
(2) 編譯安裝apr-util
[root@localhost apr-1.4.6]# cd ..
[root@localhost src]# tar xf apr-util-1.4.1.tar.bz2
[root@localhost src]# cd apr-util-1.4.1
[root@localhost apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr //-with-apr告訴其apr的路徑
[root@localhost apr-util-1.4.1]# make
[root@localhost apr-util-1.4.1]# make install
(3) httpd-2.4.3編譯過程也要依賴于pcre-devel軟體包,需要事先安裝。此軟體包系統CD光牒自帶,是以,找到并安裝即可。
[root@localhost apr-util-1.4.1]# cd ..
[root@localhost src]# yum install pcre-devel
<b> </b><b>2</b><b>、編譯安裝httpd-2.4.3</b>
[root@localhost src]# tar xf httpd-2.4.3.tar.bz2
[root@localhost src]# cd httpd-2.4.3
[root@localhost httpd-2.4.3]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --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-mpms-shared=all --with-mpm=event //mpm=even預設使用event
[root@localhost httpd-2.4.3]# make
[root@localhost httpd-2.4.3]# make install
補充:
(1)建構MPM為靜态子產品
在全部平台中,MPM都可以建構為靜态子產品。在建構時選擇一種MPM,連結到伺服器中。如果要改變MPM,必須重新建構。為了使用指定的MPM,請在執行configure腳本 時,使用參數 --with-mpm=NAME。NAME是指定的MPM名稱。編譯完成後,可以使用 ./httpd -l 來确定選擇的MPM。 此指令會列出編譯到伺服器程式中的所有子產品,包括 MPM。
(2)建構 MPM 為動态子產品
在Unix或類似平台中,MPM可以建構為動态子產品,與其它動态子產品一樣在運作時加載。 建構 MPM 為動态子產品允許通過修改LoadModule指令内容來改變MPM,而不用重新建構伺服器程式。在執行configure腳本時,使用--enable-mpms-shared選項即可啟用此特性。當給出的參數為all時,所有此平台支援的MPM子產品都會被安裝。還可以在參數中給出子產品清單。預設MPM,可以自動選擇或者在執行configure腳本時通過--with-mpm選項來指定,然後出現在生成的伺服器配置檔案中。編輯LoadModule指令内容可以選擇不同的MPM。
3、修改httpd的主配置檔案,設定其Pid檔案的路徑
[root@localhost src]# vim /etc/httpd/httpd.conf
//添加如下内容
PidFile "/var/run/httpd.pid"
4、提供SysV服務腳本/etc/rc.d/init.d/httpd,内容如下:
[root@localhost src]# cd /etc/rc.d/init.d/
[root@localhost init.d]# vim 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
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
fi
echo
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
status)
status -p ${pidfile} $httpd
restart)
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
reload)
reload
graceful|help|configtest|fullstatus)
$apachectl $@
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
//而後為此腳本賦予執行權限:
[root@localhost init.d]# chmod +x httpd
[root@localhost init.d]# chkconfig --level 35 httpd on //設定運作級别
[root@localhost init.d]# chkconfig --list httpd
httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
//下面的步驟可忽略,這裡隻是可以設定為bash可以直接執行
[root@localhost init.d]# vim /etv/profile.d/httpd.sh
[root@localhost init.d]# export PATH=$PATH:/usr/local/apache/bin
這個時候就可以驗證下httpd服務了。
<a href="http://blog.51cto.com/attachment/201304/120748198.png" target="_blank"></a>
然後打開浏覽器,輸入172.16.111.1就可以檢視工作網頁了。
其網頁檔案在/usr/local/apache/htdocs/中的index.html中,可以修改其中的内容對網頁内容進行修改。
<b>二、安裝mysql-5.5.28</b>
前提:這裡使用mysql-5.5.28-linux2.6-tar,提前下載下傳放入linux中
<b> 1</b><b>、</b><b>準備資料存放的檔案系統</b>
//建立一個邏輯卷,這裡假設其邏輯卷的挂載目錄為/mydata,而後需要建立/mydata/data目錄做為mysql資料的存放目錄。
[root@localhost init.d]# fdisk /dev/sda
//其中過程省略。。
[root@localhost init.d]# partprobe /dev/sda
//建立邏輯卷
[root@localhost init.d]# pvcreate /dev/sda5
Writing physical volume data to disk "/dev/sda5"
Physical volume "/dev/sda5" successfully created
[root@localhost init.d]# vgcreate myvg /dev/sda5
Volume group "myvg" successfully created
[root@localhost init.d]# lvcreate -n mydata -L 5G myvg
Logical volume "mydata" created
[root@localhost init.d]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
mydata myvg -wi-a- 5.00G
lvtext vgtext -wi-a- 1.00G
home vol0 -wi-ao 4.88G
root vol0 -wi-ao 29.28G
[root@localhost init.d]# mke2fs -j /dev/myvg/mydata
//設定開機挂載
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# vim /etc/fstab
/dev/myvg/mydata /mydata ext3 defaults 0 0
[root@localhost ~]# mount –a //重新挂載
[root@localhost ~]# mkdir /mydata/data //作為資料的挂載目錄
<b>2</b><b>、建立使用者以安全方式運作程序:</b>
//建立使用者
[root@localhost ~]# groupadd -r mysql
[root@localhost ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
[root@localhost ~]# chown -R mysql:mysql /mydata/data
<b>3<b>、</b></b><b>安裝并初始化mysql-5.5.28</b>
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# tar xf mysql-5.5.28-linux2.6-i686.tar.gz
[root@localhost src]# cd ..
[root@localhost local]# pwd
/usr/local
[root@localhost local]# ln -sv /usr/local/src/mysql-5.5.28-linux2.6-i686 mysql
create symbolic link `mysql' to `/usr/local/src/mysql-5.5.28-linux2.6-i686'
[root@localhost local]# cd mysql
[root@localhost mysql]# chown -R mysql:mysql *
[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
Installing MySQL system tables...
[root@localhost mysql]#
<b> 4</b><b>、</b><b>為mysql</b><b>提供主配置檔案:</b>
[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@localhost mysql]# vim /etc/my.cnf
//并修改此檔案中thread_concurrency的值為你的CPU個數乘以2,比如這裡使用如下行:
thread_concurrency = 2
//另外還需要添加如下行指定mysql資料檔案的存放位置:
datadir = /mydata/data //添加此行指定mysql資料檔案的存放位置
<b>5</b><b>、</b><b>為mysql</b><b>提供sysv</b><b>服務腳本:</b>
[root@localhost mysql]# pwd
/usr/local/mysql
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
//添加至服務清單:
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig mysqld on
為了使用mysql的安裝符合系統使用規範,并将其開發元件導出給系統使用,這裡還需要進行如下步驟:
<b>6</b><b>、</b><b>輸出mysql</b><b>的man</b><b>手冊至man</b><b>指令的查找路徑:</b>
[root@localhost mysql]# vim /etc/man.config
#####################mysql#############
MANPATH /usr/local/mysql/man
<b>7<b>、</b></b><b>輸出mysql</b><b>的頭檔案至系統頭檔案路徑/usr/include</b><b>:</b>
//這可以通過簡單的建立連結實作:
[root@localhost mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
create symbolic link `/usr/include/mysql' to `/usr/local/mysql/include'
<b>8</b><b>、輸出mysql</b><b>的庫檔案給系統庫查找路徑:</b>
[root@localhost ld.so.conf.d]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
<b> 9</b><b>、修改PATH</b><b>環境變量,讓系統可以直接使用mysql</b><b>的相關指令。</b>
[root@localhost ld.so.conf.d]# vim /etc/profile //需要重讀或重新開機或重新登入
PATH=$PATH:/usr/local/mysql/bin
//另外export PATH=$PATH:/usr/local/mysql/bin 也可以起到上邊的效果
PS:這個時候。就可以進入資料庫建立表之類的東西了!
<a href="http://blog.51cto.com/attachment/201304/120939193.png" target="_blank"></a>
<b>三、編譯安裝php-5.4.13</b>
<b> 1</b><b>、解決依賴關系:</b>
請配置好yum源(可以是本地系統CD光牒)後執行如下指令:
[root@localhost ~]# yum -y groupinstall "X Software Development"
如果想讓編譯的php支援mcrypt擴充,此處還需要下載下傳如下兩個rpm包并安裝之:
libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.2-6.el5.i386
mhash-devel-0.9.2-6.el5.i386
<b>2</b><b>、</b><b>編譯安裝php-5.4.13</b>
//将下載下傳好的安裝包放到linux的src中(過程同上)
[root@localhost src]# tar xf php-5.4.13.tar.bz2
[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:php安裝路徑
--with-mysql=/usr/local/mysql:mysql安裝路徑
--with-openssl:支援openssl功能
--with-mysqli=/usr/local/mysql/bin/mysql_config:mysql與apache通路的另一種接口,安裝在二進制目錄下
--enable-mbstring:多位元組string
--with-freetype-dir:安裝的字型庫頭檔案
--with-jpeg-dir:jpeg類型的庫
--with-png-dir:png類型的庫
--with-zlib:網際網路上通用壓縮庫,先壓縮再傳送,減少帶寬
--with-libxml-dir=/usr:xml庫檔案的路徑
--enable-xml:支援xml功能
--enable-sockets:php支援套接字功能 --with-apxs2=/usr/local/apache/bin/apxs:基于apxs實作讓php編譯成apache子產品
--with-mcrypt:支援額外的加密庫
--with-config-file-path=/etc:php配置檔案放置路徑
--with-config-file-scan-dir=/etc/php.d :php配置檔案的分段檔案放置路徑
--with-bz2 :壓縮庫
--enable-maintainer-zts:當apache使用worker或event這兩個MPM,編譯時使用該選項
[root@localhost php-5.4.13]# make
[root@localhost php-5.4.13]# make test
[root@localhost php-5.4.13]# make install
為php提供配置檔案:
[root@localhost php-5.4.13]# cp php.ini-production /etc/php.ini
//php包中提供了配置檔案,把配置檔案重命名為/etc/php.ini,php的配置檔案字尾名是以.ini結尾
<b>3</b><b>、 </b><b>編輯apache</b><b>配置檔案httpd.conf</b><b>,以apache</b><b>支援php</b>
[root@localhost php-5.4.8]# vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
//能夠讓APACHE處理PHP結尾的檔案
2、定位至DirectoryIndex index.html
修改為:
DirectoryIndex index.php index.html
//能讓目錄索引處理php結尾的頁面檔案。在配置檔案中可以根據自己安裝内容啟動相對子產品。比如:SSL子產品等。
[root@localhost php-5.4.13]#cd /usr/local/apache/htdocs/ //進入apache頁面目錄下,把預設頁面修改為php頁面檔案
[root@localhost php-5.4.13]#mv index.html index.php
[root@localhost php-5.4.13]#vim index.php
<html><body><h1>It works! doubao’s test page</h1></body></html>
<?php
phpinfo();
?>
:wq
//儲存退出
[root@localhost htdocs]# service httpd restart //重新開機
//發起php頁面測試
//生成的測試頁面内容對我們還是會有幫助,可以留意一下裡面的内容
<a href="http://blog.51cto.com/attachment/201304/121016648.png" target="_blank"></a>
<b>4 php</b><b>和mysql結合,在index.php頁面檔案中修改一下内容</b>
<html><body><h1>It works! my test page</h1></body></html>
$conn=mysql_connect('localhost','root','');
if ($conn)
echo "<h2>Success...</h2>";
else
echo "<h2>Failure...</h2>";
//儲存退出然後
[root@localhost htdocs]# service httpd restart //重新開機網絡服務
<b> </b>
<a href="http://blog.51cto.com/attachment/201304/121033711.png" target="_blank"></a>
到這裡,一個linux+apache+mysql+php的LAMP已經搭建好了。另外,為LAMP提供加速也有很多機制,如XCahe等等,部落客以後會更新這部分的内容。
本文轉自 陳延宗 51CTO部落格,原文連結:http://blog.51cto.com/407711169/1185226,如需轉載請自行聯系原作者