Nginx与PHP(FastCGI)的安装、配置与优化

合集下载

Windows下Nginx的安装与配置

Windows下Nginx的安装与配置

Windows下Nginx的安装与配置Windows下Nginx的安装与配置Nginx ("engine x") 是一款高性能的,轻量级的HTTP Web服务器和反向代理服务器及电子邮件IMAP/POP3/SMTP代理服务器。

Nginx是由俄罗斯的程序设计师Igor Sysoev 所开发,为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多时间了,Igor 将源代码以类BSD许可证的形式发布。

自Nginx 发布四年来,Nginx 已经因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。

Nginx 超越Apache的高性能和稳定性,使得国内使用Nginx 作为Web 服务器的网站也越来越多。

目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;新近发现Nginx 技术在国内日趋火热,越来越多的网站开始应用部署Nginx。

一、首先去官网下载nginx1.0.11的Windows版本,官网下载:/download/nginx-1.0.11.zip下载到软件包后,解压nginx-nginx1.0.11.zip 包到你喜欢的根目录,并将目录名改为nginx。

然后,执行下列操作:cd nginxstart nginx这样,nginx 服务就启动了。

打开任务管理器,查看nginx.exe 进程,有二个进程会显示,占用系统资源,那是相当的少。

然后再打开浏览器,输入http://127.0.0.1/就可以看到nginx的欢迎页面了,非常友好nginx -s stop // 停止nginxnginx -s reload // 重新加载配置文件nginx -s quit // 退出nginx二、接下来就是配置nginx的conf文件了。

下面是我的配置:#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location ~* software/(.*).*\.(jpg|rar){expires 21d;root d:/temp/;access_log d:/temp/_nginx_s3gd-205.log;proxy_store on;proxy_store_access user:rw group:rw all:rw;proxy_temp_path d:/temp/;proxy_redirect off;proxy_set_header Host 112.25.10.140;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m;client_body_buffer_size 1280k;proxy_connect_timeout 900;proxy_send_timeout 900;proxy_read_timeout 900;proxy_buffer_size 40k;proxy_buffers 40 320k;proxy_busy_buffers_size 640k;proxy_temp_file_write_size 640k;if ( !-e $request_filename){proxy_pass http://112.25.10.140:80;}}location / {root html;index index.html index.htm;}#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;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# 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 /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration ##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443;# server_name localhost;# ssl on;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_timeout 5m;# ssl_protocols SSLv2 SSLv3 TLSv1;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm; # }#}}Windows下Nginx+PHP5的安装与配置方法Nginx 是一个轻量级的高性能Http WebServer,以事件驱动方式编写,因此相比Apache 而言,Nginx 更加稳定、性能更好,而且配置简单,资源占用较低。

004-nginx简介、安装配置【源码安装和mac安装】、基本使用

004-nginx简介、安装配置【源码安装和mac安装】、基本使用

004-nginx简介、安装配置【源码安装和mac安装】、基本使⽤⼀、概述1.1、Nginx是什么 Nginx是⼀款轻量级的Web服务器,也是⼀款轻量级的反向代理服务器【常⽤】。

