`
zl378837964
  • 浏览: 190033 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Linux 使用Nginx搭建PHP7服务环境 (过程中问题总结)

阅读更多

 

很早时间就已经转nginx并虚拟机搭建使用过,此处新建Linux服务器(centOs6 购于aliyun此处有专属优惠码 rrs9h6 有效期至2017-05-31,支付页面输入打折哦)再次操作并记录一下~~

 

PHP官网下载地址,下载自己使用的版本

http://cn2.php.net/downloads.php 

Nginx 此处使用OpenResty版本(扩展Nginx和Lua更方便使用)

http://openresty.org/cn/download.html

==================================================================

tar -xvf openresty-1.9.15.1.tar.gz

tar -xvf php-7.0.8.tar.gz

进入目录,执行配置(配置时有需要指定路径的自己添加即可)

./configure --prefix=/usr/local/nginx 

make && make install 

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc/ --enable-fpm

同样 make && make install

-----------------------------------------------------------------------------------------------

假设没有问题(遇到的问题集 见后文罗列并说明解决方案),则依次验证服务即可:

cp nginx.conf之后启动服务:

/usr/local/nginx/nginx/sbin/nginx -c /usr/local/nginx/nginx/conf/nginx.conf

并访问(默认端口80),显示nginx欢迎页面即 nginx启动成功!

 

主要在结合配置PHP:

使用默认模板

cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

cd /usr/local/php/etc/

cp php-fpm.conf.default php-fpm.conf

启用php服务

/usr/local/php/sbin/php-fpm -c start 

在nginx下的html站点目录下新建测试php文件

vim /wwwroot/htdoc/index.php

输入: <? phpinfo() ?>

chmod -R 755 /wwwroot  #赋予站点目录及以下文件权限为读取和执行

vim /usr/local/nginx/conf/nginx.conf  #更改nginx配置文件使其可以访问php文件

  server

  {

      listen 80;

      server_name www.test.com test.com;

      root   /wwwroot/htdoc; 

 

      location /{

        index index.html index.htm index.html index.php default.html Default.html;

      }

      location ~ \.php${

         fastcgi_pass   127.0.0.1:9000;

         fastcgi_index  index.php;

         fastcgi_param  SCRIPT_FILENAME /$document_root$fastcgi_script_name;    

         include      fastcgi_params;

      }

   }

/usr/local/nginx/nginx/sbin/nginx -s reload  #重载nginx配置就可以访问测试

页面展示: PHP Version 7.0.8 等即成功!

 

-----------------------------------------------------------------------------------------------

问题一:

安装nginx时候就会出现 PCRE OpenSSL zlib 库的依赖找不到 NOT FOUND

不要紧张,这都是nginx模块需要使用到的,依次安装上即可

yum -y install pcre openssl zlib

然后使用 rpm -qa 查看是否都安装成功,其中一个注意点:

------------------------------ nginx编译openssl要注意啦! --------------------------------

使用安装好的openssl目录

./configure --prefix=/usr/local/nginx --with-openssl=/usr/local/ssl(此处为已经安装好的目录)

配置没问题,但是make就会会报错如下:

。。。。。。

make[1]: Leaving directory `/home/zhang/nginx/build/lua-redis-parser-0.12'

cd /home/zhang/nginx/build/lua-rds-parser-0.06 && make DESTDIR= LUA_INCLUDE_DIR=/home/zhang/nginx/build/luajit-root/usr/local/nginx/luajit/include/luajit-2.1 LUA_LIB_DIR=/usr/local/nginx/lualib CC=cc

make[1]: Entering directory `/home/zhang/nginx/build/lua-rds-parser-0.06'

make[1]: Nothing to be done for `all'.

make[1]: Leaving directory `/home/zhang/nginx/build/lua-rds-parser-0.06'

cd /home/zhang/nginx/build/nginx-1.9.15 && make

make[1]: Entering directory `/home/zhang/nginx/build/nginx-1.9.15'

