`

centos(64位) 安装PHP5.6,配置LNMP

阅读更多

下定决心自己整一个LNPM,第一次在Linux上搞开发环境,比win难多了。虚拟机centos6.5,网上搜了一些教程,撸起袖子开干,没想到坑一个接一个,时不时的挂起vpn google一下。好在我终于搞定了。下面整理一下我遇到的坑,以及整个解决过程。

 

第一坑:nginx 下 php  file not found 。

原因:nginx web执行php是通过php-fpm开执行,PHP5.3.3以前的PHP需要单独安装php-fpm补丁包,以后的版本不需要了。正确编译PHP并启动php-fpm即可,同时nginx.conf中配置好就行,重点是SCRIPT_FILENAME  $document_root$fastcgi_script_name;  这个不能写死了,如下:

location ~ \.php$ 

      {     

          #fastcgi_pass  unix:/tmp/php-cgi.sock;

          fastcgi_pass   127.0.0.1:9000;  #fastcgi监听端口,监听php-fpm*/

          fastcgi_index  index.php;

          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

          include        fcgi.conf;       #fastcgi配置文件,修改为以下内容*/

 

      }

 

第二坑: 连接数据库。Fatal error: Call to undefined function mysql_connect() 

由于不知道Linux下PHP各个模块都是需要编译的,第一次安装PHP 根本没在乎./configure 后的参数,从网上拷贝一份直接执行,导致数据库功能一直不成功,折腾了一礼拜。据我能看懂的部分,./configure 参数意义如下:

--prefix=/usr/local/php # 这是php的安装路径

 

--with-mysql=/usr   #这是mysql相关编译路径,这里网上很多都是--with-mysql=/usr/share/mysql,但我这样做,编译完提示一个error,Cannot find MySQL header files under /usr/share/mysql ,经查,有的说是因为64位电脑的原因,此处正确写法是 先 用 find / -name mysql.h  找到mysql.h的路径,然后写该路径的前缀。比如我电脑搜出来路径/usr/include/mysql/mysql.h ,所以前缀是 /usr

 

--with-mysql-sock --with-mysqli=/usr/lib64/mysql/mysql_config  # 这应该是mysqli 编译配置,后面的参数可以 先  find / -name mysql_config,然后填写

 

 

--enable-fpm # 开启php-fpm 功能

 

第三坑:找不到 mysql.h

我是采用 yum install mysql mysql-server 安装mysql,但找不到mysql.h,经查,

还需要 yum install mysql-devel

 

在我解决Fatal error: Call to undefined function mysql_connect()的过程中,想当然的以为php.ini中没开启mysql.so ,于是在php源码下进入cd ext/mysql/,

执行/usr/local/php/bin/phpize

然后编译,

./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/local/mysql/ --with-zlib-dir=/usr/local/lib

这里我试过--with-mysql=/usr/local/mysql/ 和 --with-mysql=/usr

最后在/usr/local/lib/php/extensions/no-debug-non-zts-20090626/中也添加了编译生成的mysql.so,修改php.ini,添加extension=mysql.so,重启php-fpm(备注:修改php.ini后Linux下重启nginx是没有用的,需要重启php-fpm),还是没有解决问题。

 

也许是我方法不对。 最后还是决定重头再来,我删除了mysql、php全部重装。终于好了。

 

下面是安装过程,因为编译PHP需要用到mysql路径,所以必须先安装mysql,有博客写可以通过/usr/local/php/bin/phpize后编译mysql.so,但是我没有成功。为了减少不必要的麻烦,还是先安装mysql,再安装PHP,nginx什么时候安装都可以。

 

 

第一步: mysql

   

 yum install mysql mysql-server   #询问是否要安装,输入Y即可自动安装,直到安装完成

       /etc/init.d/mysqld start   #启动MySQL

       chkconfig mysqld on   #设为开机启动

       cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

       shutdown -r now  #重启系统

 

2、为root账户设置密码

       mysql_secure_installation

       回车,根据提示输入Y

       输入2次密码,回车

       根据提示一路输入Y

 

       最后出现:Thanks for using MySQL!

 

第二步,安装nginx 

       yum install nginx      #安装nginx,根据提示,输入Y安装即可成功安装

       service nginx start     #启动

       chkconfig  nginx on    #设为开机启动

       /etc/init.d/nginx  restart  #重启

       rm -rf /usr/share/nginx/html/*  #删除ngin默认测试页

 

 备注: 以上两个步骤出自 http://www.osyunwei.com/archives/2353.html 

 

 

如果觉得yum安装的版本不是最新的,可以在nginx官网下载安装包,然后手动安装。方法如下:

在目录 /usr/local/src/nginx-1.7.5.tar.gz

 tar zxvf nginx-1.7.5.tar.gz

cd nginx-1.7.5
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --without-http_rewrite_module --with-http_ssl_module --with-pcre

 

注意: --user=nginx --group=nginx 这是运行nginx的组和用户,没有通过add添加


make && make install


#启动nginx,nginx启动成功。
/usr/local/nginx/sbin/nginx -s reload
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx  //建立nginx命令软连接

//接下来修改nginx配置文件,根据需要修改对应文件
vim nginx.conf

 

注意修改user nginx;  去掉;

 

第三步:安装 PHP

 

1.安装php需要用的组件,包括图片、邮件、xml、mbstring等等,最主要的包括php-fpm

我参考了两篇博客,写的组件内容不一样,我把两篇博客的组件内容做了并集,也不一定完整,但更详细,用yum安装,如下:

 

yum install -y gcc gcc-c++ autoconf php-mysql php-gd libjpeg libjpeg-devel php-imap php-ldap php-odbc php-pear php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses curl openssl-devel gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel php-fpm

 

2.安装php 同nginx安装,可以用 yum install php ,也可以自己下载安装包,我下载的是php-5.6.5.tar.gz,放在/usr/local/src/ 下

 

tar zxvf php-5.6.5.tar.gz

cd php-5.6.5

 

./configure --prefix=/usr/local/php --with-mysql=/usr --with-mysql-sock --with-mysqli=/usr/lib64/mysql/mysql_config --enable-fpm --with-ncurses --enable-soap --with-libxml-dir --with-XMLrpc --with-openssl --with-mcrypt --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --disable-mbregex --disable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-pdo-mysql --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sqlite-utf8 --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear

 

注意: 如果编译出现了error,就不要在执行make了,先把error解决了。 我在这一步就出现了mysql相关的error信息,然后我把 --with-mysql=/usr/local/mysql改为 --with-mysql=/usr(即mysql.h目录前缀,没有mysql.h参考前文安装)

 

make && make install

 

Build complete.

Don't forget to run 'make test'.

 

cp /usr/local/php/etc/php-fpm.conf.default php-fpm.conf

//复制一份并重命名

 

/usr/local/php/sbin/php-fpm

//启动php-fpm

 

修改FPM 配置文件php-fpm.conf  

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

去掉分号,参数值根据自己的需要设置,这只是推荐值

 

ln -s /usr/local/php/sbin/php-fpm /bin/php-fpm  

添加php-fpm 命令

 

cp /usr/local/src/php/php.ini-producsion /usr/local/php/lib/php.ini

注意:cp这一步非必须。在我第二次安装php的时候,make命令后等待时间非常长,大概是我前一次安装时间长度的4、5倍,所以我怀疑第一次安装php好多模块啥的都没安装上,这次安装完之后查看phpinfo(),显示的信息也多了不少,其中php.ini显示在/etc/目录下,并不需要从php目录中拷贝,是安装生成的,而且,php.ini也没有mysql.so,但mysql功能是开启的,所以也是编译、安装自动的,只需要在安装php的时候把编译参数、组件安装全即可。

 

 

至此,配置nginx.conf 的 local / php 参数,重启nginx、重启mysql、重启php-fpm 

 

大功告成

 

 

 参考博客:

 

http://www.aichengxu.com/view/35376 

 

http://www.osyunwei.com/archives/2353.html

 

分享到:
评论

相关推荐

    centos5.5(5.6)最新lnmp安装步骤(php5.3.6+ng1.0.0+mysql5.5.12)

    在探讨CentOS 5.5(或5.6)上最新LNMP(Linux, Nginx, MySQL, PHP)环境的安装步骤时,我们聚焦于特定版本:PHP 5.3.6、Nginx 1.0.0以及MySQL 5.5.12。以下是对这些组件安装流程的深入解析,旨在为系统管理员和...

    CentOS 7配置LNMP开发环境及配置文件管理详解

    在Linux系统中,CentOS 7是一个...总结来说,配置CentOS 7上的LNMP环境涉及多个步骤,包括安装MySQL 5.6、PHP 5.6和Nginx,以及管理相关的配置文件。正确地完成这些步骤将为开发者提供一个稳定且高效的Web开发环境。

    CentOS 6.5 32-64,支持lamp和lnmp,MySQL支持5.1和5.6,PHP支持5.3和

    CentOS 6.5 32-64,支持lamp和lnmp,MySQL支持5.1和5.6,PHP支持5.3和5.6,Apache 2.2,nginx 1.8(先安装mysql—]apache-

    lnmp(nginx 1.20.1+mysql5.7+php5.6)环境搭建

    Lnmp(nginx 1.20.1+mysql5.7+php5.6)环境搭建 lnmp环境是指Nginx、MySQL和PHP三个组件的组合,用于搭建动态网站服务器。本文将详细介绍如何在CentOS 7.6上安装和配置Lnmp环境。 一、安装nginx 1.20.1 首先,需要...

    lnmp: php7.1+nginx1.11+mysql5.6+yaf+redis

    1. 安装Linux操作系统,如Ubuntu或CentOS。 2. 更新系统并安装必要的编译工具和依赖库。 3. 下载并编译安装Nginx、MySQL、PHP7.1、Yaf和Redis的源码。 4. 配置Nginx以支持PHP处理,通过fastcgi_pass指令连接到...

    编译安装PHP7+LNMP+扩展技术文档

    通过以上步骤,您已经成功地在 Linux 系统上安装了 PHP7+LNMP 环境,并配置了 MySQL、Nginx 和 PHP 的相关扩展。这为构建现代 Web 应用提供了强大的基础平台。在整个过程中,需要注意每一步的细节,确保所有组件都...

    Centos LNMP安装.pdf

    首先,确认系统环境,这里是基于内核2.6.32,CentOS 6.4的64位系统,IP地址为192.168.2.103。 为了顺利安装LNMP环境,首先需要配置本地YUM源,挂载光盘并创建repo文件。这一步是为了确保在后续的编译安装过程中能...

    CentOS6.5 编译安装lnmp环境

    本篇文章将详细介绍如何在CentOS 6.5上通过编译安装的方式配置LNMP环境。 首先,我们需要确保系统已经安装了必要的编译工具和依赖库。在CentOS 6.5上,可以使用`yum`命令来安装这些基本的开发工具,例如: ```bash...

    lnmp源码编译安装脚本(centos6.5+)part4

    支持ssl,curl开启ssl支持,环境为nginx1.8.1+php5.6+mysql5.5,使用时请在根目录创建一个data目录,然后将源码包以及shell脚本复制到该目录,给install*文件可执行权限,然后依次执行对应脚本文件即可。

    LNMP环境一件安装脚本

    需要centos6.5+ 安装的环境为php5.6,mysql 5.6,nginx1.10,新机环境完全配置

    在lnmp环境下搭建cacti

    本文详细介绍了在LNMP环境下搭建Cacti的过程,包括MySQL和PHP-FPM的编译安装,以及Cacti本身的安装配置。通过遵循上述步骤,可以成功实现对网络设备和服务器的监控。此外,还针对安装过程中可能遇到的一些常见问题...

    CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    在开始部署 LNMP(Linux+Nginx+MySQL+PHP)环境之前,首先需要对 CentOS 7.0 系统进行必要的环境配置。 **1. 配置防火墙** - **关闭firewall服务:** - `systemctl stop firewalld.service` 停止firewall服务 - ...

    lnmp源码编译安装脚本(centos6.5+)part5

    支持ssl,curl开启ssl支持,环境为nginx1.8.1+php5.6+mysql5.5,使用时请在根目录创建一个data目录,然后将源码包以及shell脚本复制到该目录,给install*文件可执行权限,然后依次执行对应脚本文件即可。

    ansible-lnmp:在Linux上自动安装LEMP(LNMP)

    系统要求安装此存储库的系统要求如下: 情况细节笔记操作系统CentOS7.x,Amazon Linux2 选修的公有云AWS,Azure,阿里云,华为云,腾讯云选修的私有云KVM,VMware,VirtualBox,OpenStack 选修的服务器配置vCPU不...

    lnmp源码编译安装脚本(centos6.5+)part1

    支持ssl,curl开启ssl支持,环境为nginx1.8.1+php5.6+mysql5.5,使用时请在根目录创建一个data目录,然后将源码包以及shell脚本复制到该目录,给install*文件可执行权限,然后依次执行对应脚本文件即可。

    oneinstack安装多版本PHP

    这篇教程主要介绍了如何在已经安装了oneinstack并部署了PHP 5.6.0的CentOS 7系统上,添加一个新的PHP版本,例如PHP 7.3。下面将详细讲解整个过程。 首先,确认当前系统的PHP版本,这可以通过执行`php -v`或`ps -ax ...

    centos部署LAMP和LNMP资源包

    资源包 mysql-5.6、5.7 cmake-2.8、3.16 httpd-2.4 nginx-1.20 php-5.5 phpMyAdmin-4.7.2 zend-loader-php libmcrypt-2.5.8 mcrypt-2.6.8 mhash-0.9.9.9 boost1-1.59cronolog-1.6.2

Global site tag (gtag.js) - Google Analytics