欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

配置一个nginx+php的web服务器--记录

程序员文章站 2022-05-17 18:53:24
...
本人对服务器完全是小白的程度,在大佬师兄的带领下成功配置了web服务器,便想记下来,日后忘了还能看看,同时感谢大佬师兄

安装nginx+php

这一步网上有很多,都挺详细的就跳过了

配置PHP

启用配置文件

将 php 安装目录下的php.ini-development文件拷贝一份重命名为php.ini

配置时区

默认 php 时区为格林尼治时间(零时区时间),为不影响服务器正常运行,要将时区改成服务器的当地时区

编辑php.ini文件,找到date.timezone,取消注释(删除分号),设置为date.timezone = PRC

配置扩展目录路劲

扩展目录是用于放 php 扩展模块的目录。为保证扩展正常加载,首先需正确配置扩展目录路径

编辑php.ini文件,找到extension_dir取消注释并设置为extension_dir = "安装路径\ext",比如我的是extension_dir = "E:\Server\php7\ext"

开启模块扩展

编辑php.ini文件,找到Dynamic Extensions配置区,下方的大量extension键值对即为 PHP 支持的模块扩展

  • 模块扩展说明

bz2:透明地读写 bzip2(.bz2) 压缩文件

curl:支持 libcurl 库,用于连接通讯各类服务器、使用各种通信协议

ffi:调用外部 C 函数

fileinfo:增强文件处理,用于文件信息验证

gd2:图像生成及处理

gettext:实现 NLS(Native Language Support) API,用于国际化 php 脚本

gmp:GNU 多精度

intl:国际化扩展,是 ICU 库的包装。用于执行各种语言环境感知操作,包括格式化、音译、编码转换、日历操作、时区和图形等等

imap:邮件客户端协议

ldap:目录服务

mbstring:多字节字符串

exif:可交换图像信息

mysqli:面向对象的 mysql 系统函数增强版,用对象的方式来操作 mysql 数据库

oci8_12c:用于访问 Oracle 数据库

odbc:用于访问 Oracle 数据库

openssl:对称/非对称加密,PBKDF2、PKCS7、PKCS12、X509 以及其他加密操作

pdo_firebird:用于访问 Firebird 数据库

pdo_mysql:实现 php 数据对象 PDO 接口,用于访问 mysql 3.x、4.x、5.x 数据库

pdo_oci:用于访问 Oracle 数据库

pdo_odbc:用于实现开放数据库连接

pdo_pgsql:用于访问 PostgreSQL 数据库

pdo_sqlite:用于访问 sqlite3 数据库

shmop:共享内存

snmp:简单网络管理协议

soap:简单对象访问协议

sockets:提供 socket 通讯服务

sodium:加密库

sqlite3:支持 sqlite3 数据库

tidy:用于清理或修复 HTML、XHTML 以及 XML 文档

xmlrpc:远程过程调用,使用 xml 文本方式传输数据

xsl:扩展样式表语言

  • 开启模块扩展

找到需要使用的模块,取消注释即可

win10编写nginx和php服务管理脚本

下载RunHideConsole

下载地址 https://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip

编写管理脚本

启动脚本

在 RunHiddenConsole 安装目录下新建StartWeb.bat文件,写入以下代码保存即可

@echooff
echo Starting PHP FastCGI...
RunHiddenConsole E:/Server/php7/php-cgi.exe -b 127.0.0.1:9000 -c E:/Server/php7/php.ini
echo Starting nginx...
RunHiddenConsole E:/Server/nginx/nginx.exe -p E:/Server/nginx

第 3 行中的两个路径分别为 php-cgi.exe 所在路径php.ini 所在路径

第 5 行中的两个路径分别为 nginx.exe 所在路径nginx 的安装根目录

停止脚本

在 RunHiddenConsole 安装目录下新建StopWeb.bat文件,写入以下代码保存即可

@echooff
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

