php5.6.31编译安装的方法:1、添加epel源;2、安装依赖;3、下载并解压php5.6.31;4、修改php-fpm.conf;5、启动php-fpm即可。
本文操作环境:centos 7系统、php版本:5.6.31 nginx版本:1.7.3 mysql版本:5.6.62、dell g3电脑
php5.6.31如何编译安装?
centos 7 编译安装php5.6.31:
服务器上已经有nginx和mysql,所以就决定采用 php+nginx+mysql这个组合,在网上翻了很多资料,由于对linux和php不不了解,不知道php和nginx和mysql是怎么关联的,遇到各种原因(不是php装错了,就是包没装,),花了很多时间,后来部署完后发现,这三个都是单独安装(额~~难道还能一起安装),只需要php安装后配置下,nginx的配置下(和php的关联)就直接可以跑了。至于mysql,只要开启,php项目里面的连接数据库配置好了,可以直接连上去。所以本文主要针对php的安装。
关于nginx和mysql的安装,开始安装前需要在linux的一些开发库安装在此也不复述,参考链接里面都有。
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-develyum -y install gcc gcc-c++ glibcyum -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
下载php-5.6.31
1)将安装包解压到 /usr/local/src
cd /usr/local/srctar -zvxf php-5.6.31.tar.gz
2)进入安装目录,进行安装
cd php-5.6.31./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-calendarmake && make install
centos 中下载php: wget 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.31 目录下
2、为php-fpm提供配置文件
cd /usr/local/phpcp etc/php-fpm.conf.default etc/php-fpm.confvim etc/php-fpm.conf
修改php-fpm.conf
user = wwwgroup = www
如果www用户不存在,那么先添加www用户(默认运行用户nobody)
groupadd wwwuseradd -g www www
如果没有配置这一步,浏览器打开 php 文件会报错
“the page you are looking for is temporarily unavailable. please try again later”
修改
pm.max_children = 150pm.start_servers = 8pm.min_spare_servers = 5pm.max_spare_servers = 10pid = /usr/local/php/var/run/php-fpm.pid
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运行的用户名user nginx;# nginx启动进程,通常设置成和cpu的数量相等,这里为自动worker_processes auto;# errorlog文件位置error_log /var/log/nginx/error.log;# pid文件地址,记录了nginx的pid,方便进程管理pid /run/nginx.pid;# load dynamic modules. see /usr/share/nginx/readme.dynamic.# 用来加载其他动态模块的配置include /usr/share/nginx/modules/*.conf;# 工作模式和连接数上限events { # 每个worker_processes的最大并发链接数 # 并发总数:worker_processes*worker_connections worker_connections 1024;}# 与提供http服务相关的一些配置参数类似的还有mailhttp { # 设置日志的格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # access_log记录访问的用户、页面、浏览器、ip和其他的访问信息 access_log /var/log/nginx/access.log main; # 这部分下面会单独解释 # 设置nginx是否使用sendfile函数输出文件 sendfile on; # 数据包最大时发包(使用nagle算法) tcp_nopush on; # 立刻发送数据包(禁用nagle算法) tcp_nodelay on; # 链接超时时间 keepalive_timeout 65; # 这个我也不清楚... types_hash_max_size 2048; # 引入文件扩展名与文件类型映射表 include /etc/nginx/mime.types; # 默认文件类型 default_type application/octet-stream; # load modular configuration files from the /etc/nginx/conf.d directory. # see http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # http服务上支持若干虚拟主机。 # 每个虚拟主机一个对应的server配置项 # 配置项里面包含该虚拟主机相关的配置。 server { # 端口 listen 80 default_server; listen [::]:80 default_server; # 访问的域名 server_name _; # 默认网站根目录(www目录) root /usr/share/nginx/html; # load configuration files for the default server block. include /etc/nginx/default.d/*.conf; # 默认请求 location / { } # 错误页(404) error_page 404 /404.html; location = /40x.html { } # 错误页(50x) error_page 500 502 503 504 /50x.html; location = /50x.html { } }}
我们要更改配置的只需要server部分就可以了。进入vim编辑模式,或者用flashfxp将配置文件共享到桌面来更改即可。
只需要改动三处即可
server { listen 80 default_server; listen [::]:80 default_server; # 这里改动了,也可以写你的域名,我用的是ip地址 server_name 192.168.0.222; root /usr/share/nginx/html; # load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { # 这里改动了 定义首页索引文件的名称 index index.php index.html index.htm; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } # 这里新加的 # php 脚本请求全部转发到 fastcgi处理. 使用fastcgi协议默认配置. # fastcgi服务器和程序(php,python)沟通的协议. location ~ \.php$ { # 设置监听端口 fastcgi_pass 127.0.0.1:9000; # 设置脚本文件请求的路径 fastcgi_param script_filename $document_root$fastcgi_script_name; # 引入fastcgi的配置文件 include fastcgi_params; } }
重启nginx服务器
nginx -s reload
此时,nginx和php已经联合配置完成了,但是我们并不知道实际配置效果如何,这个时候我们可以写一个小的测试脚本来验证一下。
之前提过了/usr/share/nginx/html是nginx的网站根目录,我们可以在此目录下建立一个php测试脚本。
# phpinfo.php是我要建立的文件名
vi /usr/share/nginx/html/phpinfo.php
打开编辑器后,在里面输入
<?phpphpinfo();// 测试信息?>
保存退出后,在浏览器中输入http://192.168.0.222/phpinfo.php,我这里的ip是192.168.0.222,你换成你们自己的即可。如图出现类似如下界面:
nginx和php已经配置完成了。
4、安装过程出错原因
我按流程安装时,出现了一个错误:mcrypt.h not found. please reinstall libmcrypt
是因为php-mcrypt libmcrypt libmcrypt-devel这些包没安装,出现的错误一般都是缺少库或者包,安装即可。
此时php已经配置完成,祝君安装顺利。顺便提前祝大家新年快乐!
推荐学习:《php视频教程》
以上就是php5.6.31如何编译安装的详细内容。