LNMP之PHP
Posted LEO00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP之PHP相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章