一、什么是FastCGI FastCGI是一個(gè)可伸縮、高速在HTTP server和動(dòng)態(tài)腳本語(yǔ)言之間的一個(gè)通信接口.大多數(shù)的HTTP server都支持FastCGI,比如:Nginx Aapache lighttpd等..FastCGI被很多語(yǔ)言所支持。其中就有PHP. 二、Nginx+FastCGI運(yùn)行原理 (1)Nginx不支持對(duì)外程序的直接調(diào)用或者解析,所有的外包程序(包括PHP)都必須通過(guò)FastCGI來(lái)調(diào)用 (2)FastCGI接口在Linux下面可以(socket文件的方式存在,那么可以IP), (3)為了調(diào)用CGI程序,還需要一個(gè)FastCGI的wrapper,當(dāng)Nginx發(fā)送CGI的請(qǐng)求給這個(gè)socket的時(shí)候。通過(guò)FastCGI接口wrapper接受到的請(qǐng)求,然后派生出一個(gè)新的線程,這個(gè)線程調(diào)用外部程序或者腳本讀卻返回?cái)?shù)據(jù). 最后wrapper在將返回的數(shù)據(jù)通過(guò)FastCGI接口,沿著固定的socket傳遞給Nginx,最后返回給數(shù)據(jù)發(fā)送的客戶端. Nginx-->發(fā)送一個(gè)CGI請(qǐng)求-->FastCGI(warpper)接收到這個(gè)請(qǐng)求--->派生出一個(gè)新的線程--->調(diào)用外部程序或者腳本返回?cái)?shù)據(jù)--->wrapper將數(shù)據(jù)沿著固定的socket傳遞給Nginx-->由Nginx在把這個(gè)數(shù)據(jù)返回給用戶. 三、PHP與PHP-FPM的安裝與優(yōu)化 PHP-FPM也是第三方的FastCGI的進(jìn)程管理,它作為PHP補(bǔ)丁一起開(kāi)發(fā),編寫(xiě)的時(shí)候跟著一起編譯到PHP內(nèi)核當(dāng)中,PHP-FPM在處理高并發(fā)的方面非常的優(yōu)秀.它的一個(gè)有點(diǎn)呢:就是把動(dòng)態(tài)語(yǔ)言和HTTP server分離開(kāi)來(lái)(動(dòng)靜分離),Http server主要處理靜態(tài)請(qǐng)求,PHP-FPM處理動(dòng)態(tài)請(qǐng)求。 所有呢 PHP/PHP-FPM 和Nginx經(jīng)常組合到一塊安裝到一臺(tái)機(jī)器上,以滿足業(yè)務(wù)需求. 四、首先安裝Mysql (1)首先安裝Mysql數(shù)據(jù)庫(kù),PHP在編譯的時(shí)候需要mysql的一個(gè)配置 這樣PHP遠(yuǎn)程鏈接Mysql才有用 # cd /data/soft/ # tar xf mysql-5.1.49.tar.gz -C tmp/ # cd tmp/mysql-5.1.49/ #CONFOPTS=" \ --with-charset=utf8 \ --with-plugins=partition,federated,innobase,myisam \ --enable-static \ --enable-assembler \ --enable-thread-safe-client \ --with-client-ldflags=-all-static-ltinfo \ --with-mysqld-ldflags=-all-static-ltinfo \ --with-big-tables \ --with-mysqld-user=mysql \ --without-debug \ --without-ndb-debug \ --localstatedir=/usr/local/services/mysql-5.1.49/var \ --prefix=/usr/local/services/mysql-5.1.49 \ " #./configure $CONFOPTS >/dev/null # make >/dev/null && make install >/dev/null 五、安裝PHP的依賴(lài)庫(kù) ①libxml2-2.7.7.tar.gz # cd /data/soft/ #tar xf libxml2-2.7.7.tar.gz –C tmp/ # cd tmp/libxml2-2.7.7/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null ②curl-7.21.4.tar.gz # cd /data/soft/ # tar xf curl-7.21.4.tar.gz -C tmp/ # cd tmp/curl-7.21.4/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null ③jpegsrc.v8b.tar.gz # cd /data/soft/ #tar xf jpegsrc.v8b.tar.gz –C tmp/ #cd tmp/jpeg-8b/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null ④libpng-1.4.3.tar.gz # cd /data/soft/ # tar xf libpng-1.4.3.tar.gz -C tmp/ # cd tmp/libpng-1.4.3/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null ⑤freetype-2.4.1.tar.gz # cd /data/soft/ # tar xf freetype-2.4.1.tar.gz -C tmp/ # cd tmp/freetype-2.4.1/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null ⑥libevent-2.0.10-stable.tar.gz # cd /data/soft/ # tar xf libevent-2.0.10-stable.tar.gz –C tmp/ # cd tmp/libevent-2.0.10-stable/ #./configure --prefix=/usr/local/services --disable-debug-mode >/dev/null #make >/dev/null && make install >/dev/null ⑦re2c-0.13.5.tar.gz # cd /data/soft/ # tar xf re2c-0.13.5.tar.gz -C tmp/ # cd tmp/re2c-0.13.5/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null ⑧l(xiāng)ibmcrypt-2.5.8.tar.gz # cd /data/soft/ # tar xf libmcrypt-2.5.8.tar.bz2 -C tmp/ # cd tmp/libmcrypt-2.5.8/ #./configure --prefix=/usr/local/services >/dev/null #make >/dev/null && make install >/dev/null # cd libltdl/ # ./configure --prefix=/usr/local/services --enable-ltdl-install >/dev/null #make >/dev/null && make install >/dev/null 六、安裝PHP的依賴(lài)庫(kù) wget http://php.net/distributions/php-5.3.13.tar.gz php-5.3.13.tar.gz # cd /data/soft/ # tar xf php-5.3.13.tar.gz -C tmp/ #cd tmp/php-5.3.13/ #CONFOPTS=" --enable-zend-multibyte \ --enable-mbstring \ --enable-sockets \ --enable-pdo \ --enable-zip \ --enable-fpm \ --with-gd \ --with-fpm-user=user_00 \ --with-fpm-group=user_00 \ --with-zlib \ --with-config-file-path=/usr/local/services/php-5.3.13/etc \ --with-libxml-dir=/usr/local/services \ --with-curl=/usr/local/services \ --with-png-dir=/usr/local/services \ --with-jpeg-dir=/usr/local/services \ --with-freetype-dir=/usr/local/services \ --with-mysql=/usr/local/services/mysql \ --with-pdo-mysql=/usr/local/services/mysql \ --with-mysqli=/usr/local/services/mysql/bin/mysql_config \ --prefix=/usr/local/services/php-5.3.13 \ " # ./configure $CONFOPTS # make >/dev/null && make install >/dev/null 編譯錯(cuò)誤解決: /var/lib/mysql/mysql.sock configure: error: Cannot find libmysqlclient under /usr. Note that the MySQL client library is not bundled anymore! 解決方法: cp -rp /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so 七、安裝PHP的擴(kuò)展模塊 ①eaccelerator-0.9.6.1.tar.bz2 # cd /data/soft/ #tar xf eaccelerator-0.9.6.1.tar.bz2 -C tmp/ #cd tmp/eaccelerator-0.9.6.1/ #/usr/local/services/php-5.3.13/bin/phpize #./configure --prefix=/usr/local/services/eaccelerator-0.9.6.1 --enable-eaccelerator --with-php-config=/usr/local/services/php-5.3.13/bin/php-config > /dev/null #make >/dev/null && make install >/dev/null #mkdir /tmp/eaccelerator #chmod 777 /tmp/eaccelerator ②memcached-1.4.13.tar.gz (服務(wù)器端要前安裝,下面的編譯擴(kuò)展模塊要用到) # cd /data/soft/ #tar xf memcached-1.4.13.tar.gz -C tmp/ # cd tmp/memcached-1.4.13/ #./configure --enable-64bit --with-libevent=/usr/local/services --prefix=/usr/local/services/memcached-1.4.13 >/dev/null # make >/dev/null && make install >/dev/null ③libmemcached-0.48.tar.gz # cd /data/soft/ #tar xf libmemcached-0.48.tar.gz -C tmp/ #cd tmp/libmemcached-0.48/ #CONFOPTS=" --disable-libinnodb --without-libinnodb-prefix --with-libevent-prefix=/usr/local/services --with-memcached=/usr/local/services/memcached-1.4.13/bin/memcached --prefix=/usr/local/services " #./configure $CONFOPTS >/dev/null #make >/dev/null && make install >/dev/null ④igbinary-1.0.2.tgz # cd /data/soft/ # tar xf igbinary-1.0.2.tar.gz -C tmp/ #cd tmp/igbinary-1.0.2/ #/usr/local/services/php-5.3.13/bin/phpize #./configure --enable-igbinary --with-php-config=/usr/local/services/php-5.3.13/bin/php-config >/dev/null #make >/dev/null && make install >/dev/null ⑤memcache-3.0.5.tgz # cd /data/soft/ # tar xf memcache-3.0.5.tgz -C tmp/ #cd tmp/memcache-3.0.5/ #/usr/local/services/php-5.3.13/bin/phpize #CONFOPTS=" \ --enable-memcache \ --with-php-config=/usr/local/services/php-5.3.13/bin/php-config \ " #./configure $CONFOPTS >/dev/null #make >/dev/null && make install >/dev/null ⑥memcached-1.0.2.tgz(注意安裝的順序,igbinary-1.1.1.tgz是依賴(lài)庫(kù)) # cd /data/soft/ # tar xf memcached-1.0.2.tgz -C tmp/ # cd tmp/memcached-1.0.2/ #/usr/local/services/php-5.3.13/bin/phpize #CONFOPTS=" \ --enable-memcached \ --enable-memcached-igbinary \ --enable-memcached-json \ --with-libmemcached-dir=/usr/local/services \ --with-php-config=/usr/local/services/php-5.3.13/bin/php-config \ --prefix=/usr/local/services \ " #./configure $CONFOPTS >/dev/null #make >/dev/null && make install >/dev/null ⑦owlient-phpredis-2.1.1-1-g90ecd17.tar.gz # cd /data/soft/ #tar xf owlient-phpredis-2.1.1-1-g90ecd17.tar.gz -C tmp/ # cd tmp/owlient-phpredis-90ecd17/ #/usr/local/services/php-5.3.13/bin/phpize #./configure --with-php-config=/usr/local/services/php-5.3.13/bin/php-config >/dev/null #make >/dev/null && make install >/dev/null 九、拷貝配置文件: # cd /usr/local/services/php-5.3.13/etc # cp php-fpm.conf.default php-fpm.conf # cp /soft/php/php-5.3.13/php.ini-production php.ini 1.PHP配置文件優(yōu)化與調(diào)整 1.在php-fpm.conf 里面調(diào)整. ;listen = 127.0.0.1:9000 listen = /tmp/php-cgi.tuge.sock #以socke的方式訪問(wèn).注視掉.ip端口的方式. ; Default Value: log/php-fpm.log error_log = /data/php_log/tuge.php.error #根據(jù)不同的項(xiàng)目名.定義不同的.sock 和日志. # 調(diào)整進(jìn)程數(shù)量 pm.max_children:靜態(tài)方式下開(kāi)啟的php-fpm進(jìn)程數(shù)量。 pm.start_servers:動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量。 pm.min_spare_servers:動(dòng)態(tài)方式下的最小php-fpm進(jìn)程數(shù)量。 pm.max_spare_servers:動(dòng)態(tài)方式下的大php-fpm進(jìn)程數(shù)量。 2.在php.ini 加入擴(kuò)展模塊. 在尾部添加: [eaccelerator] zend_extension="/usr/local/services/php-5.3.13/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so " eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9" 擴(kuò)展模塊增加 extension = memcached.so extension = redis.so extension = memcache.so extension = igbinary.so 十、啟動(dòng)PHP-FPM #cd ../sbin #./php-fpm 十一、Nginx配置文件調(diào)整 #vim /usr/local/services/nginx-0.8.55/conf/vhost/vhost.zhangyi.com #可以指定多個(gè)localtion進(jìn)行不同的指令處理,這里是指定php的sock location ~ \.php$ { fastcgi_pass unix:/tmp/php-cgi.zhangyi.sock; #修改這里 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SERVER_NAME $http_host; fastcgi_ignore_client_abort on; } 十二、重啟Nginux #cd /usr/local/services/nginx-0.8.55/sbin #./nginx -s reload 十三、測(cè)試 #cd /data/www #mv index.html index.php #vim index.php <?php phpinfo(); ?> 在firefox瀏覽器上登錄目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、華容網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)題目:FastCGI(PHP)-創(chuàng)新互聯(lián)
當(dāng)前地址:http://jinyejixie.com/article44/csdiee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、商城網(wǎng)站、企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容