共三个文件
配置一个nginx+php的web服务器--记录

win10中nginx整合php

配置文件路径:nginx 安装路径\conf\nginx.conf

找到server段内的第二个location ~ \.php$代码块
配置一个nginx+php的web服务器--记录
将其解注释掉,并将fastcgi_param改成$document_root

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;
        }

nginx开启gzip压缩

为什么要开启gzip

主要原因是在 HTTP 传输中,数据主要以文本为主,尤其是大量的 js/css/html 文件以及二进制图片文件等。开启 gzip 压缩后,可以在传输的过程中对内容进行压缩处理,以减少带宽的压力,提高用户打开网站的速度

gzip的原理

nginx 实现资源压缩的原理是通过 nginx 默认集成的 ngx_http_gzip_module 模块拦截请求,并对需要压缩的类型做 gzip 压缩

开启gzip

配置文件路径:nginx 安装路径\conf\nginx.conf

在 nginx 的默认配置文件中已经书写了简单开启 gzip 的配置。找到http段内的gzip on;,将其解注释(删除#符号),即可开启最基本的 gzip 服务

配置gzip

常见的配置属性为

gzip_min_length:启用 gzip 压缩的最小文件大小,小于设置值的文件将不会压缩。一般设置为1k

gzip_comp_level:gzip 压缩级别,取值为 1-9,数字越大压缩的越好,也越占 CPU 资源。推荐设置为3

gzip_types:进行压缩的文件类型。javascript 有多种形式。其中的值可以在 mime.types 文件中找到

gzip_vary:是否在 http header 中添加 Vary: Accept-Encoding,建议开启

gzip_disable:禁用 gzip 压缩的条件。IE6 浏览器对 gzip 的支持很差,建议取消对 IE6 的 gzip 压缩

gzip_buffers:设置压缩所需要的缓冲区大小。推荐设置为4 16k

gzip_http_version:设置 gzip 压缩针对的 HTTP 协议版本。默认为 HTTP/1.1,使用反向代理时末端通信为 HTTP/1.0

推荐配置:

# gzip 压缩功能设置
gzip                on;
gzip_min_length     1k;
gzip_comp_level     3;
gzip_types          text/plain text/css application/xml application/json application/javascript application/x-javascript text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml;
gzip_vary           on;
gzip_disable        "MSIE [1-6]\.";
gzip_buffers        4 16k;
gzip_http_version   1.0;

nginx配置多站点

如果需要在一台服务器上为不同的域名运行不同的站点,则需要在 nginx 配置文件中配置相应多个虚拟主机字段

建立多站点目录

虽然可以在 nginx.conf文件中一次性配置很多个 server 段,但是这么做不利于后期维护。建议在配置文件目录下建立一个vhost文件夹,并且为每个站点新建各自的配置文件,将其他的站点配置放入此文件夹中

新建站点配置文件

youzi.cc为例:

站点配置文件路径:E:\Server\nginx\conf\vhost\youzi.cc.conf

  • 在nginx\conf中的nginx.conf编辑配置文件
server {
    listen       80;
    server_name  youzi.cc www.youzi.cc;
    root         E:/youzi/www;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

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

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    # 开启 PHP 监听,将 PHP 脚本传递到 FastCGI 服务
    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;
    }
}

引入多站点配置文件

站点配置文件需要在主配置文件nginx.conf的 http 段中引入

http {
    # 引入多站点配置文件
    include  vhost/*.conf;
}

最后将网站放入root的路径
配置一个nginx+php的web服务器--记录

域名解析

localhost是一个域名,127.0.0.1为IP地址。Windows系统中,约定127.0.0.1为本地IP地址。localhost是其对应的域名。配置是在hosts文件中设置的,Windows下该文件位置为:C:\Windows\System32\drivers\etc目录下hosts文件。
配置一个nginx+php的web服务器--记录
配置一个nginx+php的web服务器--记录

相关标签: nginx php