> 운영 및 유지보수 > 엔진스 > Debian 시스템에서 PHP 프로그램용 Nginx 서버를 구성하는 방법

Debian 시스템에서 PHP 프로그램용 Nginx 서버를 구성하는 방법

王林
풀어 주다: 2023-05-15 08:01:33
앞으로
1152명이 탐색했습니다.

nginx 설치 방법:

1 apt 네트워크 설치

소스 목록 수정

vi /etc/apt/sources.list
#加入以下源
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
로그인 후 복사

소스 목록을 업데이트하고 apt

apt-key add nginx_signing.key
apt-get update
apt-get install nginx
로그인 후 복사

를 통해 nginx를 설치합니다. 2 소스 코드 컴파일 및 설치
nginx가 먼저 컴파일 환경을 설치해야 하기 때문입니다. 향후 Perl 규칙성, 압축 알고리즘, SSL 및 기타 기능을 사용해야 하므로 관련 라이브러리 파일을 미리 설치해야 합니다.

apt-get install build-essential 
apt-get install libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev libssl0.9.8
로그인 후 복사

nginx의 최신 안정 버전을 다운로드

wget http://nginx.org/download/nginx-1.2.3.tar.gz
압축을 풀고 컴파일 옵션을 봅니다.

tar zxvf nginx-1.2.3.tar.gz
cd nginx-1.2.3
#--help可以看到可以配置的参数
./configure --help
로그인 후 복사

