美文网首页
nginx + php安装过程

nginx + php安装过程

作者: 与狼共舞666 | 来源:发表于2022-08-23 19:22 被阅读0次

    前提条件

    yum install -y gcc gcc-c++ openssl openssl-devel
    

    安装这些是应为在编译安装的时候我们需要它们。

    这里已经安装好了。

    安装nginx

    首先我们得去nginx官网下载源码包以及查看文档。编译文档需要仔细查看,先简单了解一下配置参数。
    这里也下载好了
    nginx 配置参数

    --prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用/usr/local/nginx。
    --sbin-path=path 设置nginx的可执行文件的路径,默认为prefix/sbin/nginx。
    --conf-path=path 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf。
    --pid-path=path 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid。
    --error-log-path=path 设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log。
    --http-log-path=path 设置主请求的HTTP服务器的日志文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的access_log指令。默认情况下,文件名 为prefix/logs/access.log。
    --build=name 设置一个可选的nginx构建名称。
    --user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的用户名是nobody。
    --group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的 user指令。默认的为非特权用户。
    --with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
    --with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
    --without-http_gzip_module — 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
    --without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
    --without-http_proxy_module — 不编译http_proxy模块。
    --with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
    --with-pcre=path — 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.41)需要从PCRE网站下载并解压。其余的工作是Nginx的 ./configure 和 make 来完成。正则表达式使用在location指令和 ngx_http_rewrite_module 模块中。
    --with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
    --with-zlib=path —设置的zlib库的源码路径。要下载从 zlib(版本1.1.3 - 1.2.11)的并解压。其余的工作是Nginx的./ configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
    --with-cc-opt=parameters — 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I /usr/local/include。.如需要需要增加 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
    --with-ld-opt=parameters —设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L /usr/local/lib"。
    这里不展开说明nginx各个编译参数的含义,先完成安装,之后可以通过配置文件或者重新编译实现功能上的需求。 下面是官方文档的编译参数示例,这些参数必须在同一行输入(别用回车换行,那样就开始编译了)
    

    ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.45 --with-zlib=../zlib-1.2.12
    路径使用默认的就好,--with-http_ssl_module 是对https访问的支持,显然我们需要它,编译这个模块需要OpenSSL的支持,我们在前提条件中已经用yum安装了OpenSSL;--with-pcre是对ngx_http_rewrite_module中正则表达式的支持,我们也需要它;--with-zlib是ngx_http_gzip_module需要的,我们最好包含它,ngx_http_gzip_module可以一定程度上减少服务器负担,当然不编译进来也没事,以后需要可以再重新编译进来。

    编译安装 nginx

    //解压
    tar zxvf nginx-1.22.0.tar.gz
    tar zxvf pcre-8.45.tar.gz
    tar zxvf zlib-1.2.12.tar.gz
    //进入nginx目录
    cd nginx-1.12.2
    //配置,-with-pcre=../pcre-8.45 --with-zlib=../zlib-1.2.12 这么写是因为zlib和pcre都放在nginx源码包同一级目录下
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11
    //配置成功之后,编译并安装
    make && make install
    

    启动nginx
    /usr/local/nginx/sbin/nginx
    安装php最小的依赖包
    yum install libxml2 libxml2-devel sqlite sqlite-devel -y
    我们这里就简单的安装了PHP,只带了一个参数--enable-fpm,但是实际我们也许会需要带更多的参数, 这些我们可以通过重新走一遍安装流程来实现,值得一提的是,在./configure执行成功之后会在当前目录下留下config.nice 文件, 后续如果重新配置,可以在这个基础上运行,比如我们要安装pcntl扩展,可以这样执行./config.nice --enable-pcntl 。而且这里花费的时间比较长

    creating libtool
    appending configuration tag "CXX" to libtool
    
    Generating files
    configure: patching main/php_config.h.in
    configure: creating ./config.status
    creating main/internal_functions.c
    creating main/internal_functions_cli.c
    config.status: creating main/build-defs.h
    config.status: creating scripts/phpize
    config.status: creating scripts/man1/phpize.1
    config.status: creating scripts/php-config
    config.status: creating scripts/man1/php-config.1
    config.status: creating sapi/cli/php.1
    config.status: creating sapi/fpm/php-fpm.conf
    config.status: creating sapi/fpm/www.conf
    config.status: creating sapi/fpm/init.d.php-fpm
    config.status: creating sapi/fpm/php-fpm.service
    config.status: creating sapi/fpm/php-fpm.8
    config.status: creating sapi/fpm/status.html
    config.status: creating sapi/phpdbg/phpdbg.1
    config.status: creating sapi/cgi/php-cgi.1
    config.status: creating ext/phar/phar.1
    config.status: creating ext/phar/phar.phar.1
    config.status: creating main/php_config.h
    config.status: executing default commands
    
    +--------------------------------------------------------------------+
    | License:                                                           |
    | This software is subject to the PHP License, available in this     |
    | distribution in the file LICENSE. By continuing this installation  |
    | process, you are bound by the terms of this license agreement.     |
    | If you do not agree with the terms of this license, you must abort |
    | the installation process at this point.                            |
    +--------------------------------------------------------------------+
    
    Thank you for using PHP.
    

    完成安装之后的操作
    PHP配置文件,由于在配置时我们并没有指定php.ini的加载位置,默认在安装PHP安装目录的lib目录下, 所以我们移动配置文件到 /usr/local/php/lib 目录下。
    cp php.ini-development /usr/local/php/lib/php.ini
    在/usr/local/php/etc/php-fpm.conf 最后一行可以看到 include=/usr/local/php/etc/php-fpm.d/*.conf,所以需要执行以下步骤。
    cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
    需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为0。

    启动php-fpm

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

    修改nginx配置以支持php应用

    cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.origin

    cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf.default.origin

    cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
    修改默认的 location 块,使其支持 .php 文件:

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

    上面的注释是自己加的

    下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:

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

    重启nginx使配置生效
    nginx -s stop
    nginx
    创建测试文件

    echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

    kill -USR2 $php-fpm 优雅重启php-fpm

    相关文章

      网友评论

          本文标题:nginx + php安装过程

          本文链接:https://www.haomeiwen.com/subject/wcyggrtx.html