中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

發布時間:2020-07-02 17:12:20 來源:網絡 閱讀:2018 作者:bengbengtu1 欄目:web開發

一、PHP在Apache中有三種工作方式:

Apache模塊:

    模塊模式是以mod_php5模塊的形式集成,此時mod_php5模塊的作用是接收Apache傳遞過來的PHP文件請求,并處理這些請求,然后將處理后的結果返回給Apache。Apache的模塊可以在運行的時候動態裝載,這意味著對服務器可以進行功能擴展而不需要重新對源代碼進行編譯,甚至根本不需要停止服務器;但是在動態加載之前,需要將模塊編譯成為動態鏈接庫。此時的動態加載就是加載動態鏈接庫。 Apache中對動態鏈接庫的處理是通過模塊mod_so來完成的,因此mod_so模塊不能被動態加載,它只能被靜態編譯進Apache的核心,這意味著它是隨著Apache一起啟動的。


CGI模式:

     每當客戶端請求動態資源的時候,WEB服務器就請求操作系統生成一個新的CGI解釋器進程,CGI 的一個進程則處理完一個請求后退出,下一個請求來時再創建新進程。當然,這樣在訪問量很少沒有并發的情況也行。可是當訪問量增大,并發存在,這種方式就不適合了。


FPM模式:

     PHP-FPM是一個簡單可靠的 FastCGI 進程管理器(FastCGI Process Manager),Apache 官方網站也提供了配置 Apache httpd 2.4.x 使用 mod_proxy_fcgi 和 PHP-FPM 運行 php 程序的基本方法和設置運行方式的介紹。

     PHP-FPM 就意味著不用 Apache 內置的 mod_php,也就是要在 Apache 之外處理 php 程序的解釋運行問題。看起來是多引入了一個額外的程序 PHP-FPM,既占 CPU 又占內存。但是這樣一來,因為 Apache 可以專心處理除 php 之外的靜態網頁及元素,反而 httpd 進程本身占用的 CPU 和內存可以顯著降低,從而從整體上降低資源消耗。

PHP-FPM 監聽方式(接收 Apache 轉過去的處理 PHP 的請求的方式)有 2 種:

TCP socket (IP和port), Listen IP地址:9000

Unix Domain Socket(UDS),通常路徑指明socket的位置/path/to/unix/socket


二、LAMP編譯安裝過程

測試環境:CentOS 6.6---ip:192.168.1.100

用到的軟件安裝包為:

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

安裝順序:httpd-->mariadb-->php-->phpMyAdmin-->xcache

安裝前準備:1、iptables關閉  //對防火墻規則設置熟悉可忽略

               2、將selinux設置為disabled 


2.1、編譯安裝apache

1、解決依賴關系

httpd-2.4.10需要較新版本的apr-1.4+和apr-util-1.4+,而centos6.6系統的apr和apr-util版本是1.39的,因此需要事先對其進行升級

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

(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

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

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、準備數據存放的文件系統; 假設其邏輯卷的掛載目錄為/mydata,而后需要創建/mydata/data目錄做為mysql數據的存放目錄。

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

[root@localhost ~]# partx -a /dev/sda5

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

[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

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

[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/

LAMP編譯介紹一、 php以模塊化的方式結合apache工作


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個數乘以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

LAMP編譯介紹一、 php以模塊化的方式結合apache工作而后就可以啟動服務測試使用了。

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

為了使用mysql的安裝符合系統使用規范,并將其開發組件導出給系統使用,這里還需要進行如下步驟:

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

[root@localhost ~]# vim /etc/man.config 
MANPATH /usr/local/mysql/man/


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

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

[root@localhost ~]# ln -sv /usr/local/mysql/include /usr/include/mysql
`/usr/include/mysql' -> `/usr/local/mysql/include'


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

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

而后讓系統重新載入系統庫:# ldconfig


9、修改PATH環境變量,讓系統可以直接使用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

LAMP編譯介紹一、 php以模塊化的方式結合apache工作


而后重新啟動httpd,測試mysql和php是否已經可以正常使用。

LAMP編譯介紹一、 php以模塊化的方式結合apache工作   //測試代碼

LAMP編譯介紹一、 php以模塊化的方式結合apache工作


看到上圖說明測試正常!!


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設置密碼,刪除匿名用戶

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

使用ab命令進行壓力測試,如下圖所示

LAMP編譯介紹一、 php以模塊化的方式結合apache工作


三、安裝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
安裝結束時,會出現類似如下行:

LAMP編譯介紹一、 php以模塊化的方式結合apache工作


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服務

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

出現上圖說明php以加速,接下來再使用ab進行同樣測試,對比效果很明顯

LAMP編譯介紹一、 php以模塊化的方式結合apache工作

至此~ php以模塊的方式結合apache工作介紹完畢!!

下次講解php以fpm的方式結合apache工作,請期待!!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛纳斯县| 怀化市| 吉安县| 深泽县| 巨鹿县| 钦州市| 内乡县| 新闻| 什邡市| 额尔古纳市| 阳泉市| 海南省| 姜堰市| 湖北省| 大悟县| 石阡县| 棋牌| 固阳县| 黑山县| 福鼎市| 怀宁县| 衢州市| 怀安县| 康平县| 镇宁| 都匀市| 尉犁县| 铜山县| 博爱县| 灵宝市| 临颍县| 顺平县| 吴旗县| 宝兴县| 肥乡县| 同仁县| 永年县| 阳信县| 大田县| 翁牛特旗| 彝良县|