컴파일을 위한 선택적 구성 매개변수를 봅니다( 다음은 일반적으로 사용되는 구성 항목 중 일부입니다.


--prefix=path 지정되지 않은 경우 nginx의 기본 설치 경로입니다. 기본값은 /usr/local/nginx

--sbin-path=path      nginx 실행 명령 파일의 경로입니다. 지정하지 않으면 기본값은

/sbin/nginx</p><p>--conf-path=입니다. path      nginx 구성 파일 경로가 지정되지 않은 경우 기본값은 <prefix>/conf/nginx.conf</p><p>--error-log-path=path nginx.conf에서 오류 로그 경로를 지정하기 위해 error_log를 사용하지 않는 경우, 기본값은 <prefix>/logs /error.log</p><p>--http-log-path=path 액세스된 파일의 로그 저장 경로를 정의합니다. nginx.conf에 access_log가 지정되지 않은 경우 기본값은 <prefix>입니다. /logs/access.log</p><p>- -pid-path=path nginx.conf에서 pid 파일 경로를 지정하기 위해 pid를 사용하지 않는 경우 기본값은 <prefix>/logs/nginx.pid</p><p>--lock-입니다. path=path 잠금 파일은 경로를 저장합니다. nginx에 있는 경우 .conf에 지정되지 않은 경우 기본값은 <prefix>/logs/nginx.lock</p><p>--user=user입니다. 사용자를 정의하는 데 사용되지 않는 경우 nginx.conf에서 실행되는 프로세스의 소유자, 기본값은 none</p><p>-- Group = Group 그룹이 nginx.conf에서 실행되는 사용자 정의 프로세스를 사용하지 않는 경우 기본값은Nobody</p><p>-Builddir = Dir Set Build Directory</p> <p>-With-RTSIG_WITH-SELECT_MO dule 선택 모드를 사용합니다. 현재 플랫폼에 다른 유효한 모드가 없으면 기본적으로 컴파일됩니다. </p><p>--without-select_module             선택 모드 비활성화 </p><p>--with-poll_module                 폴링 모드 사용 , 현재 플랫폼에 다른 유효한 모드가 없으면 기본적으로 컴파일됩니다. </p><p>- -without-poll_module                                                         버그 --with 명령을 사용하여 다음 모듈을 켭니다<p> --with-http_mp4_module mp4 모듈 활성화 </p><p> --with-http_gzip_static_module gzip 모듈 활성화 </p><p> --with-http_secure_link_module 활성화 ngx_http_secure_link_module </p><p> --with-http_stub_status _module 상태 보기 모듈 켜기</p><p> 다음 모듈은 다음에 의해 켜집니다. 기본값이며 관련 모듈을 끄는 옵션 없이 사용할 수 있습니다. </p><p> --without-http_charset_module ngx_http_charset_module 비활성화 </p><p> --without-http_gzip_module gzip 압축 모듈 비활성화 </p><p> --without-http_ssi_module SSL 모듈 비활성화 </p><p> --without - http_userid_module ngx_http_userid_module</p><p> --within-http_access_module 액세스 모듈 비활성화 </p><p> --without-http_auth_basic_module auth_basic 인증 모듈 비활성화 </p><p> --without-http_autoindex_module 디렉터리 목록 모듈 비활성화 </p><p> --without-http_geo_module 지리 모듈 비활성화 </p> <p> --없이 -http_map_module 맵 모듈 비활성화</p><p> --without-http_referer_module ngx_http_referer_module 비활성화</p><p> --without-http_rewrite_module 리디렉션 모듈 비활성화 </p><p> --without-http_proxy_module 프록시 모듈 비활성화 </p><p> --without-http_fastcgi_module fastcgi 모듈 비활성화 </p><p> --with 아웃- http_uwsgi_module ngx_http_uwsgi_module 비활성화</p><p> - -without-http_scgi_module 비활성화 ngx_http_scgi_module</p><p> --without-http_memcached_module 비활성화 ngx_http_memcached_module</p><p> --without-http_limit_conn_module 비활성화 ngx_http_limit_conn_ module</p><p> --without-http_limit _req_module 비활성화 ngx_http_limit_req_module</p><p> --without-http_empty_gif_module 비활성화 ngx_http_empty_gif_module</p> <p> --without-http_browser_module ngx_http_browser_module 비활성화 </p><p> --without-http_upstream_ip_hash_module </p> 업스트림 모듈 비활성화 🎜<p> --with-http_perl_module 开启perl模块<br/> --with-perl_modules_path=path 设置perl模块路径<br/> --with-perl=path 为perl库设置路径<br/> --http-client-body-temp-path=path set path to store http client request body temporary files<br/> --http-proxy-temp-path=path set path to store http proxy temporary files<br/> --http-fastcgi-temp-path=path set path to store http fastcgi temporary files<br/> --http-uwsgi-temp-path=path set path to store http uwsgi temporary files<br/> --http-scgi-temp-path=path set path to store http scgi temporary files<br/> --without-http 禁用http服务<br/> --without-http-cache 禁用http cache<br/> --with-mail 开启mail服务<br/> --with-mail_ssl_module 在mail服务中开启ssl<br/> --without-mail_pop3_module disable ngx_mail_pop3_module<br/> --without-mail_imap_module disable ngx_mail_imap_module<br/> --without-mail_smtp_module disable ngx_mail_smtp_module<br/> --with-google_perftools_module 开启google_perftools模块<br/> --with-cpp_test_module 开启cpp_test模块<br/> --add-module=path enable an external module<br/> --without-pcre 禁止使用perl正则库<br/> --with-pcre 强制使用perl正则库</p><p><strong> 编译安装</strong></p><pre class="brush:bash;">./configure --prefix=/etc/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-file-aio --with-ipv6
로그인 후 복사

结果如下图:

Debian 시스템에서 PHP 프로그램용 Nginx 서버를 구성하는 방법

编译并安装

make && make install
로그인 후 복사

ps:fastcgi回顾
fastcgi是一个可伸缩地、高速地在http server和动态脚本语言间通信的接口。多数流行的http server都支持fastcgi,包括apache、nginx和lighttpd等,同时,fastcgi也被许多脚本语言所支持,其中就有php。fastcgi是从cgi发展改进而来的。传统cgi接口方式的主要缺点是性能很差,因为每次http服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给http服务器。这在处理高并发访问时,几乎是不可用的。另外传统的cgi接口方式安全性也很差,现在已经很少被使用了。fastcgi接口方式采用c/s结构,可以将http服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当http服务器每次遇到动态程序时,可以将其直接交付给fastcgi进程来执行,然后将得到的结果返回给浏览器。这种方式可以让http服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
nginx不支持对外部程序的直接解析,所有的外部程序(包括php)必须通过fastcgi接口来调用。fastcgi接口在linux下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用cgi程序,还需要一个fastcgi的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。当nginx将cgi请求发送给这个socket的时候,通过fastcgi接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过fastcgi接口,沿着固定的socket传递给nginx;最后,nginx将返回的数据发送给客户端,这就是nginx+fastcgi的整个运作过程。

Debian 시스템에서 PHP 프로그램용 Nginx 서버를 구성하는 방법

php-fpm

php5.3版本源码已经默认支持php-fpm了,但是debian6认为它还没经过广泛的测试,所以在debian6的软件仓库中,虽然php版本为5.3.3,但是却没包含php-fpm,如果不想手工编译安装php的话可以换一个源。

修改源列表

vi /etc/apt/sources.list
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all
로그인 후 복사

更新源列表,安装php5-fpm

apt-get update wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
apt-get install php5-fpm
로그인 후 복사

安装其他常用php5组件

apt-get install php5 php5-cgi php5-cli php5-mysql php5-memcache
로그인 후 복사

启动php-fpm

/etc/init.d/php5-fpm start
로그인 후 복사

这样的话最基本的nginx+php环境就搭建完毕了。

nginx配置文件粗解
nginx的配置文件结构类似下图这样的结构:

Debian 시스템에서 PHP 프로그램용 Nginx 서버를 구성하는 방법

配置文件主要参照编译完成后生成的默认配置文件。

主模块的配置选项

user指令设置进程以什么用户运行,在源码编译安装时指定的nginx用户,如果在编译时没有指定,默认是nobody账户,在配置文件中此行处于注释状态, user 指令可以设置两个参数,第一个指定进程所属用户,第二个是可选,指定进程所属组

  user nginx nobody;
로그인 후 복사

设置工作进程数,一个工作进程为一个单线程,在cpu密集型环境中,可以设置worker_processes数目为cpu核数

  worker_processes 4;
로그인 후 복사

指定nginx错误日志文件的位置,如果要禁止错误日志使用error_log /dev/null,error_log可以存在于不同的字段main、http、server等,文件后面可以指定记录的日志的默认等级。

  error_log logs/error.log;
로그인 후 복사

设置pid文件路径,可以使用kill命令发送相关信号

  pid    logs/nginx.pid;
로그인 후 복사

event模块配置选项,event模块主要控制nginx处理连接的方式

  events {

  #如果在configure时指定的不止一个事件模型,可以通过use告诉nginx要使用哪一个模型:seletc、poll、kqueue、epoll、rtsig、/dev/poll、eventport等

  use epoll;

  #worker_connections和worker_processes可以计算你的理论最大链接数, worker_connections*worker_processes

  worker_connections 1024;

}
로그인 후 복사

http模块里面主要是对http服务器相关属性进行设置

 http {

  #可以用include指令包含一些其他文件,支持通配符,可以使用绝对路径,也可以使用相对路径,相对路径以nginx.conf为根据

  include    mime.types;

  #设置默认的mime类型

  default_type application/octet-stream;

  #描述记录日志的格式,在定义格式时可以使用一些变量,各个变了的含义可以从各个模块汇总查找

  log_format main &#39;$remote_addr - $remote_user [$time_local] "$request" &#39;

           &#39;$status $body_bytes_sent "$http_referer" &#39;

           &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;;

  #指定访问日志的路径和格式,缓冲区大小

  access_log logs/access.log main;

  #sendfile拷贝文件在内核态完成,更加高效

  sendfile    on;

  #tcp_nopush   on;

  #可以设置两个值,第一个表示客户端与服务器长连接的超时时间,超过这个时间,服务器将关闭连接。第二个值指定的应答头中keep-alive中timeout的值,让浏览器知道什么时候关闭连接。

  keepalive_timeout 65;

  #开启gzip压缩

  gzip on;

  #在三次握手时,发送给客户端应答后的超时时间,目前还没进入连接状态,只完成了两次握手,如果在规定时间没收到应答包,nginx将关闭链接

  send_timeout 30

  server {

     xxx

  }

}
로그인 후 복사

server模块嵌在http模块中,主要用来配置虚拟主机

  server {

    #指定server字段中可以被访问到的ip地址及端口

    listen    80;

    #将http请求的主机头与server中的server_name参数进行匹配,并找出第一个结果,如果没有server_name参数匹配上,则第一个出现listen的server将被匹配,多域名用空格分割

    server_name www.nginx.com;

    #设个指令是应答头重的content-type字段使用指定的编码集,off表示不在应答头重添加content-type信息

    charset off;

    #指定www.nginx.com域名的访问日志路径及格式

    access_log logs/host.access.log main;

    #如果在url中没有指定文件,则设置一个默认主页,可以设置多个文件,空格分开,可以在http、server、location中设置

    index index.php index.htm;

    #根据url的不同需求进行配置,可以使用字符串和正则匹配,最确切的匹配被使用,搜索到第一个后会停止

    # ~* 不区分大小写;~ 区分大小写;^~ 禁止在字符串匹配后检查正则;= 在url和location之间精确匹配,匹配完成后不做额外搜索。

    location /i/ {

      #请求到达后的文件根目录,在请求中root会把location匹配的值加到root指定的值后面,请求/i/a.php,则会是/html/i/a.php响应

      root  html;

      #在location中设置index

      index index.html index.htm;

    }

    #为错误代码指定相应的错误界面,可以用在http、server、location字段中。

    error_page 404       /404.html;

    # redirect server error pages to the static page /50x.html

    error_page  500 502 503 504 /50x.html;

    #精确匹配50x.html,真实响应是/html/50x.html

    location = /50x.html {

      root  html;

    }

    # proxy the php scripts to apache listening on 127.0.0.1:80

    location ~ \.php$ {

      proxy_pass  http://127.0.0.1;

    }

    #配置php脚本传至fastcgi

    location ~ \.php$ {

     root      html;

     fastcgi_pass  127.0.0.1:9000;

     fastcgi_index index.php;

     #/scripts是php脚本所在的目录

      fastcgi_param script_filename /scripts$fastcgi_script_name;

      include    fastcgi_params;

    }

    #拒绝访问.htaccess文件

    location ~ /\.ht {

      deny all;

    }

  }
로그인 후 복사

위 내용은 Debian 시스템에서 PHP 프로그램용 Nginx 서버를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