1. 程式人生 > >LNMP之PHP

LNMP之PHP

端口 vim 編譯php echo 網關 gre 環境 服務器 主機名

PHP

LNMP環境下的PHP安裝

CGI指的是通用網關接口,為HTTP服務器與其他機器上的程序服務通信交流的一種工具,性能差,所以被淘汰了。

FastCGI,是一個可以伸縮、高速的在HTTP服務器和動態腳本語言間通信的接口,在linux下,FastCGI的接口即為socket,這個socket可以是文件socket也可以是IP socket,主要優點是把動態語言和HTTP服務器分離開來。采用的是C/S架構。

PHP安裝前環境準備:nginx和mysql是否啟動

###檢查nginx和MySQL是否在同一個目錄下###
ls -ld /application/mysql/
ls -ld /application/nginx/

###檢查端口啟動情況###
netstat -lntup|grep -E "80|3306"

##測試訪問Nginx和MySQL是否能正常訪問###
wget 192.16.1.41
mysql -uroot -p

###檢查安裝PHP所需的lib庫(開發區有可能需要使用)###
rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
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源安裝包,需要手動安裝)

###安裝libiconv-devel###
mkdir -p /home/oldboy/tools
cd /home/oldboy/tools
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make
make install
cd ../

###安裝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了###

###開始安裝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支持PHP程序請求訪問

###切換到nginx配置目錄下###
cd /application/nginx/conf/
cd extra/

###備份blog.conf###
cp blog.conf blog.conf.oldboy.20160517

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到MySQL是否成功

###編輯簡單的PHP代碼文件test_mysql.php###
cd /application/nginx/html/blog/

vim test_mysql.php

<?php
$link_id=mysql_connect(‘localhost‘,‘root‘,‘oldboy123‘) or mysql_error();
if($link_id) {
echo "mysql sucessful by oldboy !";
}else{
echo mysql_error();
}
?>

###檢查是否成功####
web輸入blog.etiantian.org/test_mysql.php,如果頁面返回mysql successful by oldboy !(返回信息由test_mysql.php定義的為準)即為成功!

LNMP之PHP