一、PHP在Apache中有三種工作方式:
10年積累的成都做網(wǎng)站、成都網(wǎng)站設計經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先做網(wǎng)站設計后付款的網(wǎng)站建設流程,更有耀州免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
Apache模塊:
模塊模式是以mod_php5模塊的形式集成,此時mod_php5模塊的作用是接收Apache傳遞過來的PHP文件請求,并處理這些請求,然后將處理后的結(jié)果返回給Apache。Apache的模塊可以在運行的時候動態(tài)裝載,這意味著對服務器可以進行功能擴展而不需要重新對源代碼進行編譯,甚至根本不需要停止服務器;但是在動態(tài)加載之前,需要將模塊編譯成為動態(tài)鏈接庫。此時的動態(tài)加載就是加載動態(tài)鏈接庫。 Apache中對動態(tài)鏈接庫的處理是通過模塊mod_so來完成的,因此mod_so模塊不能被動態(tài)加載,它只能被靜態(tài)編譯進Apache的核心,這意味著它是隨著Apache一起啟動的。
CGI模式:
每當客戶端請求動態(tài)資源的時候,WEB服務器就請求操作系統(tǒng)生成一個新的CGI解釋器進程,CGI 的一個進程則處理完一個請求后退出,下一個請求來時再創(chuàng)建新進程。當然,這樣在訪問量很少沒有并發(fā)的情況也行。可是當訪問量增大,并發(fā)存在,這種方式就不適合了。
FPM模式:
PHP-FPM是一個簡單可靠的 FastCGI 進程管理器(FastCGI Process Manager),Apache 官方網(wǎng)站也提供了配置 Apache httpd 2.4.x 使用 mod_proxy_fcgi 和 PHP-FPM 運行 php 程序的基本方法和設置運行方式的介紹。
PHP-FPM 就意味著不用 Apache 內(nèi)置的 mod_php,也就是要在 Apache 之外處理 php 程序的解釋運行問題??雌饋硎嵌嘁肓艘粋€額外的程序 PHP-FPM,既占 CPU 又占內(nèi)存。但是這樣一來,因為 Apache 可以專心處理除 php 之外的靜態(tài)網(wǎng)頁及元素,反而 httpd 進程本身占用的 CPU 和內(nèi)存可以顯著降低,從而從整體上降低資源消耗。
PHP-FPM 監(jiān)聽方式(接收 Apache 轉(zhuǎn)過去的處理 PHP 的請求的方式)有 2 種:
TCP socket (IP和port), Listen IP地址:9000
Unix Domain Socket(UDS),通常路徑指明socket的位置/path/to/unix/socket
二、LAMP編譯安裝過程
測試環(huán)境:CentOS 6.6---ip:192.168.1.100
用到的軟件安裝包為:
安裝順序:httpd-->mariadb-->php-->phpMyAdmin-->xcache
安裝前準備:1、iptables關閉 //對防火墻規(guī)則設置熟悉可忽略
2、將selinux設置為disabled
2.1、編譯安裝apache
1、解決依賴關系
httpd-2.4.10需要較新版本的apr-1.4+和apr-util-1.4+,而centos6.6系統(tǒng)的apr和apr-util版本是1.39的,因此需要事先對其進行升級
(1)安裝apr
[root@localhost ~]# tar xf apr-1.5.0.tar.bz2 [root@localhost ~]# cd apr-1.5.0 [root@localhost apr-1.5.0]# ./configure --prefix=/usr/local/apr [root@localhost apr-1.5.0]# make && make install
(2)安裝apr-util
[root@localhost ~]# tar xf apr-util-1.5.3.tar.bz2 [root@localhost ~]# cd apr-util-1.5.3 [root@localhost apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@localhost apr-util-1.5.3]# make && make install
2、 httpd-2.4.10編譯過程也要依賴于pcre-devel軟件包,需要事先安裝
[root@localhost ~]# yum install -y pcre-devel [root@localhost ~]#tar xf httpd-2.4.10.tar.bz2 [root@localhost httpd-2.4.10]# cd httpd-2.4.10 [root@localhost httpd-2.4.10]#./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewriter --with-pcre --with-z --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event [root@localhost httpd-2.4.10]# make && make install [root@localhost ~]# vim /etc/profile.d/httpd24.sh i[root@localhost ~]# . /etc/profile.d/httpd24.sh export PATH=/usr/local/apache/bin:$PATH [root@localhost ~]# vim /etc/httpd24/httpd.conf ServerName 192.168.1.100:80 [root@localhost ~]# apachectl start
3、為編譯安裝的httpd-2.4提供腳本,可參考rpm包安裝httpd服務腳本,做如下修改即可:
[root@localhost ~]# vim /etc/init.d/httpd24
[root@localhost ~]# chmod +x /etc/init.d/httpd24
# 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 //apachectl所在位置 httpd=${HTTPD-/usr/local/apache/bin/httpd} //httpd所在位置 prog=httpd pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid} //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 |
2.2、通用二進制包安裝mariadb(MySQL)
1、準備數(shù)據(jù)存放的文件系統(tǒng); 假設其邏輯卷的掛載目錄為/mydata,而后需要創(chuàng)建/mydata/data目錄做為mysql數(shù)據(jù)的存放目錄。
[root@localhost ~]# partx -a /dev/sda5
[root@localhost ~]# yum install -y lvm2 [root@localhost ~]# pvcreate /dev/sda5 [root@localhost ~]# vgcreate vg0 /dev/sda5 [root@localhost ~]# lvcreate -L 8G -n mylv vg0
[root@localhost ~]# mkfs.ext4 /dev/vg0/mylv [root@localhost ~]# vim /etc/fstab /dev/vg0/mylv /mydata/data ext4 defaults 0 0 [root@localhost ~]# mkdir -pv /mydata/data mkdir: created directory `/mydata' mkdir: created directory `/mydata/data'
2、新建用戶以安全方式運行進程:
[root@localhost ~]# groupadd -r mysql [root@localhost ~]# useradd -r -g mysql -d /mydata/data mysql [root@localhost ~]# chown -R mysql.mysql /mydata/data/
3、安裝mysql并初始化
[root@localhost ~]# tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# ln -sv mariadb-5.5.43-linux-x86_64 mysql `mysql' -> `mariadb-5.5.43-linux-x86_64' [root@localhost local]# cd mysql [root@localhost mysql]# chown root.mysql ./* [root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
4、為mysql提供主配置文件:
[root@localhost mysql]# cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf [root@localhost mysql]# vim /etc/my.cnf thread_concurrency = 4 cpu個數(shù)乘以2 datadir=/mydata/data innodb_file_per_table=on skip_name_resolve=on
5、為mysql提供sysv服務腳本:
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql]# chmod +x /etc/init.d/mysqld
而后就可以啟動服務測試使用了。
為了使用mysql的安裝符合系統(tǒng)使用規(guī)范,并將其開發(fā)組件導出給系統(tǒng)使用,這里還需要進行如下步驟:
6、輸出mysql的man手冊至man命令的查找路徑:
[root@localhost ~]# vim /etc/man.config MANPATH /usr/local/mysql/man/
7、輸出mysql的頭文件至系統(tǒng)頭文件路徑/usr/include:
這可以通過簡單的創(chuàng)建鏈接實現(xiàn):
[root@localhost ~]# ln -sv /usr/local/mysql/include /usr/include/mysql `/usr/include/mysql' -> `/usr/local/mysql/include'
8、輸出mysql的庫文件給系統(tǒng)庫查找路徑:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而后讓系統(tǒng)重新載入系統(tǒng)庫:# ldconfig
9、修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用mysql的相關命令。
[root@localhost ~]# vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH [root@localhost ~]# . /etc/profile.d/mysql.sh
2.3、編譯安裝php
1、解決依賴關系:
[root@localhost ~]# yum groupinstall -y "Development tools" "Server Platform Development" [root@localhost php-5.4.40]# yum install -y libxml2-devel [root@localhost php-5.4.40]# yum install bzip2-devel -y [root@localhost ~]# yum localinstall libmcrypt-2.5.7-1.2.el6.rf.x86_64.rpm [root@localhost ~]# yum localinstall libmcrypt-devel-2.5.7-1.2.el6.rf.x86_64.rpm
2、編譯安裝php-5.4.40
[root@localhost php-5.4.40]# ./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 [root@localhost php-5.4.40]#make && make install 說明: 1、這里為了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。 2、為php提供配置文件: [root@localhost php-5.4.40]# cp php.ini-production /etc/php.ini
3、 編輯apache配置文件httpd.conf,以apache支持php
[root@localhost ~]# cp /etc/httpd24/httpd.conf{,.bak} [root@localhost ~]# vim /etc/httpd24/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
而后重新啟動httpd,測試mysql和php是否已經(jīng)可以正常使用。
//測試代碼
看到上圖說明測試正常!!
2.4、安裝phpMyAdmin對mariadb基于圖形界面的方式進行管理
[root@localhost ~]# unzip phpMyAdmin-4.0.5-all-languages.zip [root@localhost ~]# cp -r phpMyAdmin-4.0.5-all-languages /usr/local/apache/htdocs/ [root@localhost ~]# cd /usr/local/apache/htdocs/ [root@localhost htdocs]# ln -sv phpMyAdmin-4.0.5-all-languages pma [root@localhost ~]# mysql_secure_installation //給root設置密碼,刪除匿名用戶
使用ab命令進行壓力測試,如下圖所示
三、安裝xcache,為php加速
1、安裝xcache
[root@localhost ~]# tar xf xcache-3.2.0.tar.bz2 [root@localhost ~]# cd xcache-3.2.0 [root@localhost xcache-3.2.0]# /usr/local/php/bin/phpize [root@localhost xcache-3.2.0]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config [root@localhost xcache-3.2.0]# make && make install 安裝結(jié)束時,會出現(xiàn)類似如下行:
2、編輯xcache.ini,整合php和xcache:
首先將xcache提供的樣例配置導入
[root@localhost xcache-3.2.0]# mkdir /etc/php.d [root@localhost xcache-3.2.0]# cp xcache.ini /etc/php.d [root@localhost xcache-3.2.0]# vim /etc/php.d/xcache.ini [root@localhost xcache-3.2.0]# service httpd24 reload //編輯后,重啟httpd服務
出現(xiàn)上圖說明php以加速,接下來再使用ab進行同樣測試,對比效果很明顯
至此~ php以模塊的方式結(jié)合apache工作介紹完畢??!
下次講解php以fpm的方式結(jié)合apache工作,請期待??!
文章題目:LAMP編譯介紹一、php以模塊化的方式結(jié)合apache工作
分享路徑:http://bm7419.com/article20/pcsijo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、網(wǎng)站排名、、ChatGPT、電子商務、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)