最近在學習重要的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哦。
我來測試一下。
再接再厲,我們接著裝第二個,mysql服務。
-
安裝前先準備好數據存放的目錄和服務運行的用戶。設置目錄是為了方便以后數據庫的數據管理哈,設置用戶是為了安全。
#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的安裝了。
三.php的安裝
-
安裝依賴軟件包。
若沒有安裝兩個開發包,請先安裝。
另外要安裝bzip2-devel及libmcrypt-devel,后一個是epel的軟件包哈。
#yum -y install bzip2-devel libmcrypt-devel
-
解壓編譯安裝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
看一下測試結果。
作為linux最常用的平臺,我會多練N次直到我能不看文檔就能熟練安裝的,請各位同仁也加油吧
ヽ(.??ˇд ˇ??;)? ヽ(.??ˇд ˇ??;)? ヽ(.??ˇд ˇ??;)?
51CTO發布文章大姨媽了……
原創文章,作者:北京-清虛,如若轉載,請注明出處:http://www.www58058.com/4890
代碼的格式化非常重要,極有利于可視性,標簽的添加有利于seo命中,+u
你好,看文章中的pcre好像不用安裝的,那個應該是nginx才會用到的。