zoukankan      html  css  js  c++  java
  • nginx 环境搭建使用之入门

    1、http://nginx.org/下载最新的nginx

    现在最新的版本是nginx-1.9.1   下载.tar.gz包 ,解压。

    timeless@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/src/nginx-1.9.1$ ./configure

    configure 过程中可能会遇到错误

    ./configure: error: the HTTP rewrite module requires the PCRE library.   //大体意思是重写模块需要pcre模块  
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.

    解决办法

    http://www.pcre.org/       编译安装便可 

    执行操作

    ./configure  &&make &&make install

    到现在为止,已经安装nginx ,接下来我们要把 nginx 与php 结合起来

    2、首先介绍知识:

    nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。

    nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx

    本文以php-fpm为例介绍如何使nginx支持PHP

    什么是PHP-FPM

    PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.

    PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

    新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。

    就是FastCGI Process Manager,是一种可选的PHP FastGCI执行模式,有一点很有特点的应用,尤其是一个繁忙的网站中:

    (1) 可适应的进行再生(NEW!)

    (2) 基本的统计功能(Apache's mod_status)

    (3) 高级进程管理功能,能够优雅的停止/开始

    (4) 能够使用不同的工作用户和不同的php.ini

    (5) 输入,输出日志记录...

    新的版本的php在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,其它参数都是配置php的,具体选项含义可以查看这里

    下面是我php 编译安装时候的选项:

    ./configure  --prefix=/usr/local/php/ --with-config-file-path=/etc/php5/cli/  --with-config-file-scan-dir=/etc/php5/mods-available/  --with-apxs2=/usr/local/apache243/bin/apxs  --with-mysql   --with-libxml-dir=/usr/local/libxml2/ --with-png-dir=/usr/local/libpng/ --with-jpeg-dir=/usr/local/jpeg8/ --with-freetype-dir=/usr/local/freetype/  --with-zlib-dir=/usr/local/zlib/ --with-mcrypt=/usr/local/libmcrypt/ --with-mysqli  --enable-soap --enable-mbstring=all --enable-sockets --enable-memcache --with-pdo-mysql --with-pdo-pgsql --with-pgsql --with-curl -with-mcrypt  --enable-ftp  --with-gd --enable-gd-native-ttf  --with-openssl  --with-mhash  --enable-pcntl  --enable-sockets  --with-xmlrpc   --enable-zip  --enable-soap  --without-pear  --with-gettext  --disable-fileinfo --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex  --enable-mbstring  --enable-fpm

    3、php编译安装完成,下面是对php-fpm运行用户进行设置

    cd /usr/local/php
    cp etc/php-fpm.conf.default etc/php-fpm.conf
    vi etc/php-fpm.conf

    修改
    user = www-data
    group = www-data

    如果www-data用户不存在,那么先添加www-data用户
    groupadd www-data
    useradd -g www-data www-data

    4、配置 nginx.conf文件

    其中server段增加如下配置,注意标红内容配置,否则会出现No input file specified.错误

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;  //端口不可以自己更改
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

    5、创建测试文件

    创建php文件

    在/usr/local/nginx/html下创建index.php文件,输入如下内容

    <?php
        echo phpinfo();
    ?>

    6、出现问题:

    Sorry, the page you are looking for is currently unavailable.
    Please try again later.

    If you are the system administrator of this resource then you should check theerror log for details.

    Faithfully yours, nginx.

    先在一个目录下运行下test.html和test.php,结果html可以运行,php无法运行。

    证实是php没有启动,我刚才也检测过php的进程,的确是没有php进程,找到:

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

    开启后,一切恢复正常!

    7、下面介绍一个  nginx 跟 php-fpm 相关的操作

    nginx

    (1)启动  

    cd usr/local/nginx/sbin
    ./nginx
    cd usr/local/nginx/sbin
    ./nginx

    (2)重启

      更改配置重启nginx  

    kill -HUP 主进程号或进程号文件路径
    或者使用
    cd /usr/local/nginx/sbin
    ./nginx -s reload

        (3)判断配置文件是否正确 

    nginx -t -c /usr/local/nginx/conf/nginx.conf
    或者
    cd  /usr/local/nginx/sbin
    ./nginx -t

    (4)关闭

      查询nginx主进程号

      ps -ef | grep nginx

      从容停止   kill -QUIT 主进程号

      快速停止   kill -TERM 主进程号

      强制停止   kill -9 nginx

      若nginx.conf配置了pid文件路径,如果没有,则在logs目录下

      kill -信号类型 '/usr/local/nginx/logs/nginx.pid'

    php-fpm

    (1)启动

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

     php-fpm 5.4.7 如何关闭 重启?

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

    master进程可以理解以下信号

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

    示例:

    php-fpm 关闭:
    
    kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
    
    php-fpm 重启:
    
    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

    可能遇到的问题:

    登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报nginx: [error] open() "/usr/local/nginx1.9.1/logs/nginx.pid" failed (2: No such file or directory)错误,进到logs文件发现的确没有nginx.pid文件

    [root@localhost sbin]# ./nginx -s reload

    nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

    解决方法:

    root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/nginx1.9.1/sbin#  /usr/local/nginx1.9.1/sbin/nginx -c /usr/local/nginx1.9.1/conf/nginx.conf
    root@timeless-HP-Pavilion-g4-Notebook-PC:/usr/local/nginx1.9.1/sbin# ./nginx -s reload

    总用量 12

    -rw-r--r-- 1 root root 1246 12月 9 18:10 access.log

    -rw-r--r-- 1 root root 516 12月 10 15:39 error.log

    -rw-r--r-- 1 root root 5 12月 10 15:38 nginx.pid

    看nginx.pid文件已经有了

  • 相关阅读:
    adb(Android Debug Bridge)安装使用教程
    Python3+smtplib+poplib+imaplib实现发送和收取邮件(以qq邮箱为例)
    Python3组播通信编程实现教程(发送者+接收者)
    Python3+ssl实现加密通信
    openssl实现双向认证教程(服务端代码+客户端代码+证书生成)
    VCG(VisualCodeGrepper)安装使用教程
    APP安全防护基本方法(混淆/签名验证/反调试)
    Android Studio打包生成APK教程
    Android Studio向项目添加C/C++原生代码教程
    Android AES加密报错处理:javax.crypto.IllegalBlockSizeException: error:1e00007b:Cipher functions:OPENSSL_internal:WRONG_FINAL_BLOCK_LENGTH
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4546276.html
Copyright © 2011-2022 走看看