在Centos7服务器上部署PHP项目
前言
第一次动笔写博,虽然前辈们都写了不少,但我还是希望写一遍加深印象,有错误请指正(交流即进步)。
作为一个毕业两年多的java程序员,下决定记录一些做过的事情,免得几年后回顾过去,整个人浑浑噩噩,都不知自己做了什么,此次部署是因为前几天公司给了我一个PHP项目让我部署在线上,我一听很懵,我一个做java的,PHP我没搞过啊,但是,上头命令下来了,还是要撸起袖子,撸一撸。
言归正传。
服务器上已经有nginx和mysql,所以就决定采用 PHP+Nginx+mysql这个组合,在网上翻了很多资料,由于对linux和PHP不不了解,不知道PHP和nginx和mysql是怎么关联的,遇到各种原因(不是php装错了,就是包没装,),花了很多时间,后来部署完后发现,这三个都是单独安装(额~~难道还能一起安装),只需要php安装后配置下,nginx的配置下(和php的关联)就直接可以跑了。至于mysql,只要开启,php项目里面的连接数据库配置好了,可以直接连上去。所以本文主要针对php的安装。
本文主要参考了此链接博主(mingzhiyu):http://www.cnblogs.com/kyuang/p/6801942.html
关于nginx和mysql的安装,开始安装前需要在linux的一些开发库安装在此也不复述,参考链接里面都有。
php版本:5.6.30
nginx版本:1.7.3
mysql版本:5.7.3-m13
PHP安装配置
nginx本身不能处理PHP,它只是个WEB服务器,当接收到请求后,如果是php请求,则发送给php解释器处理,并把结果返回给客户端。
nginx一般把请求发送给fastcgi管理进程处理,fastcgi管理进程选择cgi子进程处理结果并返回nginx。
什么是PHP-FPM?PHP-FPM是一个属于PHP的FASTCGI管理器,只用于PHP,新版本已集成php-fpm了,php-fpm提供更好的php进程管理,可以有效控制内存和进程,可以平滑重载php配置。在configure时,带-enable-fpm参数即可开启php-fpm,其他参数可见这里,至于什么是fastcgi,和php-fpm什么关系,可参考链接https://segmentfault.com/q/1010000000256516
安装前准备
添加 epel 源
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
安装依赖
yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel libxml2-devel libcurl-devel bzip2-devel readline-devel libedit-devel sqlite-devel yum -y install gcc gcc-c++ glibc yum -y install libmcrypt-devel mhash-devel libxslt-devel \ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \ zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \ ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \ krb5 krb5-devel libidn libidn-devel openssl openssl-devel
cd /usr/local/src wget http://php.net/get/php-5.6.30.tar.gz/from/this/mirror tar -zvxf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \ --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \ --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \ --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \ --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \ --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar make && make install
如果php-5.6.30.tar.gz没下载下来,可直接复制链接:http://php.net/get/php-5.6.30.tar.gz/from/this/mirror到浏览器,手动下载。
以上就完成了php-fpm的安装,安装过程会花一些时间。
关于php配置
1、为php提供配置文件
cp php.ini-production /usr/local/php/etc/php.ini
注意:php.ini-production 还是在刚才/usr/local/src/php-5.6.30 目录下
2、为php-fpm提供配置文件
cd /usr/local/php cp etc/php-fpm.conf.default etc/php-fpm.conf vim etc/php-fpm.conf
修改php-fpm.conf
user = www
group = www
如果www用户不存在,那么先添加www用户(默认运行用户nobody)
groupadd www
useradd -g www www
3、启动php-fpm
执行
/usr/local/php/sbin/php-fpm
使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):
ps aux | grep php-fpm
结果如下图:
3、nginx和php-fpm整合
编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
修改如下:
重新载入nginx的配置文件:
/usr/local/nginx/sbin/nginx -s reload
4、测试php文件
在/usr/local/nginx/html下创建index.php文件,输入如下内容:
<?php
phpinfo();
?>
5、浏览器访问
访问http://你的服务器ip/index.php,皆可以见到php信息了。
也可直接访问你项目的地址,如:http://我的服务器地址/admin.php
成功。
6、安装过程出错原因
我按流程安装时,出现了几个错误,一个是:make: *** 没有规则可以创建“default”需要的目标“build”,这是因为是pcre没安装的问题,安装一下就OK。另一个是:mcrypt.h not found. Please reinstall libmcrypt
是因为php-mcrypt libmcrypt libmcrypt-devel这些包没安装,出现的错误一般都是缺少库或者包,安装即可。