1.2、Nginx能⼲什么Nginx能⼲的事情很多,这⾥简要罗列⼀些: 1:直接⽀持Rails和PHP的程序 2:作为HTTP反向代理服务器 3:作为负载均衡服务器 4:作为邮件代理服务器 5:帮助实现前端动静分离1.3、Nginx特点 ⾼稳定、⾼性能、资源占⽤少、功能丰富、模块化结构、⽀持热部署⼆、安装配置2.1、源码安装环境:CentOS 安装function nginx_install() {echo"nginx init start ######"if [ -e nginx-1.15.12.tar.gz ]; thenecho"exist nginx-1.15.12.tar.gz"elseecho"nginx download start ……"wget /download/nginx-1.15.12.tar.gzecho"nginx download end ……"fiecho"nginx install start ……"yum -y install gcc-c++yum -y install pcre*yum -y install openssl*tar -zvxf nginx-1.15.12.tar.gzrm -rf $1mkdir -p $1mkdir -p $1/runcd nginx-1.15.12# 指定⽬录安装./configure --prefix=$1 --conf-path=$1/conf/nginx.confmake && make install# 拷贝配置mv $1/conf/nginx.conf $1/conf/nginx.conf.defaultcp ${project_path}/nginx.conf $1/conf/nginx.confmkdir -p $1/runrm -rf nginx-1.15.12echo"nginx install end ……"echo"nginx init end ######"}使⽤nginx_install '/export/servers/nginx'安装注意cp: "conf/koi-win" 与"/application/nginx-1.6.3/conf/koi-win" 为同⼀⽂件错误原因:安装⽬录和解压后的安装包为同⼀个⽬录。

Nginx性能优化有这篇就够了!

Nginx性能优化有这篇就够了!

Nginx性能优化有这篇就够了!⽬录:1、Nginx运⾏⼯作进程数量Nginx运⾏⼯作进程个数⼀般设置CPU的核⼼或者核⼼数x2。

如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo ⽂件 grep ^processor /proc/cpuinfo | wc -l[root@lx~]# vi/usr/local/nginx1.10/conf/nginx.confworker_processes 4;[root@lx~]# /usr/local/nginx1.10/sbin/nginx-s reload[root@lx~]# ps -aux | grep nginx |grep -v greproot 9834 0.0 0.0 47556 1948 ? Ss 22:36 0:00 nginx: master processnginxwww 10135 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker processwww 10136 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker processwww 10137 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker processwww 10138 0.0 0.0 50088 2004 ? S 22:58 0:00 nginx: worker process2、Nginx运⾏CPU亲和⼒⽐如4核配置:worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000⽐如8核配置:worker_processes 8;worker_cpu_affinity 00000001 00000010 00000100 0000100000010000 00100000 01000000 10000000;worker_processes最多开启8个,8个以上性能提升不会再提升了,⽽且稳定性变得更低,所以8个进程够⽤了。

Nginx-1.18.0的安装配置与使用【转】

Nginx-1.18.0的安装配置与使用【转】

Nginx-1.18.0的安装配置与使⽤【转】⼀、安装1.1 yum安装(1) 配置好yum源与epel源#本地光盘yum源[development]name=dvdbase repobaseurl=file:///mnt/cdrom/enabled=1gpgcheck=1gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7#在线阿⾥云yum源[aliyun]name=aliyun repobaseurl=https:///centos/$releasever/os/$basearch/enabled=1gpgchedk=1gpgkey=https:///centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-$releasever#在线阿⾥云EPEL源[aliyunEpel]name=aliyun epelbaseurl=https:///epel/$releasever/$basearchenabled=1gpgcheck=1gpgkey=https:///epel/RPM-GPG-KEY-EPEL-$releasever(2) 安装[root@localhost ~]# yum install -y nginx1.2 编译安装(1) 下载安装包[root@localhost ~]# wget https:///download/nginx-1.18.0.tar.gz(2) 安装相关依赖包[root@localhost ~]# yum install -y gcc pcre-devel openssl-devel zlib-devel(3) 创建nginx⽤户,解压源码包,开始编译安装[root@localhost ~]# useradd -r -s /sbin/nologin nginx[root@localhost ~]# tar -xf nginx-1.18.0.tar.gz[root@localhost ~]# cd nginx-1.18.0/[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx \> --user=nginx \> --group=nginx \> --with-http_ssl_module \> --with-http_v2_module \> --with-http_realip_module \> --with-http_stub_status_module \> --with-http_gzip_static_module \> --with-pcre \> --with-stream \> --with-stream_ssl_module \> --with-stream_realip_module[root@localhost nginx-1.18.0]# make && make install编译代码(4) 启动nginx#直接启动[root@localhost ~]# /usr/local/nginx/sbin/nginx#或创建软链接启动[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/[root@localhost ~]# ll /usr/sbin/nginxlrwxrwxrwx 1 root root 27 Jun 17 11:42 /usr/sbin/nginx -> /usr/local/nginx/sbin/nginx[root@localhost ~]# nginx⼆、配置⽂件详解#全局配置端user nginx nginx; #启动Ngnix⼯作进程的⽤户和组worker_processes [number | auto]; #启动的⼯作进程数worker_cpu_affinity 0001 0010 0100 1000 #将Nginx⼯作进程绑定到指定的CPU核⼼,默认Nginx是不进⾏进程绑定的error_log file [debug | info | notice | warn | error | crit | alert | emerg] #错误⽇志配置#error_log logs/error.log;#error_log logs/error.log notice;pid logs/nginx.pid; #pid⽂件保存路径work_priority 0; #⼯作进程的优先级 -20~19work_rlimit_nofile 65536; #⼯作进程最⼤打开⽂件数daemon off|on; #前台运⾏nginx⽤于测试,docker等环境,默认为onmaster_process off|on; #是否开启Nginx的master-woker⼯作模式,关闭后 nginx就不会fork出worker⼦进程来处理请求,⽽是以master进程⾃⾝来处理请求events { #events设置块worker_connections 1024; #设置单个nginx⼯作进程可以接爱的最⼤并发连接数据; ##在nginx作为http服务器的时候,最⼤连接数为worker_processes * worker_connctions;在nginx作为反向代理服务器的时候,最⼤连接数为worker_processes * worker_connections / 2 use epoll; #使⽤epoll事件驱动,Nginx⽀持众多的事件驱动,⽐如select、poll、epoll,只能设置在events模块中设置accept_mutex on; #优化同⼀时刻只有⼀个请求⽽避免多个睡眠进程被唤醒的设置,on为防⽌被同时唤醒默认为off,全部唤醒的过程也成为"惊群",因此nginx刚安装完以后要进⾏适当的优化multi_accept on; #Nginx服务器的每个⼯作进程可以同时接受多个新的⽹络连接,但是需要在配置⽂件中配置,此指令默认为关闭,即默认为⼀个⼯作进程只能⼀次接受⼀个新的⽹络连接,打开后⼏个同时接受多个}http { #http设置块include mime.types; #导⼊⽀持的⽂件类型default_type application/octet-stream; #设置默认的类型,会提⽰下载不匹配的类型⽂件#⽇志配置部分#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;#⾃定义优化参数sendfile on; #指定是否使⽤sendfile系统调⽤来传输⽂件#tcp_nopush on; #在开启了sendfile的情况下,合并请求后统⼀发送给客户端#tcp_nodelay off; #在开启了keepalived模式下的连接是否启⽤TCP_NODELAY选项,当为off时,延迟0.2s发送,默认为on,不延迟发送,⽴即发送⽤户相应报⽂ keepalive_timeout 65; #设置会话保持时间,单位是秒#gzip on; #开启⽂件压缩server {listen 80; #设置监听地址和端⼝server_name localhost; #设置server name,可以以空格隔开写多个,⽀持正则表达式,如 *,www.aaa.* ~^www\d+\.aaa\.com$ default_server#charset koi8-r; #设置编码格式,默认是俄语格式,可以改为utf-8#access_log logs/host.access.log main; #设备访问⽇志location / {root html; #指定⽹站⽬录index index.html index.htm; #指定默认⽹页⽂件,此指令由ngx_http_index_module模块提供}#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;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ { #以http的⽅式转发php请求到指定web服务器# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ { #以fastcgi的⽅式转发php请求到php处理# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht { #拒绝web形式访问指定⽂件,如很多的⽹站都是通过.htaccess⽂件来改变⾃⼰的重定向等功能。

实战Nginx与PHP(FastCGI)的作用、安装、配置与优化

实战Nginx与PHP(FastCGI)的作用、安装、配置与优化

实战Nginx与PHP(FastCGI)的作用、安装、配置与优化一、什么是 FastCGIFastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。

多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP。

FastCGI是从CGI发展改进而来的。

传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。

这在处理高并发访问时,几乎是不可用的。

另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。

FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。

当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。

这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

二、Nginx+FastCGI运行原理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的整个运作过程。

关于配置FastCGI中的一些错误

关于配置FastCGI中的一些错误
http error 500 - server error.
internet information services (iis)
这个错误是由于在解压php之后,没有对iis启动帐户赋予该目录的读取和运行权限.修改文件夹安全属性,问题解决.
错误3,
FastCGI Error
The FastCGI Handler was unable to process the request.
顺便说一句,微软Web平台安装FastCGI时,会自动选择合适的PHP版本(32位或64位),不需要人工去区别了
-我按以上问题处理流程处理,问题依旧,因此我将 ExePath=C:\Program Files\PHP\php-cgi.exe 这句(我的是d:/php53/php-cgi.exe) 将 ” / “ 改成 ” \ “ 即可
1、在页头使用date_default_timezone_set()设置我的默认时区为北京时间,即
< ?php
date_default_timezone_set("PRC");
?>就可以了。
2、在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC,同时取消这一行代码的注释,即去掉前面的分号就可以了。
InstanceMaxRequests=10000
ActivityTimeout=300
RequestTimeout=600
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:C:\ProgramFiles\PHP\
这样配置之后,PHP程序就可以正常运作啦!

[lnmp(centos6.2+nginx+mysql+php)环境搭建系统教程--之第五步php安装]

[lnmp(centos6.2+nginx+mysql+php)环境搭建系统教程--之第五步php安装]

php安装将libiconv-1.13.1.tar.gz上传至/software#tar zxf libiconv-1.13.1.tar.gz#cd libiconv-1.13.1#./configure --prefix=/usr/local/#make && make install#cd ..将libmcrypt-2.5.8.tar.gz 上传至/software#tar zxf libmcrypt-2.5.8.tar.gz#cd libmcrypt-2.5.8#./configure#make && make install#/sbin/ldconfig#cd libltdl#./configure --enable-ltdl-install#make && make install#cd ../../将mhash-0.9.9.9.tar.gz上传至/software#tar zxf mhash-0.9.9.9.tar.gz#cd mhash-0.9.9.9/#./configure#make && make install#cd ../#ln -s /usr/local/lib/ /usr/lib/#ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so#ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4#ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 #ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a#ln -s /usr/local/lib/ /usr/lib/#ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so#ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2#ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 #ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config将mcrypt-2.6.8.tar.gz上传至/software#tar zxvf mcrypt-2.6.8.tar.gz#cd mcrypt-2.6.8/#/sbin/ldconfig#./configure#make && make install#cd ../将php-5.4.3.tar.gz上传至/softwarephp5.3.3以后的版本源码不需要再打php-fpm补丁,该补丁已集成进php5.3.3, 在编译时,不需再–enable-fastcgi了,在php5.3.3中强制启用fastcgi了。

nginx安装升级及配置详解

nginx安装升级及配置详解

nginx安装升级及配置详解1.简介2.安装配置3.配置⽂件介绍4.启动、停⽌、平滑重启、升级⼀、Nginx简介Nginx(engine x)是俄罗斯⼈Igor Sysoev编写的⼀款⾼性能的http和反向代理服务器。

在连接⾼并发的情况下,nginx是apache服务器不错的替代品,它能够⽀持50000个并发连接数的响应,⽽内存、cpu等系统资源资源消耗却⾮常低,运⾏⾮常稳定。

性能优势:作为web服务器,处理静态⽂件、索引⽂件及⾃动索引效率⾼作为代理服务器,快速⾼效反向代理作为负载均衡服务器性能,⽀持多并发的连接,占⽤低内存稳定,采⽤分段资源分配技术⾼可⽤,⽀持热部署,启动迅速其它特点:成本低廉;配置⽂件⾮常简单;⽀持Rewrite重写规则,能够根据域名、URL的不同,将http请求分到不同的后端服务器群组;内置健康检查功能,如果nginx proxy后端的某台web服务器宕机了,不会影响到前端的访问;节省带宽,⽀持gzip压缩;⼆、Nginx安装与配置编译安装1.⾸先下载gcc编译器以及nginx⼀些模块的依赖库,通常有pcre库(⽀持rewrite模块),zlib(⽀持gzip模块)库,openssl(⽀持ssl模块)库等。

这些库可以编译安装,也可以yum安装,这⾥选择yum安装。

# yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel2.然后选择nginx版本下载源码并解压# tar –zxvf nginx-1.12.2.tar.gz –C /PATH3.使⽤configure脚本⾃动⽣成Makefile⽂件,nginx的configure脚本⽀持常⽤选项如下,但⾸先给出⼀个例⼦:./configure --prefix=/usr/local/nginx \--conf-path=/etc/nginx/nginx.conf \--error-log-path=/datadisk/data/log/nginx/error.log \--http-log-path=/datadisk/data/log/nginx/access.log \--pid-path=/var/run/nginx.pid \--lock-path=/var/run/nginx.lock \--http-client-body-temp-path=/var/cache/nginx/client_temp \--http-proxy-temp-path=/var/cache/nginx/proxy_temp \--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \--http-scgi-temp-path=/var/cache/nginx/scgi_temp \--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_gunzip_module \--with-http_gzip_static_module \--with-http_random_index_module \--with-http_secure_link_module \--with-http_stub_status_module \--with-http_auth_request_module \--with-threads --with-stream \--with-stream_ssl_module \--with-http_slice_module \--with-file-aio \--with-http_v2_module \--with-ipv6然后make && make install即可。

windows下nginx安装、配置与使用

windows下nginx安装、配置与使用

windows下nginx安装、配置与使用1)下载地址:从nginx官网下载相应的安装包2)启动解压至c:\nginx,运行nginx.exe(即nginx -c conf\nginx.conf),默认使用80端口,日志见文件夹C:\nginx\logs3)使用http://localhost4)关闭nginx -s stop 或taskkill /F /IM nginx.exe > nul5)常用配置C:\nginx\conf\nginx.conf,使用自己定义的conf文件如my.conf,命令为nginx -c conf\my.conf常用配置如下:Nginx.conf代码http {server {#1.侦听80端口listen 80;location / {# 2. 默认主页目录在nginx安装目录的html子目录。

root html;index index.html index.htm;# 3. 没有索引页时,罗列文件和子目录autoindex on;autoindex_exact_size on;autoindex_localtime on;}# 4.指定虚拟目录location /tshirt {alias D:\programs\Apache2\htdocs\tshirt;index index.html index.htm;}}# 5.虚拟主机配置server {listen 80;server_name ;access_log /logs/access.log;location / {index index.html;root /htdocs;}}}http {server {#1.侦听80端口listen 80;location / {# 2. 默认主页目录在nginx安装目录的html子目录。

root html;index index.html index.htm;# 3. 没有索引页时,罗列文件和子目录autoindex on;autoindex_exact_size on;autoindex_localtime on;}# 4.指定虚拟目录location /tshirt {alias D:\programs\Apache2\htdocs\tshirt;index index.html index.htm;}}# 5.虚拟主机配置server {listen 80;server_name ;access_log /logs/access.log;location / {index index.html;root /htdocs;}}}小提示:运行nginx -V可以查看该Win32平台编译版支持哪些模块。

fastcgi性能调优(转)

fastcgi性能调优(转)

fastcgi性能调优(转)-FPM配置及使⽤总结:-FPM是⼀个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中,我们必须将其patch 到PHP源代码中,然后再⾏编译才能使⽤。

⽽现在我们可以在PHP 5.3.2及更新版本中直接开启并使⽤即可,因为PHP从该版本已经将其收⼊到软件包中,所以其不再是补丁包的存在了。

· ⼏个概念的理解· Nginx+PHP配置· Php-Fpm的操作⼀、⼏个概念的理解1)、CGICGI全称“公共⽹关接⼝”(Common Gateway Interface),是HTTP服务器与其它机器上的程序进⾏通信的接⼝,其程序须运⾏在⽹络服务器上。

NOTE:CGI可以⽤任何⼀种语⾔编写,只要这种语⾔具有标准输⼊、输出和环境变量。

2)、FastCGIFastCGI是⼀个常驻型的CGI,它可以⼀直执⾏,只要激活后,不会每次都要花费时间去fork⼀次(这是CGI最为⼈诟病的fork-and-execute模式)。

它还⽀持分布式的运算,即 FastCGI 程序可以在⽹站服务器以外的主机上执⾏并且接受来⾃其它⽹站服务器来的请求。

FastCGI是语⾔⽆关的、可伸缩的CGI开放扩展,其主要⾏为是将CGI解释器进程保持在内存中并因此获得较⾼的性能。

我们知道,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保存在内存中并接受FastCGI进程管理器调度,那么就可以提供良好的性能、伸缩性等。

优点:1. FastCGI具有语⾔⽆关性;2. FastCGI独⽴于核⼼web服务器运⾏,提供了⼀个⽐API更安全的环境。

APIs把应⽤程序的代码与核⼼的web服务器链接在⼀起,这意味着在⼀个错误的API的应⽤程序可能会损坏其他应⽤程序或核⼼服务器。

⽽恶意的API的应⽤程序代码甚⾄可以窃取另⼀个应⽤程序或核⼼服务器的密钥;3. FastCGI技术⽬前⽀持语⾔有:C/C++、、Perl、Tcl、、SmallTalk、Ruby等。

Nginx 配置文件nginx.conf的完整配置说明

Nginx 配置文件nginx.conf的完整配置说明

#用户用户组user www www;#工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点worker_processes 5;#错误日志error_log logs/error.log;#pid文件位置pid logs/nginx.pid;worker_rlimit_nofile 8192;events {#工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行worker_connections 4096;}http {include conf/mime.types;#反向代理配置,可以打开proxy.conf看看include /etc/nginx/proxy.conf;#fastcgi配置,可以打开fastcgi.conf看看include /etc/nginx/fastcgi.conf;default_type application/octet-stream;#日志的格式log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#访问日志access_log logs/access.log main;sendfile on;tcp_nopush on;#根据实际情况调整,如果server很多,就调大一点server_names_hash_bucket_size 128; # this seems to be required for some vhosts#这个例子是fastcgi的例子,如果用fastcgi就要仔细看server { # php/fastcgilisten 80;#域名,可以有多个server_name ;#访问日志,和上面的级别不一样,应该是下级的覆盖上级的access_log logs/domain1.access.log main;root html;location / {index index.html index.htm index.php;}#所有php后缀的,都通过fastcgi发送到1025端口上#上面include的fastcgi.conf在此应该是有作用,如果你不include,那么就把fastcgi.conf的配置项放在这个下面。

Nginx优化详解(超详细)

Nginx优化详解(超详细)

Nginx优化详解(超详细)⼀、⼀般来说nginx 配置⽂件中对优化⽐较有作⽤的为以下⼏项:1. worker_processes 8;nginx 进程数,建议按照cpu 数⽬来指定,⼀般为它的倍数 (如,2个四核的cpu计为8)。

2. worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将⼀个进程分配到多个cpu。

3. worker_rlimit_nofile 65535;这个指令是指当⼀个nginx 进程打开的最多⽂件描述符数⽬,理论值应该是最多打开⽂件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持⼀致。

现在在linux 2.6内核下开启⽂件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

查看linux系统⽂件描述符的⽅法:[root@web001 ~]# sysctl -a | grep fs.filefs.file-max = 789972fs.file-nr = 51007899724. use epoll;使⽤epoll 的I/O 模型(补充说明:与apache相类,nginx针对不同的操作系统,有不同的事件模型A)标准事件模型Select、poll属于标准事件模型,如果当前系统不存在更有效的⽅法,nginx会选择select或pollB)⾼效事件模型Kqueue:使⽤于 FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X. 使⽤双处理器的MacOS X系统使⽤kqueue可能会造成内核崩溃。