make -f objs/Makefile

make[2]: Entering directory `/home/zhang/nginx/build/nginx-1.9.15'

cd /usr/local/ssl \

&& if [ -f Makefile ]; then make clean; fi \

&& ./config --prefix=/usr/local/ssl/.openssl no-shared  \

&& make \

&& make install_sw LIBDIR=lib

/bin/sh: line 2: ./config: No such file or directory

make[2]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127

make[2]: Leaving directory `/home/zhang/nginx/build/nginx-1.9.15'

make[1]: *** [build] Error 2

make[1]: Leaving directory `/home/zhang/nginx/build/nginx-1.9.15'

make: *** [all] Error 2

 

对于&& ./config --prefix=/usr/local/ssl/.openssl no-shared  \

 

解决方案:使用源码openssl目录

./configure --prefix=/usr/local/nginx --with-openssl=/home/zhang/openssl

配置好如下:

。。。。。。。

adding module in ../rds-csv-nginx-module-0.07

 + ngx_http_rds_csv_filter_module was configured

checking for PCRE library ... found

checking for PCRE JIT support ... found

checking for zlib library ... found

creating objs/Makefile

 

Configuration summary (如下即配置成功)

  + using system PCRE library

  + using OpenSSL library: /home/zhang/openssl

  + md5: using OpenSSL library

  + sha1: using OpenSSL library

  + using system zlib library

 

  nginx path prefix: "/usr/local/nginx/nginx"

  nginx binary file: "/usr/local/nginx/nginx/sbin/nginx"

  nginx modules path: "/usr/local/nginx/nginx/modules"

  nginx configuration prefix: "/usr/local/nginx/nginx/conf"

  nginx configuration file: "/usr/local/nginx/nginx/conf/nginx.conf"

  nginx pid file: "/usr/local/nginx/nginx/logs/nginx.pid"

  nginx error log file: "/usr/local/nginx/nginx/logs/error.log"

  nginx http access log file: "/usr/local/nginx/nginx/logs/access.log"

  nginx http client request body temporary files: "client_body_temp"

  nginx http proxy temporary files: "proxy_temp"

  nginx http fastcgi temporary files: "fastcgi_temp"

  nginx http uwsgi temporary files: "uwsgi_temp"

  nginx http scgi temporary files: "scgi_temp"

 

问题二:

编译php-7.0.2出错,xml2-config not found

cd php7

./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --enable-fpm

返回错误:

checking for strftime... (cached) yes

checking whether to enable LIBXML support... yes

checking libxml2 install dir... no

checking for xml2-config path... 

configure: error: xml2-config not found. Please check your libxml2 installation.

 

yum -y install libxml2

之后依然如上错误,libxml2没装成功,但是yum安装检验是成功的

rpm -qa libxml2  ==》 libxml2-2.9.1-6.el7_2.3.x86_64

查资料后发现原来还需要安装libxml2-devel,再次执行安装命令,

 

解决方案:  yum -y install libxml2-devel  

再重新编译php,可以编译成功。

 

问题三:

装php7,make报错:...is not a valid libtool object

 

libtool: link: `ext/opcache/ZendAccelerator.lo' is not a valid libtool object

make: *** [ext/opcache/opcache.la] Error 1

[1]+  Exit 2                  make

查看libtool(由ltmain.sh生成)该错误是由于:

