CGI指的是通用網關接口,爲HTTP服務器與其餘機器上的程序服務通訊交流的一種工具,性能差,因此被淘汰了。php
FastCGI,是一個能夠伸縮、高速的在HTTP服務器和動態腳本語言間通訊的接口,在linux下,FastCGI的接口即爲socket,這個socket能夠是文件socket也能夠是IP socket,主要優勢是把動態語言和HTTP服務器分離開來。採用的是C/S架構。html
###檢查nginx和MySQL是否在同一個目錄下###
ls -ld /application/mysql/
ls -ld /application/nginx/mysql
###檢查端口啓動狀況###
netstat -lntup|grep -E "80|3306"linux
##測試訪問Nginx和MySQL是否能正常訪問###
wget 192.16.1.41 #(查看Nginx,wget本身的Nginx主機IP)
mysql -uroot -pnginx
###檢查安裝PHP所需的lib庫(開發區有可能須要使用)###
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel -y
rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel
rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
(因爲libiconv-devel沒有yum源安裝包,須要手動安裝)web
###安裝libiconv-devel###
mkdir -p /home/syz/tools
cd /home/syz/tools
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gzsql
cd libiconv-1.14數據庫
./configure --prefix=/usr/local/libiconv
make
make installvim
cd ../windows
###安裝PHP相關的擴展庫(動態加載庫libmcrypt-devel,加密擴展庫mhash、mcrypt,都是開發所需)####
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo(安裝第三方源倉庫)
yum -y install libmcrypt-devel
yum -y install mhash
yum -y install mcrypt
rpm –qa libmcrypt-devel mhash mcrypt
###開始安裝PHP###
cd /application/mysql/tools
rz -y
php-5.5.32.tar.gz
tar xf php-5.5.32.tar.gz
###編譯安裝###
cd php-5.5.32
./configure \
--prefix=/application/php5.5.32 \ #(安裝PHP路徑)
--with-mysql=/application/mysql/ \ #(安裝mysql路徑)
--with-pdo-mysql=mysqlnd \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-fpm \ #(激活fastCGI進程)
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-short-tags \
--enable-static \
--with-xsl \
--with-fpm-user=www \ #(注意和主機名一致)
--with-fpm-group=www \ #(注意和主機名一致)
--enable-ftp \
--enable-opcache=no
echo $? #(輸出結果爲0表示安裝正確)
注意:在非一體的LNMP環境(即Nginx和Mysql不在同一臺機器上),編譯PHP環境時,也是須要Mysql數據庫環境的,可是高版本的PHP,例如5.3版本以上,內置了PHP須要的Mysql程序,所以該版本就不須要在Nginx服務器上安裝Mysql軟件了,只須要在編譯PHP時指定相關的參數便可,這個PHP編譯參數爲--with-mysql=mysqlnd,表示PHP程序在編譯時會調用內置的Mysql的庫。(若是以上安裝錯誤可使用--with-mysql=mysqlnd替代--with-mysql=/application/mysql/,而後從新嘗試安裝)
###修改操做,爲了解決5.3版本的bug,其餘PHP版本能夠不加###
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
make
make install
echo $? #(輸出結果爲0表示安裝正確)
###作軟連接###
ln -s /application/php5.5.32/ /application/php
ls /application/php/
###PHP的兩個生產環境(引擎配置文件)###
cp php.ini-production /application/php/lib/php.ini
#(若是編譯的時候沒有指定php.ini(解析文件)的路徑,通常默認在安裝目錄/application/php/lib/下)
#將默認的php-fpm.conf.default改成正式的文件名php-fpm.conf(fastcgi配置文件)
cd /application/php/etc/
cp php-fpm.conf.default php-fpm.conf
###啓動PHP程序(php-fpm)###
/application/php/sbin/php-fpm
lsof -i :9000
ps -ef|grep php-fpm
###切換到nginx配置目錄下###
cd /application/nginx/conf/
cd extra/
###備份blog.conf###
cp blog.conf blog.conf.beifen
vim blog.conf
server {
listen 80;
server_name blog.etiantian.org;
location / {
root html/blog;
index index.html index.htm;
}
location ~ .*\.(php|php5)?$ {
root html/blog;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
###檢查語法重啓###
../../sbin/nginx -t
../../sbin/nginx -s reload
###定義PHP測試代碼文件test_info.php(這個文件查當作功後,就刪除,很危險)###
cd /application/nginx/html/blog/
vim test_info.php
<?php
phpinfo();
?>
cat test_info.php
###檢查是否成功(記得首先得在windows下定義hosts)###
用ping blog.etiantian.org
打開web網址,輸出blog.etiantian.org/test_info.php,出現php界面,表示Nginx到PHP的路通了,可是到數據庫(Mysql)還需驗證
###編輯簡單的PHP代碼文件test_mysql.php###
cd /application/nginx/html/blog/
vim test_mysql.php
<?php
$link_id=mysql_connect('localhost','root','syz123') or mysql_error();
if($link_id) {
echo "mysql sucessful by syz !";
}else{
echo mysql_error();
}
?>
###檢查是否成功####web輸入blog.etiantian.org/test_mysql.php,若是頁面返回mysql successful by syz !(返回信息由test_mysql.php定義的爲準)即爲成功!