2013年2月

第一种原因:第一种原因:安装lnmp一键安装包时php没安装成功而出现502 Bad Gateway,从0.9开始只要安装成功或失败都就会有提示。没安装成功一般原因是在安装php前,脚本中某些lib包可能没有安装上,造成php没有编译安装成功。可以看一下是否存在/usr/local/php/sbin/php-fpm ,如果没有肯定没安装成功。

解决方法:
可以尝试根据lnmp一键安装包中的脚本手动安装一下,看看是什么错误导致的,在网上搜索一下,或者把错误信息发上来。如果实在不会提供按http://lnmp.org/install.html这个安装时的lnmp.log日志文件(可以用winscp登陆下载lnmp.log,压缩并上传到本论坛),没有错误信息我们没法说什么原因。本方法只限于lnmp没安装成功,只要lnmp安装成功了这一项就没可能。

第二种原因:

在php.ini里,eaccelerator配置项一定要放在Zend Optimizer配置之前,否则也可能引起502 Bad Gateway。php一些模块之间也可能会造成502,如Zend GuardLoader与Opcache,ioncube与Zend GuardLoader等,一般可以通过注释掉一个然后重启php-fpm,然后看是否还502进行排除。

第三种原因:
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加,如果php已升级到5.3.*以上且使用的是dynamic模式,需要调整pm.max_spare_servers参数的值。
也有可能是max_requests值不够用。

第四种原因:
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300

第五种原因:
磁盘空间不足,如mysql日志占用大量空间清理一下磁盘上的文件,有部分剩余空间,重启即可恢复。

第六种原因:
查看php-cgi或php-fpm进程是否在运行

第七种原因:
将nginx.conf里的
fastcgi_connect_timeout
fastcgi_send_timeout
fastcgi_read_timeout都调大一点。

第八种可能原因:http://bbs.vpser.net/thread-1654-1-1.html

九、有时候也可能是自己修改过下面2处的配置,导致nginx配置文件里的设置和php-fpm上的设置不一样也会502。如果使用unix套接字,修改/usr/local/php/etc/php-fpm.cnf 里设置,php 5.2为

/tmp/php-cgi.sock
php 5.3及以上版本为listen = /tmp/php-cgi.sock ,同时/usr/local/nginx/conf/nginx.conf 及其/usr/local/nginx/conf/vhost/ 下面的虚拟主机配置里的fastcgi_pass unix:/tmp/php-cgi.sock; 不一致就必定502。
有时候unix套接字模式下可能会502,可以尝试改成tcp/ip的方式 php 5.2下

/tmp/php-cgi.sock
替换为

127.0.0.1:9000
php 5.3及以上版本listen = /tmp/php-cgi.sock替换为listen = 127.0.0.1:9000,nginx配置文件及虚拟主机配置文件里fastcgi_pass unix:/tmp/php-cgi.sock;替换为fastcgi_pass 127.0.0.1:9000; 之后重启试试。

还需要补充的就是不要按网上找到的教程随便修改配置,网上找到的可能会路径不一样,也可能会导致502或有相关的错误产生。

十、如果虚拟主机的日志文件过大也可能会造成502问题。
建议定期清空一下虚拟主机的日志文件。

十一、有些程序或者程序的主题有死循环或其他非常占用资源的代码也可能会引起502,可以尝试暂时注释掉可能的主机的配置文件,重启看看是否还会502。

十二、如果以上方法都试过,但还有时会出现502错,可以尝试添加502自动重启脚本:http://bbs.vpser.net/thread-1913-1-1.html

十三、实在找不到原因可以开启slowlog看看慢日志是否有相关有用的信息:http://bbs.vpser.net/viewthread.php?tid=10251&page=1&fromuid=3#pid30582

十四、升级PHP后出现502,可能php没升级成功。
如果是1.0之前的版本升级PHP到5.4或5.5后,可能是因为这个原因:http://bbs.vpser.net/thread-10763-1-1.html

十五、CentOS 6 下,wordpress访问后台、安装wp、安装插件报502错误的解决方法:http://bbs.vpser.net/thread-10767-1-1.html

