在Centos7服务器上部署PHP项目

时间:2022-03-28 06:06:54

前言

第一次动笔写博,虽然前辈们都写了不少,但我还是希望写一遍加深印象,有错误请指正(交流即进步)。

作为一个毕业两年多的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
修改
pm.max_children = 150
pm.start_servers = 8
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pid = /usr/local/php/var/run/php-fpm.pid

3、启动php-fpm

执行

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

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

ps aux | grep php-fpm

结果如下图:

在Centos7服务器上部署PHP项目

 

3、nginx和php-fpm整合

 编辑nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

修改如下:

在Centos7服务器上部署PHP项目

重新载入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这些包没安装,出现的错误一般都是缺少库或者包,安装即可。