PHP+NGINX

  1. 下载php编译包/nginx编译包(建议先装nginx再装php, php编译包我用的是5.5.35)

  2. 创建好安装目录(我的编译包放在/home下)

    mkdir -p /usr/local/php

  3. 解压

    tar -zxvf php-5.5.35.tar.gz

  1. 编译php

    cd php-5.5.35

(编译)

./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --with-bz2 --with-readline --without-sqlite3 --without-pdo-sqlite --with-pear

 

注意: 我这里是缺少了--with-openssl的, 因为之前make的时候, openssl抛出提领指向不完全类型的指针, 只能暂时放下它, 后期再补, 不然安装不上
后期加上: 安装后发现php的gd库也安装失败, 试过用yum装gd,也试过单独下载编译包编译安装, 不知道是版本不对还是怎么样, 就是安装不上, 懂的大神帮忙看一下是哪里出了问题

  1. 安装php

    make && make install

 

  1. 添加 PHP 命令到环境变量

    vim /etc/profile

在文件末尾加入

PATH=$PATH:/usr/local/php/bin
export PATH

使这个配置立即生效

. /etc/profile 或 source /etc/profile

(我喜欢用后者)

查看环境变量

echo $PATH

看到出现刚刚配置的路径则表示正确

查看php版本

php -v

(显示出来表示安装正确)

  1. 配置php-fpm(负载均衡模块)
    (进入安装目录)

    cd /usr/local/php/etc

(复制改名)

cp php-fpm.conf.default php-fpm.conf
  1. 启动php-fpm

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

(1)异常:启动失败, 抛出www问题
解决:修改php-fpm.conf配置文件

vim /usr/local/php/etc/php-fpm.conf

(2)用vim命令找到user与group

:/user
:/group

这两个原来的值是:www
把他们修改成当前linux用户与当前用户所在组

(3)配置完成, 重启php-fpm的时候如果抛出:

ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
ERROR: FPM initialization failed

解决: 端口已占用(php-fpm已在开启的状态)

netstat -lntup | grep 9000
killall php-fpm
sudo /usr/local/php/sbin/php-fpm

 

  1. 修改nginx配置文件nginx.conf

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

(1)扔一个index.php进根目录

location / {
root html;
index index.html index.htm index.php;
}

 

(2)放开php模块的注释, 指定fastcgi_param SCRIPT_FILENAME网站目录

location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

 

  1. 重启nginx
    (1)重新加载配置文件

    service nginx reload

(2)重启

service nginx restart

 

  1. 测试php
    在指定的网站目录下写测试文件

    cd /usr/local/nginx/html vim index.php

内容:

<?php echo phpinfo(); ?>

 

在浏览器中输入http://ip/index.php

访问成功!!

  1. 问题拓展: 外网范围问题

(1)将80, 9000端口放进防火墙运行通行规则

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 9000 -j ACCEPT

 

(2)保存这个防火墙规则

service iptables save

 

(3)重启防火墙

service iptables restart

 

外网访问成功!

依赖库问题

出现错误: congigure error: xml2-config not found.
执行命令: sudo yum install libxml2-devel
查看是否成功: find / -name "xml2-config"

出现错误: congigure error: Cannot find OpenSSL's <evp.h>
解决办法:yum install openssl openssl-devel
ln -s /usr/lib64/libssl.so /usr/lib/

出现错误: configure: error: Please reinstall the BZip2 distribution
解决办法:yum install bzip2 bzip2-devel

出现错误: configure: error: Please reinstall the libcurl distribution -easy.h should be in <curl-dir>/include/curl/
解决办法:yum -y install curl-devel

出现错误:configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决办法:sudo yum install libmcrypt libmcrypt-devel mcrypt mhash

出现错误:configure: error: Please reinstall readline - I cannot find readline.h
解决办法:sudo yum install readline-devel

由于deb包与rpm包不同, 看系统

yum install ***
sudo apt-get install ***

 

注意: 以上全都是yum安装的方式, 因为依赖包太多, 偷了个懒.
警告: 缺少gd库

 

本文由金沙官网线上发布于操作系统,转载请注明出处:PHP+NGINX

您可能还会对下面的文章感兴趣: