nginx php(如何架设Nginx+Php Web服务器)

本文目录
- 如何架设Nginx+Php Web服务器
- 深入Nginx + PHP 缓存详解
- nginx+php发现cpu使用率过高
- nginx配置支持php
- 谁知道Linux下500M内存,nginx php mysql 怎么分
- Nginx 与 PHP 合并部署与分开部署 哪种性能更好一些
- mac配置php-fpm,nginx运行多版本php
- nginx配置 接口状态200,但是PHP无返回数据,php服务
- windows怎么搭建php开发环境配置
- 如何正确配置 Nginx 和 PHP
如何架设Nginx+Php Web服务器
由于每个过程较繁琐,所以这里说说具体步骤,每个步骤的具体内容可以百度搜索。
安装步骤
一、 编译安装PHP5.2.9所需的支持库
二、编译安装MySQL 5.1.34扩展库
三、编译安装PHP(FastCGI模式)
四、修改php-fpm配置文件
五、创建www用户组及www用户
六、编译安装Nginx
七、创建fcgi.conf文件
八、Nginx配置文件
九、配置开机自动启动Nginx + PHP
十、优化Linux内核参数
深入Nginx + PHP 缓存详解
以下是对Nginx中的PHP缓存进行了详细的分析介绍 需要的朋友可以参考下
Nginx缓存 nginx有两种缓存机制:fastcgi_cache和proxy_cache 下面我们来说说这两种缓存机制的区别吧 proxy_cache 作用是缓存后端服务器的内容 可能是任何内容 包括静态的和动态的 fastcgi_cache 作用是缓存fastcgi生成的内容 很多情况是php生成的动态内容 proxy_cache 缓存减少了nginx与后端通信的次数 节省了传输时间和后端带宽 fastcgi_cache 缓存减少了nginx与php的通信次数 更减轻了php和数据库的压力 proxy_cache 缓存设置
复制代码 代码如下: #注 proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 proxy_temp_path /data /proxy_temp_dir; #设置Web缓存区名称为cache_one 内存缓存空间大小为 MB 天没有被访问的内容自动清除 硬盘缓存空间大小为 GB proxy_cache_path /data /proxy_cache_dir levels= : keys_zone=cache_one: m inactive= d max_size= g; server { listen ; server_name yourdomain ; index index index ; root /data /htdocs/; location / { #如果后端的服务器返回 执行超时等错误 自动将请求转发到upstream负载均衡池中的另一台服务器 实现故障转移 proxy_next_upstream _ _ error timeout invalid_header; proxy_cache cache_one; #对不同的HTTP状态码设置不同的缓存时间 proxy_cache_valid h; #以域名 URI 参数组合成Web缓存的Key值 Nginx根据Key值哈希 存储缓存内容到二级缓存目录内 proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X Forwarded For $remote_addr; proxy_pass //backend_server; expires d; } #用于清除缓存 假设一个URL为 通过访问就可以清除该URL的缓存 location ~ /purge(/ *) { #设置只允许指定的IP或IP段才可以清除URL缓存 allow ; allow / ; deny all; proxy_cache_purge cache_one $host$ $is_args$args; } #扩展名以 php jsp cgi结尾的动态应用程序不缓存 location ~ * (php|jsp|cgi)?$ { proxy_set_header Host $host; proxy_set_header X Forwarded For $remote_addr; proxy_pass //backend_server; } access_log off; } }fastcgi_cache缓存设置
复制代码 代码如下: #定义缓存存放的文件夹 fastcgi_cache_path /tt/cache levels= : keys_zone=NAME: m inactive= d max_size= G; #定义缓存不同的url请求 fastcgi_cache_key "$scheme$request_method$host$uri$arg_filename$arg_x$arg_y"; server { listen ; server_name example ; location / { root /; index index index index php; } location ~ (| php)$ { root /; fastcgi_pass : ; fastcgi_cache NAME; fastcgi_cache_valid h; fastcgi_cache_min_uses ; fastcgi_cache_use_stale error timeout invalid_header _ ; fastcgi_index index php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi conf; #设置缓存的过程中发现无法获取cookie 经查需要定义这句话 fastcgi_pass_header Set Cookie; } log_format access $remote_addr $remote_user "$request" $status $body_bytes_sent "$_referer" "$_user_agent" $_x_forwarded_for ; access_log / }总的来说 nginx的proxy_cache和fastcgi_cache的缓存配置差不多 memcache缓存 在讨论memcache缓存之前 我们先了解下mysql的内存缓存吧 mysql的内存缓存可以在my cnf中指定大小 内存表和临时表不同 临时表也是存放内存中 临时表最大的内存需要通过tmp_table_size= M设定 当数据查过临时表的最大值设定时 自动转为磁盘表 此时因需要进行IO操作 性能会大大下降 而内存表不会 内存满了后 会提示数据满错误 例
复制代码 代码如下: create table test ( id int unsigned not null auto_increment primary key state char( ) type char( ) date char( ) )engine=memory default charset=utf lishixinzhi/Article/program/PHP/201311/21248nginx+php发现cpu使用率过高
程序本身有问题。
nginx+php发现cpu使用率过高,是由于程序本身存在问题,如程序无限循环逻辑。用top命令,根据CPU使用率排序,找出消耗cpu最高的进程关掉即可。
CPU指中央处理器。CentralProcessingUnit,简称CPU,是计算机系统的运算和控制核心。
nginx配置支持php
nginx本身不支持php解析,需要配合php-fpm来配置。
location ~ \.php$ {
root /var/www; #指定php的根目录
fastcgi_pass 127.0.0.1:9000;#php-fpm的默认端口是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
centos下安装php-fpm (php及其它组件已经安装过的情况)
yum install php-fpm
启动php-fpm 并设置开机启动 (centos 7)
systemctl start php-fpm
systemctl enable php-fpm
谁知道Linux下500M内存,nginx php mysql 怎么分
This
is
for
a
system
with
little
memory
(32M
-
64M)
where
MySQL
playsan
important
part,
or
systems
up
to
128M
where
MySQL
is
used
together
withother
programs
(such
as
a
web
server)
cp
/usr/share/mysql/my-medium.cnf
/etc/my.cnf
每个php-fpm占用20M左右的内存,
max_children默认5个,子进程太多反而会增加master
process调度的负担,而且CPU进行过多的上下文切换也会浪费系统资源,得不偿失,所以按
php-fpm.conf
默认配置就好:
pm
=
dynamic
pm.max_children
=
5
pm.start_servers
=
2
pm.min_spare_servers
=
1
pm.max_spare_servers
=
3
***隐藏网址***
max_children
也可以设大点,比如可以设10个,要注意的是,即使内存够大,
max_children也不要弄太多,CPU得跟得上才行。
至于nginx.conf,默认值就好,默认是1个工作进程,单个工作进程最大并发1024。
worker_processes
1;
worker_connections
1024;
别看Nginx默认才一个工作进程(里面包含一个主线程),这并不妨碍Nginx高效。
***隐藏网址***
prefork那一堆工作进程,静态和动态请求都一样占用线程,性能真没Nginx好。
对于多核CPU,Nginx还可以配置绑定
核芯,充分利用多核CPU。
Nginx 与 PHP 合并部署与分开部署 哪种性能更好一些
当然是分开部署了,很简单的理解,同样的一项业务,分散到不同的营业部的话,处理业务的速度会相应加快,如果把人员集中到一个营业部,你会发现,光排队处理一项就把你搞死。
mac配置php-fpm,nginx运行多版本php
1、brew 安装 php5.6 php5.7 nginx
2、配置php-conf
3、配置虚拟主机
安装好brew
用brew 命令安装,如果速度太慢或访问不了,自行goole brew 换源
brew search php 查看可用的php版本
brew install php@5.6 安装php5.6
brew install php@7.1 安装php5.6
brew install nginx 安装nginx
1、修改php5.6 php-fpm的端口为9056
cd usr/local/etc/php/5.6 # 到php5.6的目录下
vi php-fpm.conf # 修改文件
listen = 127.0.0.1:9056 # 修改此端口
daemonize = yes # 修改为允许后台启动php-fpm
2、修改php5.6 php-fpm的端口为9070
cd /usr/local/etc/php/7.1/php-fpm.d # 到php7.1的目录下
vi www.conf # 修改端口
listen = 127.0.0.1:9056 # 修改此端口
vi php-fpm.conf # 修改文件
daemonize = yes # 修改为允许后台启动php-fpm
3、启动php-fpm
cd /usr/local/sbin # 到此目录,建立两个软链接指向不同版本的php
切换到root用户
./php-fpm56
./php-fpm71
启动后可看到php-fpm的进程,则成功
ps-ef | grep php-fpm
cd /usr/local/etc/nginx/ # 到nginx的目录下
复制默认的配置文件到server下(此目录用来存虚拟主机文件)
这里我在server创建了这两个
vi local.phpinfo56.com.conf # 修改本地域名和nginx代理到php-fpm端口,按照这种方法修改另一个
nginx # 启动nginx
nginx -s reload # 修改配置文件,重新加载nginx
vi /etc /hosts # 修改host 加上映射关系
cd /usr /local/var/www # 在此目录下建立一个index.php
echo "《?php phpinfo();" 》 index.php
在浏览器访问可看到
nginx配置 接口状态200,但是PHP无返回数据,php服务
nginx配置可能有问题。导致nginx不能解析PHP文件,检测nginx里对于php的配置信息。
windows怎么搭建php开发环境配置
下载必要的软件工具。nginx请到nginx.org下载,php7请到windows.php.net下载。
下载到本地磁盘,放在同一个文件夹下,将上面两个文件解压,注意解压PHP7之后重命名一下(我这里取的是php7,官方的压缩包命名有特殊字符,以防运行出错,最好重命名)。
修改nginx的配置文件nginx.conf。将server{}里面的
location / {
root e:/www;
index index.php index.html index.htm;
}
去掉注释。其中root 是你写的PHP代码的文件夹目录。你可以根据自己的状况自定义。
让nginx支持PHP。找到nginx.conf文件里的
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
下面的配置。将这段配置取消注释,并对fastcgi_param进行修改,注意图片中78行和79行的区别。79行是修改后的正确配置。以上修改完成后保存。
修改将PHP配置文件。将PHP目录下的php.ini.development或php.ini.production重命名为php.ini即可。
启动nginx和PHP7。对于nginx直接鼠标双击就可以了。而PHP需要在命令提示符中打开,执行 D:\wnmp\php7\php-cgi.exe -b 127.0.0.1:9000 路径可能因不同的文件存放而不同。
最后在上面配置中root 所配置的文件夹目录下新建index.php文件,里面内容为
《?php
phpinfo();
?》
打开浏览器,网址输入localhost,即可出现如下内容。到此PHP7开发环境已经搭建完成。
如何正确配置 Nginx 和 PHP
直接贴上代码逐行进行讲解,此处贴出一个能正常启动php脚本的最简nginx vhost配置:
view plain copy
server {
listen 8011;
server_name test.cn;
location ~ \.php?.*$ {
root /share/test;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
1、第一个大括号 server{ }:不必多说,代表一个独立的server,
2、listen 8011:代表该server监听8011端口
3、location ~ \.php?.*${
***隐藏网址***
***隐藏网址***
4、root /share/test:请求资源根目录,告诉匹配到该location下的uri到/share/teset文件夹下去寻找同名资源。
5、fastcgi_pass 127.0.0.1:9000:这行开始是本文的重点:这行代码的意思是,将进入到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理。
6、fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
:这行配置意思是:动态添加了一行fastcgi配置,配置内容为SCRIPT_FILENAME,告知管理进程,cgi脚本名称。由于我的nginx中只有fastcgi_params文件,没有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具体值,就必须要动态的添加这行配置。
7、include fastcgi_params; 引入fastcgi配置文件
以上就是最简洁版的nginx启动php脚本的最简配置,当重启nginx之后,在/share/test目录下创建一个xx.php文件,输入《?php
echo "hello world"; ?》保存,然后在浏览器中访问localhost:8011/xx.php
就可以在网页上显示hello world了。

更多文章:
avantage怎么设置为中文(Avantage安装丢失GIT)
2026年10月15日 03:00
activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)
2026年10月14日 20:30
excel连接sql数据库教程(excel怎么连接sql数据库)
2026年10月14日 19:40