PHP的安装步骤

PHP的安装步骤

PHP的安装步骤PHP的安装步骤PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。

它可以比CGI或者Perl更快速地执行动态网页。

用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

以下是店铺为大家搜索整理的PHP的.安装步骤,希望能给大家带来帮助!更多精彩内容请持续关注我们店铺!安装(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize一、phpize是干嘛的?phpize是什么东西呢?php官方的说明:phpize是用来扩展php扩展模块的,通过phpize可以建立php 的外挂模块比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块,可以使用phpize,通过以下几步工作。

二、如何使用phpize?当php编译完成后,php的bin目录下会有phpize这个脚本文件。

在编译你要添加的扩展模块之前,执行以下phpize就可以了;比如现在想在php中加入memcache扩展模块:我们要做的只是如下几步————————————————————————tar zxvf memcache-2.2.5.tgzcd memcache-2.2.5//usr/local/webserver/php/bin/phpize./configure –with-php-config=/usr/local/webserver/php/bin/php-configmakemake install————————————————————————注意./configure 后面可以指定的是php-config文件的路径这样编译就完成了,还需要做的是在php.ini文件中加入extension值extension = “memcache.so”---------------------------------------------------------注意:Cannot find config.m4.这个错误是一个很傻的错误,解压以后需要cd到文件夹,不然phpize就会报错动态编译PHP的memcache扩展库,在执行/usr/localphp/bin/phpize时出现了错误,Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.很明显缺少文件,需要安装。

Linux环境安装PHP+Mysql+apache+nginx详细攻略

Linux环境安装PHP+Mysql+apache+nginx详细攻略

Linux环境安装PHP+Mysql+apache+nginx详细攻略Centos 5.5 32bitApache 2.2.17Nginx 0.8.54MySQL 5.1.55PHP 5.2.17一、重装Centos系统,删除不比要的程序,并安装相关组件:yum -y remove httpd mysql php安装相关组件yum -y install yum-fastestmirroryum -y updateyum -y install patch make gcc gcc-c++ gcc-g77 flex bison taryum -y install libtool libtool-libs kernel-devel autoconf213yum -y install libjpeg libjpeg-devel libpng libpng-develyum -y install libtiff libtiff-devel gettext gettext-develyum -y install freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel yum -y install file glib2 glib2-devel bzip2 diff* openldap-develyum -y install bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs yum -y install e2fsprogs-devel krb5 krb5-devel libidn libidn-develyum -y install openssl openssl-devel vim-minimal unzipexport PHP_AUTOCONF=/usr/bin/autoconf-2.13export PHP_AUTOHEADER=/usr/bin/autoheader-2.13安装PHP 5.2.x 所需的支持库cd /usr/local/srcwget -c /pub/gnu/libiconv/libiconv-1.13.1.tar.gztar zxvf libiconv-1.13.1.tar.gzcd libiconv-1.13.1/./configure --prefix=/usr/localmakemake installcd ../wget -c /~provos/libevent-2.0.10-stable.tar.gztar zxvf libevent-2.0.10-stable.tar.gzcd libevent-2.0.10-stable/./configure --prefix=/usrmakemake installcd ../wget -c /sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz tar zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configuremakemake install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-installmakemake installcd ../../wget -c /sourceforge/mhash/mhash-0.9.9.9.tar.gz tar zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremakemake installcd ../ln -s /usr/local/lib/ /usr/lib/ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/ /usr/lib/ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-configwget -c /sourceforge/mcrypt/mcrypt-2.6.8.tar.gztar zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8/./configuremakemake installcd ../安装GD图形支持库:cd /usr/local/srcwget /releases/gd-2.0.35.tar.gztar xzvf gd-2.0.35.tar.gzcd gd-2.0.35./configure --prefix=/usr/local/gd --mandir=/usr/share/man --with-jpeg --with-png --with-freetype --with-zlib --with-fontconfigmake //如果GD报错:configure.ac:64: warning: macro `AM_ICONV' not found in library 你就make clean一下,然后再makemake install二、安装 Mysql 5.1.x:1)先安装Google的开源TCMalloc库,可以提高MySQL在高并发情况下的性能cd /usr/local/srcwget-c /files/google-perftools-1.7.tar.gztar zxvf google-perftools-1.7.tar.gzcd google-perftools-1.7/./configuremake && make installecho "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf/sbin/ldconfigcd ../2)开始安装Mysql 5.1.xcd /usr/local/srcwget -c http://mysql.proserve.nl/Downloads/MySQL-5.1/mysql-5.1.55.tar.gztar -zxvf mysql-5.1.55.tar.gzcd mysql-5.1.55./configure --prefix=/usr/local/mysql --with-extra-charsets=all--enable-thread-safe-client --enable-assembler --with-charset=utf8--enable-thread-safe-client --with-big-tables --with-readline --with-ssl--with-embedded-server --enable-local-infile --without-debug --without-innodb --without-isam --with-mysqld-ldflags=-ltcmalloc_minimalmake && make installcd ../groupadd mysqluseradd -g mysql mysqlcp /usr/local/mysql/share/mysql/f /etc/f/usr/local/mysql/bin/mysql_install_db --user=mysqlchown -R mysql /usr/local/mysql/varchgrp -R mysql /usr/local/mysql/.cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqlchmod 755 /etc/init.d/mysqlchkconfig --level 345 mysql onecho "/usr/local/mysql/lib/mysql" >> /etc/ld.so.confecho "/usr/local/lib" >>/etc/ld.so.confldconfigln -s /usr/local/mysql/lib/mysql /usr/lib/mysqlln -s /usr/local/mysql/include/mysql /usr/include/mysqlservice mysql start/usr/local/mysql/bin/mysqladmin -u root password mgrei //修改红色部分为你的密码service mysql restart3)设置MySQL:打开“/etc/f”文件,修改以下设置,如果没有,可手动添加:关闭远程连接,即3306端口。

配置nginx支持php,jsp,asp,aspxWEB安全 电脑资料

配置nginx支持php,jsp,asp,aspxWEB安全 电脑资料

配置nginx支持php,jsp,asp,aspxWEB平安电脑资料配置nginx支持php,jsp,asp,aspx…说到Nginx,大家应该比拟熟悉了吧,虽然出现地比拟晚,但是他优良的性能让很多系统工程师折服,并被大量的采用,让nginx通过fastcgi支持php已经介绍过了,这里仅介绍让nginx 反向代理tomcat等jsp容器来serve jsp页面的方法:假设你已经配置了tomcat并跑在本机的8080端口,翻开你的虚拟机配置文件,加下以下几行:location / {proxypass 127.0.0.1:8080;proxyredirect off;proxysetheader Host $host;proxysetheader X-Real-IP $remoteaddr;proxysetheader X-Forwarded-For $proxyaddxforwardedfor; clientmaxbodysize 10m;clientbodybuffersize 128k;proxyconnecttimeout 30;proxysendtimeout 30;proxyreadtimeout 30;proxybuffersize 4k;proxybuffers 4 32k;proxybusybufferssize 64k;proxytempfilewritesize 64k;}OK啦,jsp可以跑了!想径向代理IIS?apache?——尽管去做吧!PS:现在官方已经推出Windows版本的Nginx,所以支持Asp或者.就完全是水到渠成了,可以直接在一台机器上做了,不用完全依赖mono 了,模板,内容仅供参考。

windows下Nginx和PHP的安装与配置

windows下Nginx和PHP的安装与配置

一.软件准备1.Nginx:/download/nginx-1.0.4.zip2.php:/download/php-5.2.17-Win32-VC6-x86.zip这里需要注意一下,如果使用Apache或Nginx运行php,要选择VC6的线程安全版本,使用IIS选择VC9版本。

所以这里使用前者。

3.RunHiddenConsole:/attachments/660/RunHiddenConsole.zip 用于隐藏命令行窗口。

二.安装php直接解压php-5.2.17-Win32-VC6-x86.zip文件到php的安装目录PHP_PATH,然后在PATH中添加PHP的安装路径PHP_PATH和PHP_PATH/ext。

将PHP_PATH下的php.ini-dist重命名为php.ini,这个就是PHP的配置文件。

然后修改这个文件。

1.将register_globals = Off修改为On,这个选项是为了直接打开全局变量的,例如$POST["varname"]可以直接通过$varname访问。

2.添加php加载的模块。

通过添加extensions=xxx.dll来实现,这样php就可以自动加载相应的模块。

还需要指定需要加载的模块的路径,默认大部分模块的dll文件在PHP_PATH/ext下,所以把这个路径添加到PA TH中即可,前文已经完成这个操作。

三.安装Nginx直接解压nginx-1.0.4.zip到安装路径NGINX_PATH,启动ngix:>cd NGINX_PA TH>nginxNginx的选项:nginx -s signal 向Nginx主进程发送信号,signal取值:stop,quit,reopen,reloadnginx -c filename 用指定的配置文件来初始化nginx,默认是NGINX_PATH/conf/nginx.conf四.Nginx和php配置1.在WIndows环境下,Nginx可以通过FaseCGI守护进程与php 进行交互,这个守护进程是以php-cgi.exe的形式存在的。

linux nginx安装配置文件支持php

linux nginx安装配置文件支持php

linux nginx安装配置文件支持php2010-02-06 14:00 佚名 csdn 字号:t | tLinux Nginx 超越 Apache 的高性能和稳定性,使得国内使用Linux Nginx作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。

AD:51CTO学院:IT精品课程在线看!在向大家详细介绍Linux Nginx之前,首先让大家了解下Linux Nginx,然后全面介绍Linux Nginx,希望对大家有用。

利用Linux Nginx架设高性能的Web环境 Linux Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

Linux Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。

Igor 将源代码以类BSD许可证的形式发布。

Linux Nginx 超越 Apache 的高性能和稳定性,使得国内使用Linux Nginx作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。

实验环境Centos4.51.pcre-7.8.tar.gz 正则表达式下载地址:ftp:///pub/software/programming/pcre/2.nginx-0.7.26.tar下载地址:/3.php-5.2.6.tar.bz2下载地址:/releases/4.php-5.2.6-fpm-0.5.9.diff.gz5.php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi下载地址:/6.注:PHP的版本要和fpm的版本一致mysql-5.0.67.tar.gz7.Discuz!_6.0.0_SC_UTF8.zip1、安装pcre1.# tar -zxvf pcre-7.8.tar.gz2.# cd pcre-7.83.# ./configure4.# make && make install2、安装Linux Nginx1.# tar -zxvf nginx-0.7.26.tar.gz2.# cd nginx-0.7.263.# ./configure --prefix=/usr/local/nginx4.# make && make install1.启动nginx# /usr/local/nginx/sbin/nginx2.停止nginx# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`3.重启nginx kill -HUP `cat /usr/local/nginx/logs/nginx.pid`4.添加到自启动# echo "/usr/local/nginx/sbin/nginx">>/etc/rc.local3、安装mysql1.# tar -zxvf mysql-5.0.67.tar.gz2.# cd mysql-5.0.673.# groupadd mysql4.# useradd -g mysql -s /sbin/nologin -M mysql5.# ./configure --prefix=/usr/local/mysql --with-charset=gbk--with-extra-charset=all --enable-hread-safe-client--enable-local-infile --with-low-memory6.# make && make install7.# cp support-files/f /etc/f8.# chown -R mysql.mysql /usr/local/mysql/9.# /usr/local/mysql/bin/mysql_install_db --user=mysql10.# chown -R root.root /usr/local/mysql/11.# chown -R mysql.mysql /usr/local/mysql/var/启动数据库服务,并添加到自启动1.# /usr/local/mysql/bin/mysqld_safe --user=mysql &2.#cp support-files/mysql.server /etc/rc.d/init.d/mysqld3.#chmod 755 /etc/rc.d/init.d/mysqld加入自动启动服务队列:1.#chkconfig --add mysqld2.#chkconfig --level 345 mysqld on添加root密码3.# /usr/local/mysql/bin/mysqladmin -u root password "123456"4.测试一下:# /usr/local/mysql/bin/mysql -u root -p输入密码:123456,看能不能进入到数据库配置库文件搜索路径1.# echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf2.# ldconfig3.# ldconfig -v4.添加/usr/local/mysql/bin到环境变量PATH中5.#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile6.#source /etc/profile4、安装PHP这里产生的是可执行文件,和apache的不一样,和apache结合的时候产生的是动态库1.# tar -jxvf php-5.2.6.tar.bz22.# gzip -cd php-5.2.6-fpm-0.5.9.diff.gz |patch -d php-5.2.6 -p13.# cd php-5.2.64.# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --enable-fastcgi --enable-fpm5.--with-config-file-path=/usr/local/php/etc --enable-force-cgi-redirect6.# make && make install7.# cp php.ini-recommended /usr/local/php/etc/php.ini8.# vi /usr/local/php/php-fpm.conf1.(1)<value name="listen_address">127.0.0.1:9000</value>修改为<value name="listen_address">IP:9000</value>//本机就用默认的127.0.0.12.(2)下面这两行去掉注释并修改3.<value name="sendmail_path">/usr/sbin/sendmail -t -i</value>4.<value name="display_errors">1</value>5.(3)<value name="user">nobody</value> //去注释6.(4)<value name="group">nobody</value> //去注释7.(5)<value name="allowed_clients">127.0.0.1</value> //允许连接的PC,本机就用127.0.0.1启动php-fpm# /usr/local/php/sbin/php-fpm start添加到自启动# echo"/usr/local/php/sbin/php-fpm start">>/etc/rc.local5、修改Linux Nginx的配置文件,支持PHP1.# vi /usr/local/nginx/conf/nginx.confer nobody;3.worker_processes 8;4.pid /usr/local/nginx/logs/nginx.pid;5.worker_rlimit_nofile 1024;7.{use epoll;8.worker_connections 1024;}9.http{10.include mime.types;11.default_type application/octet-stream;12.server_names_hash_bucket_size 128;13.client_header_buffer_size 32k;rge_client_header_buffers 4 32k;15.client_max_body_size 8m;1.sendfile on;2.tcp_nopush on;3.keepalive_timeout 60;4.tcp_nodelay on;5.fastcgi_connect_timeout 300;6.fastcgi_send_timeout 300;7.fastcgi_read_timeout 300;8.fastcgi_buffer_size 64k;9.fastcgi_buffers 4 64k;10.fastcgi_busy_buffers_size 128k;11.fastcgi_temp_file_write_size 128k;12.gzip on;13.gzip_min_length 1k;14.gzip_buffers 4 16k;15.gzip_http_version 1.0;16.gzip_comp_level 2;17.gzip_types text/plain application/x-javascript text/css application/xml;18.gzip_vary on;19.21.listen 80;22.server_name ;23.root /var/www/blog;24.index index.html index.htm index.php;25.location ~ .*\.(php|php5)?$ {26.root html;27.fastcgi_pass 127.0.0.1:9000;28.fastcgi_index index.php;29.fastcgi_param SCRIPT_FILENAME /var/www/blog$fastcgi_script_name;30.include fastcgi_params;}31.location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$32.{expires 30d;}33.location ~ .*\.(js|css)?$34.{expires 1h;}35.log_format access '$remote_addr -$remote_user [$time_local] "$request" '36.'$status $body_bytes_sent "$http_referer" '37.'"$http_user_agent" $http_x_forwarded_for';38.access_log /var/logs/access.log access;}}注:server部分为PHP虚拟主机127.0.0.1:9000为fastcgi的PC,我这里用的本机/var/www/blog$fastcgi_script_name; 为PHP网页保存的目录测试配置文件:# /usr/local/nginx/sbin/nginx -t6、优化Linux内核参数1.# vi /etc/sysctl.conf2.在末尾增加以下内容:.ipv4.tcp_fin_timeout = 30.ipv4.tcp_keepalive_time = 300.ipv4.tcp_syncookies = 1.ipv4.tcp_tw_reuse = 1.ipv4.tcp_tw_recycle = 1.ipv4.ip_local_port_range = 5000 65000 使配置立即生效:# /sbin/sysctl -p。

nginx调用php-fpm出错解决方法和nginx配置详解

nginx调用php-fpm出错解决方法和nginx配置详解

nginx调⽤php-fpm出错解决⽅法和nginx配置详解装完了nginx和php-5.5,配置好了nginx调⽤php后,就开始启动php-fpm。

使⽤下⾯的命令复制代码代码如下:/usr/local/php/sbin/php-fpm就可以启动了。

在nginx的⽬录中创建个php的检测脚本index.php悲剧的发现居然⽆法打开。

查看⽇志⽂件,看了下报错原因复制代码代码如下:2013/07/01 22:34:26 [error] 3214#0: *64 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.168.19, server: localhost, request: "GET /index.php HTTP/1.1", upstream:"fastcgi://127.0.0.1:9000", host: "192.168.168.140"查看下端⼝。

看到php-fpm的9000端⼝已经打开了,说明php-fpm是没什么问题的,问题出在了nginx上了。

可能是我的配置⽂件有问题。

找到nginx加载php配置的那块。

另外参考了下⽹上nginx的配置⽂件。

在第69⾏有⼀个调⽤脚本路径复制代码代码如下:fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;我把路径改下,改成下⾯的就可以了。

复制代码代码如下:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;可以出现php的版本信息了。

⼤家还可以参考下⾯的配置⽅法php-fpm不⽤再依赖其它的fastcgi启动器,⽐如lighttpd的spawn-fcgi。

php fpm工作原理

php fpm工作原理

php fpm工作原理PHP-FPM(FastCGI Process Manager)是一个用于管理和处理PHP 进程的技术。

它是作为 PHP 5.3.3 版本后的默认安装方式,并在 PHP 7 中得到了改进。

PHP-FPM 是一个独立的 PHP 处理程序,与 Web 服务器(如 Nginx 或 Apache)分离运行,以提高 PHP 的性能和可靠性。

PHP-FPM 的工作原理如下:1. 配置 PHP-FPM:在 PHP-FPM 的配置文件中,可以设置PHP 进程池的大小、内存限制等参数。

可以为不同的 PHP 应用程序配置不同的进程池,以提供适合每个应用程序的资源。

2. 建立连接:Web 服务器(如 Nginx)接收到客户端的请求后,将请求转发给 PHP-FPM。

3. 进程管理:PHP-FPM 根据配置的进程池大小,为每个请求分配一个PHP 进程。

如果当前进程池中没有空闲的进程可用,则根据配置的规则创建新的 PHP 进程。

进程数通常由服务器的负载和可用资源决定。

4. 处理请求:每个 PHP 进程独立处理一个请求。

它们读取并解析 PHP 脚本,并执行脚本中的代码。

PHP-FPM 使用FastCGI 协议与 Web 服务器通信,以便在每个请求之间共享状态和数据。

5. 处理结果:PHP 进程处理完请求后,将结果返回给 Web 服务器。

Web 服务器再将结果返回给客户端,完成整个请求-响应过程。

6. 进程回收:PHP-FPM 会监控进程的运行状态,如果某个PHP 进程超时或发生错误,PHP-FPM 会终止该进程并重新创建一个新的进程,以确保服务的可靠性。

PHP-FPM 不仅提高了 PHP 的性能,还增加了一些功能,如进程管理、请求限制和资源控制。

它可以通过调整配置参数以及与 Web 服务器和其他 PHP 扩展的配合使用,进一步优化和提高 PHP 应用程序的性能和可靠性。

在windows的PHP环境下安装Nginx

在windows的PHP环境下安装Nginx

在windows的PHP环境下安装Nginx。

以前一直是用apache做PHP的web服务器。

现在看看如何安装Nginx作为PHP的web 服务器。

1. 下载Ngix : /download/nginx-1.1.12.zip写这篇文章时,windows的最新版本。

2. 下载PHP与Nginx的cgi连接: /attachments/660/RunHiddenConsole.zip。

3. 将下载的Nginx解压到E:\nginx目录下。

4.修改E:\nginx\conf中的nginx.conf配置文件。

修改后如下:(去掉了没用的,可以直接复制,覆盖nginx.conf,只需修改第四步和第七步的项目目录即可。

)[sql]view plaincopy1.worker_processes 1;2.3.error_log logs/error.log; #第一步:打开错误日志4.5.events {6. worker_connections 1024;7.}8.9.http {10. include mime.types;11. default_type application/octet-stream;12. sendfile on;13. keepalive_timeout 65;14. server {15. listen 8088; #第二步:修改端口16. server_name localhost;17.18. charset utf-8; #第三步:修改字符集19.20. location / {21. root E:/workspace; #第四步:修改项目目录22.index index.php index.html index.htm; #第五步:加入indx.php23. autoindex on24. }25.26.27. error_page 500 502 503 504 /50x.html;28. location = /50x.html {29. root html;30. }31.32.33. location ~ \.php$ { #第七步:打开php的location,并进行如下配置34. root E:/workspace;35. fastcgi_pass 127.0.0.1:9000;36. fastcgi_index index.php;37. fastcgi_param SCRIPT_FILENAME E:/workspace$fastcgi_script_name; #修改成项目目录38. include fastcgi_params;39. }40.41.42. }43.}5. 打开php.ini。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nginx与PHP(FastCGI)的安装、配置与优化
FastCGI的介绍和工作原理
首先简单的介绍下FastCGI:
FastCGI是语言无关的、可伸缩结构的CGI开放扩展,其主要行为是将CGI解释器进行保持在内存中并因此获得较高的性能。

众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。

FastCGI的工作原理是:
(1)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。

在文本中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进程。

启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。

(2)当客户端请求达到Web服务器(Nginx)时,Web服务器将请求采用TCP协议或UNIX 套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。

Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

(3)FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器(Nginx)。

当FastCGI子进程关闭连接时,请求便告知处理完成。

FastCGI子进程接着等待并处理来自FastCGI进程管理的下一个连接。

而在一般的普通CGI模式中,php-cgi在此便退出了。

PHP-FPM
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在
/downloads.php下载得到.PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。

必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。

PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi 具有更多优点,所以被PHP官方收录了。

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

安装前准备:
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel \
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel \
zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel \ ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \
krb5 krb5-devel libidn libidn-devel openssl openssl-devel
新版php-fpm安装(推荐安装方式)
wget /get/php-5.5.10.tar.gz/from/this/mirror
tar zvxf php-5.5.10.tar.gz
cd php-5.5.10
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \
--enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath \ --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
--with-gd --with-jpeg-dir
make all install
完成php-fpm后,对其运行用户进行配置:
cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
vi etc/php-fpm.conf
修改:
user = nginx
group = nginx
如果nginx用户不存在,那么先添加nginx用户
groupadd nginx
useradd -g nginx nginx
修改nginx配置文件以支持php-fpm
# 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;
}
创建测试php文件
在/usr/local/nginx/html下创建index.php文件,输入如下内容
<?php
echo phpinfo();
?>
启动php-fpm和nginx
2
/usr/local/php/sbin/php-fpm /usr/local/nginx/nginx。

相关文档
最新文档