nginx重启php
① 如何nginx启动php服务器
安装
PHP
和
nginx
后,无法解析
PHP
文件。
其中,PHP
和
nginx
的编译安装
configure
如下:
#
PHP
5.3.9
./configure
--prefix=/usr/local/php
--
enable-fpm
#
nginx
1.0.11
./configure
--prefix=usr/local/nginx
#
成功安装后,创建
php-fpm.conf
配置文件,删除
nginx.conf
中“pass
the
PHP
scripts
to
FastCGI
server
listening
on
127.0.0.1:9000”部分的注释
cd
/usr/local/php/etc
mv
php-fpm.conf.default
php-fpm.conf
vi
/usr/local/nginx/conf/nginx.conf
#
删除如下部分的注释,保存退出
② 如何正确配置 Nginx 和 PHP
直接贴上代码逐行进行讲解,此处贴出一个能正常启动php脚本的最简nginx vhost配置:
[plain] view plain
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?.*${
}:代表一个能匹配对应uri的location,用于匹配一类uri,并对所匹配的uri请求做自定义的逻辑、配置。这里的location,匹配了所有带.php的uri请求,例如:http://192.168.244.128:8011/test.php/asdasd
http://192.168.244.128:8011/index.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了。
③ nginx检测是不是200 不是就自动重启php脚本
最近服务器时不时出现Nginx 502 Bad Gateway,如果在电脑旁边还好,要是半夜或者出去了,怎么办?
没关系,写个脚本检测服务状态,发现异常,自动重启。
自动重启脚本:
复制代码 代码如下:
<?php
$url = 'http://blog.rebill.info';
$cmd = '/usr/local/php/sbin/php-fpm restart';for($i = 0; $i < 5; $i ++){
$exec = "curl connect-timeout 3 -I $url 2>/dev/null";$res = shell_exec($exec);
if(stripos($res, '502 Bad Gateway') !== false){shell_exec($cmd);
exit();
}
}
原理就是用curl获取HTTP头,发现502状态码就执行重启php-fpm的命令。
url和cmd根据实际情况改成自己的。然后放到crontab里一分钟执行一次。
复制代码 代码如下:
*/1 * * * * /usr/bin/php /root/crontab/nginx502.php
④ nginx+php 生成缩略图的时候发现没有jpeg支持安装完了重启php-fpm出错
nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php 的 error log信息。
nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog
原因是php-fpm的配置文件php-fpm.conf中默认是关闭worker进程的错误输出,直接把他们重定向到/dev/null,所以我们在nginx的error log 和php-fpm的errorlog都看不到php的错误日志。
调试起来就很痛苦了。解决nginx下php-fpm不记录php错误日志的办法:
1.修改php-fpm.conf中配置 没有则增加
catch_workers_output = yes
error_log = log/error_log
2.修改php.ini中配置,没有则增加
log_errors = On
error_log = "/usr/local/lnmp/php/var/log/error_log"
error_reporting=E_ALL&~E_NOTICE
3.重启php-fpm,
当PHP执行错误时就能看到错误日志在"/usr/local/lnmp/php/var/log/error_log"中了
请注意:
1. php-fpm.conf 中的php_admin_value[error_log] 参数 会覆盖php.ini中的 error_log 参数
所以确保你在phpinfo()中看到的最终error_log文件具有可写权限并且没有设置php_admin_value[error_log] 参数,否则错误日志会输出到php-fpm的错误日志里。
2.找不到php.ini位置,使用php的phpinfo()结果查看
3.如何修改PHP错误日志不输出到页面或屏幕上
修改php.ini
display_errors = off //不显示错误信息(不输出到页面或屏幕上)
log_errors = on //记录错误信息(保存到日志文件中)
error_reporting = E_ALL //捕获所有错误信息
error_log = //设置日志文件名
程序中修改以上配置
ini_set("display_errors",0)
ini_set("error_reporting",E_ALL); //这个值好像是个PHP的常量
ini_set("error_log","<日志文件名>")
ini_set("log_errors",1);
4.如何将php的错误日志输出到nginx的错误日志里
在PHP 5.3.8及之前的版本中,通过FastCGI运行的PHP,在用户访问时出现错误,会首先写入到PHP的errorlog中
如果PHP的errorlog无法写入,则会将错误内容返回给FastCGI接口,然后nginx在收到FastCGI的错误返回后记录到了nginx的errorlog中
在PHP 5.3.9及之后的版本中,出现错误后PHP只尝试写入PHP的errorlog中,如果失败则不会再返回到FastCGI了,错误日志会输出到php-fpm的错误日志里。
所以如果想把php错误日志输出到nginx错误日志,需要使用php5.3.8之前的版本,并且配置文件中php的error_log对于php worker进程不可写
⑤ windows下nginx 启动php-cgi进程数量怎么修改
NMP环境现在还是比较多人用的,下面介绍一个修改php-cgi进程数的方法: 一、修改php-cgi: vi /usr/local/nginx/conf/nginx.conf 二、其中worker_processes 1;可以修改成2或3个,nginx本身就很强大,不需要像apache那样,开启过多的进程来保证其稳定运行。 vi /usr/local/php/etc/php-fpm.conf 三、找到,按你的内存容量修改PHP进程的数量,一般128内存开启6个,256内存开启16个。这样能保证,在PHP大并发的情况下不会502错误,注:PHP5.3系列不需要修改。 四、优化后,重启lnmp /root/lnmp restart
⑥ 为什么启动了NGINX服务器却打不开PHP网页
先试三个办法
一、打开IE,点工具,点internet选项,点高级,点恢复默认设置,点保存,退出,重新打开IE
二、打开IE,刷新五次以上
三、打开IE,点工具,点internet选项,点删除文件,点清除历史记录,确定,保存,退出IE,重新打开IE。
以上三个办法都试了还不行看下面的
三种可能:
1. 网速问题
2. 病毒问题
3. 电脑配置速度问题
以下几种解决方法:
1. 安全模式下查杀一下是否有病毒,
2. 或者重新安装浏览器看是否出现类似情况
3. 更换其他浏览器试试
4. 用别的电脑链接你的网线试验一下,如果出现类似情况,说明是你的网速问题
5. 最后一招。。修复系统
如果楼主说不是以上问题的话,那就有可能有人用p2p终结者控制了你的网速,如果这样的话,你可以采取两种办法解决:
1. 下载反P2P终结者软件,以毒攻毒
2. 使用360杀毒软件及浏览器,开启360防火墙,可以有效抵御控制网速的攻击
⑦ 如何 利用 php 重启 nginx-Linux新手园地
已解决 下面是解决方法
1、设置 sudo 配置文件 可写权限
chmod u+w /etc/sudoers
2、增加 www 用户的 nginx 脚本管理权限
www ALL=(root) NOPASSWD: /etc/init.d/nginx
3、关闭 【强制控制台登录】执行
【非常重要】,注释该行 我的问题就出在这里,开启了这个选项之后。在PHP中怎么调用,都没有执行结果
#Defaults requiretty
4、还原 sudo 配置权限 440
【非常重要】,如果不还原权限。在PHP中怎么调用,都没有执行结果。
chmod u-w /etc/sudoers
5、调用php
$result2 = exec("/usr/bin/sudo /etc/init.d/nginx stop",$result);
var_mp($result);
var_mp($result2);
⑧ 重启nginx服务器用哪个指令比较好
nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
关闭nginx:
nginx -s stop :快速停止nginx
quit :完整有序的停止nginx
其他的停止nginx 方式:
ps -ef | grep nginx
kill -QUIT 主进程号 :从容停止Nginx
kill -TERM 主进程号 :快速停止Nginx
pkill -9 nginx :强制停止Nginx
启动nginx:
nginx -c /path/to/nginx.conf
平滑重启nginx:
kill -HUP 主进程号
⑨ LNMP怎么单独重启nginx或者mysql、php
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。
单独重启nginx或者mysql、php:
nginx : kill nginx进程ID,再/usr/local/nginx/sbin/nginx
mysql :/etc/init.d/mysql restartphp:没有重启
phpfpm:/usr/local/php/sbin/php-fpm reload
⑩ nginx+php 网站运行一段时间会出现502错误
重启PHP即可。
PHP运行一段时间后,内存占用越来越多,导致内存溢出,使得php无法响应请求,每天重启一次php,或者,限制每个php线程最多执行任务数。