LNMP一键安装包除去安装所必须的依赖包,还会默认安装以下软件: Nginx、MySQL/MariaDB、PHP、phpMyAdmin、Zend Optimizer/Zend GuardLoader。用户可以根据自己的需要安装其他组件,如FTP服务器、缓存组件,也可以使用升级脚本对Nginx、MySQL、PHP进行升级。安装LNMP或升级前都可以修改lnmp.conf来设置其中的一些参数模块等设置。
安装这些组件或升级都需要在lnmp下载解压缩后的目录,比如下载到/root目录,就进入/root/lnmp1.4-full目录,执行以下命令。
虚拟主机管理:
参见:https://www.lnmp.net/faq/lnmp-vhost-add-howto.html
FTP服务器:
可选1,PureFTPd,执行:./pureftpd.sh 安装,1.2+版本使用 lnmp ftp {add|edit|del} 管理,1.1及老版本 http://yourIP/ftp/ 进行管理。
可选2(LNMP1.2下已经移除该脚本),Proftpd,执行:./proftpd.sh 安装,执行命令:/root/proftpd_vhost.sh 添加FTP账号。
缓存加速: LNMP1.2及更高版本统一使用./addons.sh 进行安装和卸载。 使用方法:./addons.sh {install|uninstall} {eaccelerator|xcache|memcached|opcache|redis|imagemagick|ioncube|apcu} 详细教程:https://www.lnmp.net/faq/addons.html
LNMP1.1下:
可选1,eAccelerator,执行:./eaccelerator.sh 安装。
可选2,memcached,执行:./memcached.sh安装。
可选3,xcache,安装时需选择版本和设置密码, http://yourIP/xcache/ 进行管理,用户名 admin,密码为安装xcache时设置的。执行:./xcache.sh安装。
可选4,redis,执行:./redis.sh安装。
可选5,opcache,执行:opcache.sh安装。http://yourIP/ocp.php 进行管理。Zend Opcache与eaccelerator相冲突,需卸载eaccelerator。
升级脚本: LNMP1.2及更高版本: 统一使用./upgrade.sh 进行升级工作。 使用方法:./upgrade.sh {nginx|mysql|mariadb|m2m|php|phpa|phpmyadmin} 详细教程:https://www.lnmp.netfaq/lnmp1-2-upgrade.html
LNMP1.1下:
Nginx升脚本可,升级至任意Nginx版本。执行:./upgrade_nginx.sh 按提示进行升级。
PHP升级脚本,可升级至大部分PHP版本。执行:./upgrade_php.sh 按提示进行升级。
MySQL升级脚本,可升级至任意MySQL版本,MySQL升级风险较大,虽然会自动备份数据,建议自行再备份一下。执行:./upgrade_mysql.sh 按提示进行升级。
MySQL升级至MariaDB,可从MySQL升级至Mariadb,虽然会自动备份数据,建议自行再备份一下。执行:./upgrade_mysql2mariadb.sh 按提示进行升级。
MariaDB升级脚本,可升级已安装的Mariadb,虽然会自动备份数据,依然建议自行再备份一下。执行:./upgrade_mariadb.sh 按提示进行升级。
LNMPA PHP升级脚本,可升级LNMPA的PHP至大部分版本。执行:./upgrade_lnmpa_php.sh 按提示进行升级。
图像处理: LNMP1.2及更高版本统一使用./addons.sh 进行安装和卸载。 LNMP 1.1及以下版本
可选1,imageMagick,执行:./imageMagick.sh 安装。
执行:./imageMagick.sh 安装,imageMagick路径:/usr/local/imagemagick/bin/。
解密:
可选1,ionCube,执行:./ionCube.sh 安装。
其他:
可选1,(1.4版)执行:./install.sh mphp 在LNMP模式下可安装多PHP版本。
(1.2,1.3版)执行:./php5.2.17.sh 可安装一个不与LNMP冲突的PHP 5.2.17单独存在,使用时需要将nginx虚拟主机配置文件里的 php-cgi.sock 修改为 php-cgi52.sock。
可选2,LNMP/LNMPA/LAMP卸载脚本,执行:./uninstall.sh 按提示输入当前模式序号,即可删除,1.4之前版本请自行备份好数据库,网站文件等不会删除。
可选3,(以下几个脚本在安装包tools目录下)执行:./reset_mysql_root_password.sh 可重置MySQL/MariaDB的root密码。
可选4,执行:./check502.sh 可检测php-fpm是否挂掉,502报错时重启,配合crontab使用。
可选5,执行:./cut_nginx_logs.sh 日志切割脚本。
可选6,执行:./remove_disable_function.sh 运行此脚本可删掉禁用函数。
可选7,执行:./remove_disable_function.sh 防跨目录移除工具。

LNMP相关软件安装目录
Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
MariaDB 目录 : /usr/local/mariadb/
MariaDB数据库所在目录:/usr/local/mariadb/var/
PHP目录 : /usr/local/php/
多PHP版本目录 : /usr/local/php5.5/ 其他版本前面5.5的版本号换成其他即可
PHPMyAdmin目录 : 0.9版本为/home/wwwroot/phpmyadmin/ 1.0及以后版本为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版本为 /home/wwwroot/ 1.0及以后版本为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/
Redis 目录:/usr/local/redis/

LNMP相关配置文件位置
Nginx主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf 1.3及更高版本:/usr/local/pureftpd/etc/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf 1.2及之前版本为/usr/local/proftpd/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf
Redis 配置文件:/usr/local/redis/etc/redis.conf

LNMPA相关目录文件位置
Apache目录:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/
Apache默认虚拟主机配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf
虚拟主机配置文件名称:/usr/local/apache/conf/vhost/域名.conf

lnmp.conf 配置文件参数说明

lnmp.conf文件位于lnmp安装包目录下

参数名称 参数介绍 例子
Download_Mirror 下载镜像 一般默认,如异常可修改下载镜像
Nginx_Modules_Options 添加Nginx模块或其他编译参数 —add-module=/第三方模块源码目录
PHP_Modules_Options 添加PHP模块或编译参数 —enable-exif 有些模块需提前安装好依赖包
MySQL_Data_Dir MySQL数据库目录设置 默认/usr/local/mysql/var
MariaDB_Data_Dir MariaDB数据库目录设置 默认/usr/local/mariadb/var
Default_Website_Dir 默认虚拟主机网站目录位置 默认/home/wwwroot/default
Enable_Nginx_Openssl Nginx是否使用新版openssl 默认 y,建议不修改,y是启用并开启到http2
Enable_PHP_Fileinfo 是否安装开启php的fileinfo模块 默认n,根据自己情况而定,安装启用的话改成 y
Enable_Nginx_Lua 是否为Nginx安装lua支持 默认n,安装lua可以使用一些基于lua的waf网站防火墙