if (${SED} -e ‘2q’ $arg | grep “^# Generated by .*$PACKAGE”) >/dev/null 2>&1; then 语句不成立而后续引起的。

正确的lo文件应该如下:

# ext/date/php_date.lo – a libtool object file

# Generated by ltmain.sh – GNU libtool 1.5.26 (1.1220.2.492 2008/01/30 06:40:56)

#

# Please DO NOT delete this file!

# It is necessary for linking the library.

# Name of the PIC object.

pic_object=none

# Name of the non-PIC object.

non_pic_object=’php_date.o’

初始的5行,是有libtool文件中compile时添加的。

在用安装脚本运行configure和make时,经常发现未添加成功,这就导致了后面的错误。而手动

解决办法:make clean 后再 make

# make clean

find . -name \*.gcno -o -name \*.gcda | xargs rm -f

find . -name \*.lo -o -name \*.o | xargs rm -f

find . -name \*.la -o -name \*.a | xargs rm -f 

find . -name \*.so | xargs rm -f

find . -name .libs -a -type d|xargs rm -rf

rm -f libphp7.la sapi/cli/php sapi/cgi/php-cgi   sapi/fpm/php-fpm  modules/* libs/*

make 即显示

Build complete.

Don't forget to run 'make test'.

 

问题四:

Nginx请求index.php返回:File not found 并在日志显示FastCGI错误Primary script unknown

 

在成功编译安装nginx php 并成功启动nginx和php-fpm后,访问php提示 "File not found." ,同时在错误log中看到:

2016/06/24 16:51:04 [error] 25191#0: *97 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, 

 

解决方法:

在Nginx配置文件中找到定义调用脚本文件的地方:

fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

修改成如下方式($document_root)此处 $document_root 代表当前请求在root指令中指定的值:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

配置中的$document_root就是针对/wwwroot/htdoc(自己建的站点根目录)下的php文件进行解析。

 

系统环境各不相同,自然问题还有很多不同的,操作中随手解决了也就忽略记录,问题嘛总能解决滴;

还是那句话:内事不决问百度,外事难决找google ~~

 

随记

 

【转载请标明出处 -- 转自】

http://zl378837964.iteye.com/blog/2307174

 

分享到:
评论

相关推荐

    Web环境搭建:Linux+Nginx+PHP+Mysql+Redis

    ### Web环境搭建:Linux+Nginx+PHP+MySQL+Redis #### 一、环境概述与推荐版本 在构建一个高效且稳定的商城系统时,选择合适的Web环境至关重要。本指南将介绍一套广泛应用于电商平台的技术栈——**Ubuntu + PHP + ...

    Linux下如何搭建nginx服务器

    ### Linux下如何搭建Nginx服务器 #### 一、Nginx与Apache的对比 **1. Apache的优势:** - **强大的Rewrite功能:** Apache的rewrite规则比Nginx更为强大,支持复杂的URL重写逻辑。 - **动态页面处理:** 对于动态...

    linux+nginx+php+mysql环境配置指南.pdf

    本文档旨在指导用户如何配置 Linux+Nginx+PHP+MySQL 环境,以便搭建一个功能齐全的 Web 服务器。下面是详细的配置步骤: 一、安装 Red Hat Linux 首先,需要安装 Red Hat Linux 操作系统。安装过程中,选择中文...

    Linux实验-自动部署Nginx+PHP服务器.rar

    在IT行业中,Linux系统是广泛应用于服务器环境的操作系统,尤其是CentOS 7因其稳定性和安全性而备受青睐。本实验旨在教你如何通过编写shell脚本来自动部署Nginx和PHP服务,以便实现对PHP文件的支持并能成功访问...

    Linux nginx mysql php LNMP环境搭建

    ### Linux Nginx MySQL PHP (LNMP) 环境搭建详细步骤 #### 一、基础知识简介 在深入了解LNMP的安装配置之前,我们先简要回顾一下这四个组件的基本概念: - **Linux**:一个开源的操作系统,是服务器领域的主流选择...

    LNMP(linux+nginx+mysql+php)服务器环境搭配

    LNMP(Linux+Nginx+MySQL+PHP)服务器环境配置是一项关键的技术,广泛应用于现代Web开发领域,尤其在构建高性能、高稳定性的网站时。这一组合利用Linux作为操作系统基础,Nginx作为Web服务器,MySQL作为数据库管理...

    Linux下mysql+PHP+nginx的搭建

    在Linux环境下搭建MySQL+PHP+nginx的服务器是一个常见的任务,尤其对于Web开发人员来说,这一组合提供了稳定且高效的Web服务。以下将详细讲解这个过程,包括Linux基础、VMware虚拟机的安装、Linux镜像的配置以及...

    linux+nginx+php+mysql环境配置指南.docx

    Linux+Nginx+PHP+Mysql 环境配置指南是一个完整的服务器配置指南,旨在帮助用户快速搭建一个稳定高效的 Web 服务器环境。本指南涵盖了从安装 Linux 操作系统到配置 Nginx、PHP 和 Mysql 的详细步骤。 Linux 安装 ...

    php运行环境搭建(apache nginx)

    1. **安装Nginx**: 使用包管理器安装Nginx,并确保服务启动并设置为开机自启。 2. **安装PHP-FPM**: PHP-FastCGI进程管理器使Nginx能与PHP协同工作。确保安装了`php-fpm`及相关PHP扩展。 3. **配置Nginx**: 编辑`...

    PHP7.2+NGINX Linux环境搭建与脚本

    在这个场景中,我们关注的是在Linux系统上搭建PHP7.2和Nginx的环境,这通常用于动态网站的部署和管理。我们将详细介绍如何在CentOS 6.8系统上通过源码编译的方式安装这两个组件,以及如何使用提供的自动安装脚本来...

    php7+nginx1.12+php7.1的环境搭建

    本篇教程将详细介绍如何在Linux环境下搭建PHP7+NGINX1.12+PHP7.1的运行环境,并在此基础上添加MySQL5.7,最终形成完整的LNMP(Linux+Nginx+MySQL+PHP)架构。 #### 二、环境准备与安装 ##### 1. Nginx 安装配置 **...

    基于Linux系统Nginx的动态网站的LNMP环境源码包

    在Linux环境中搭建Nginx服务器,通常会与MySQL数据库和PHP解释器结合,形成一个名为LNMP(Linux + Nginx + MySQL + PHP)的基础架构,用于搭建动态网站。 首先,我们需要理解Linux系统的基础操作。这包括文件系统的...

    Linux下php+nginx+mysql环境搭建(CentOS)

    总结来说,Linux下php+nginx+mysql环境的搭建是一个系统性工程,需要系统地学习相关的技术知识,耐心细致地完成每一步操作。对于初学者来说,建议在Windows系统下使用VMware虚拟机进行实践,以加深理解。对于经验...

    lnmp=linux+Nginx+PHP+MySQL

    LNMP(Linux + Nginx + ...总结来说,LNMP环境是一个高效且灵活的Web服务解决方案,它将Linux的稳定、Nginx的高性能、PHP的易用性和MySQL的数据库功能完美融合,为开发者提供了强大的平台,以满足现代Web应用的需求。

    Linux下Nginx+PHP+MySQL配置(图)

    在IT行业中,构建一个高效的Web服务环境是至关重要的,尤其是对于开发者和系统管理员而言。Linux操作系统因其开源、稳定和安全的特性,常被选为服务器平台。本篇将详细讲解如何在Linux环境下配置Nginx作为Web服务器...

    Nginx1.22.0版本Linux已编译可直接使用

    总的来说,预编译的 Nginx 1.22.0 Linux 版本提供了快速部署和使用的便利,降低了入门门槛,尤其适合那些不熟悉编译过程或者需要快速搭建 Web 服务的用户。同时,由于它已经包含了多种常用的模块,因此可以满足...

    linux+nginx+mysql+php搭建高性能web服务器

    在搭建过程中,需要下载Nginx的源码并进行编译安装,配置合适的参数以优化性能。 3. **MySQL**:作为关系型数据库管理系统,MySQL是许多Web应用程序的首选,因为它提供了高效的存储和检索数据的能力。在搭建过程中...

Global site tag (gtag.js) - Google Analytics