博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
centos6下nginx+php编译安装,最新实战
阅读量:5375 次
发布时间:2019-06-15

本文共 3950 字,大约阅读时间需要 13 分钟。

首先安装nginx,nginx首页

下载nginx软件源

然后yum -y install nginx

这样就完成了nginx的安装

 

然后是php

编译php需要下面软件包的支持

yum -y install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel openssl openssl-devel

还需要额外编译安装两个软件包libmcrypt和mhash,先装前者再装后者,附共享地址

 libmcrypt——

mhash——

 

下载php去

其他版本在

下好之后解压

tar xvf php-5.3.19.tar.bz2

cd php-5.3.19

开始编译,现在一般使用fpm模式,所以带上--enable-fpm参数

./configure --prefix=/usr/local/php --with-pdo-mysql  --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc  --with-iconv-dir=/usr/local/lib --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath   --enable-bcmath  --with-curl --with-curlwrappers --enable-mbregex  --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets  --with-xmlrpc --enable-zip --enable-soap --without-pear --enable-fpm

安装

make

make install

安装完成后,你的php目录下并没有生成php.ini,需要自己从源码包根目录中手动拷贝一个样例文件并且重命名样例文件有可能是php.ini-dist,也有可能是php.ini-production

上面编译参数中指定的--with-config-file-path=/usr/local/php/etc就是你要拷贝到的路径

cp php.ini-production /usr/local/php/etc/php.ini

 

配置与优化

PHP-FPM PHP的全局配置文件是php.ini,在上面的步骤中,已经将此文件复制到了/usr/local/php/lib/php.ini下。可以根据每个应 用需求的不同,对php.ini进行相应的配置。 下面重点介绍PHP-FPM引擎的配置文件。根据上面指定的安装路径,PHP-FPM的默认配置文件为/usr/local/php/etc/php- fpm.conf。 php-fpm.conf是一个XML格式的纯文本文件,其内容很容易看明白。
 
这里重点介绍几个重要的配置标签:
 
标签listen_address是配置fastcgi进程监听的IP地址以及端口,默认是127.0.0.1:9000。
 
<value name="listen_address">127.0.0.1:9000</value>
标签display_errors用来设置是否显示PHP错误信息,默认是0,不显示错误信息,设置为1可以显示PHP错误信息。
 
<value name="display_errors">0</value>
标签user和group用于设置运行FastCGI进程的用户和用户组。需要注意的是,这里指定的用户和用户组要和Nginx配置文件中指定的用户和用户组一致。
 
<value name="user">nobody</value> < value name="group">nobody</value>
标签max_children用于设置FastCGI的进程数。根据官方建议,小于2GB内存的服务器,可以只开启64个进程,4GB以上内存的服务器可以开启200个进程。
 
<value name="max_children">5</value>
标签request_terminate_timeout用于设置FastCGI执行脚本的时间。默认是0s,也就是无限执行下去,可以根据情况对其进行修改。
 
<value name="request_terminate_timeout">0s</value>
标签rlimit_files用于设置PHP-FPM对打开文件描述符的限制,默认值为1024。这个标签的值必须和Linux内核打开文件数关联起来,例如要将此值设置为65535,就必须在Linux命令行执行'ulimit -HSn 65536'。
 
<value name="rlimit_files">1024</value>
标签max_requests指明了每个children最多处理多少个请求后便会被关闭,默认的设置是500。
 
<value name="max_requests">500</value>
标签allowed_clients用于设置允许访问FastCGI进程解析器的IP地址。如果不在这里指定IP地址,Nginx转发过来的PHP解析请求将无法被接受。
 
<value name="allowed_clients">127.0.0.1</value>
在配置完php-fpm后,就可以启动FastCGI进程了:
 
/usr/local/php/sbin/php-fpm
 

php 5.3.3之后的的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:

查看php-fpm进程:

lsof -i:你的fastcgi监控端口

或者

ps aux | grep php-fpm

其中的php-fpm: master字样进程就是主进程

master进程可以理解以下信号

INT, TERM 立刻终止

QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块

示例:

php-fpm 关闭:
kill -INT pid
php-fpm 重启:
kill -USR2 pid

好了,现在php和fastcgi配置完毕,接下来要配置nginx以便传入的脚本访问请求能够由php解析
编辑/etc/nginx/conf.d/default.conf
location / {
        root   /home/www;//你的工程根目录
        index  index.html index.htm;
    }
location ~ \.php$ {
        root           /home/www;//同样是你的工程根目录,如果不设置,会出现
FastCGI sent in stderr: "Primary script unknown"错误
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;//nginx安装后默认是/script$fastcgi_script_name,必须把/script替换成$document_root$
        include        fastcgi_params;
    }
现在根目录的配置完毕,如果在根目录下新建一个index.php
<?php
phpinfo();
 
访问你的ip,就会成功解析运行phpinfo函数了。
接下来是虚拟主机,这是我的例子
server {
    listen       80;
    server_name  www.250er.com 250er.com;
    location / {
        root /home/www/www.250er.com;
        index  index.php index.html index.htm;
    }
    location ~ \.php$ {
        root           /home/www/www.250er.com;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
 
至此大功告成

转载于:https://www.cnblogs.com/shaoya/archive/2012/12/19/2825295.html

你可能感兴趣的文章
Part3_lesson2---ARM指令分类学习
查看>>
jQuery拖拽原理实例
查看>>
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>
ubuntu下USB连接Android手机
查看>>
C# 语句 分支语句 switch----case----.
查看>>
反射获取 obj类 的属性 与对应值
查看>>
表单中的readonly与disable的区别(zhuan)
查看>>
win10下安装配置mysql-8.0.13--实战可用
查看>>
周记2018.8.27~9.2
查看>>
MySQL中 1305-FUNCTION liangshanhero2.getdate does not exit 问题解决
查看>>
python序列化和json
查看>>
mongodb
查看>>
SSH-struts2的异常处理
查看>>
《30天自制操作系统》学习笔记--第14天
查看>>
LGPL协议的理解
查看>>
1、Python基础
查看>>
Unity The Tag Attribute Matching Rule
查看>>
试着理解下kvm
查看>>