存档
-
解决Nginx+PHP(FastCGI)遇到的502 Bad Gateway错误
最近几天发现网通线路的服务器出现流量不稳定的情况,具体的表现是,流量时而高,时而低,在流量低的时候发现系统的负载很小,几乎为0,但是过一会,负载又高上去,流量也上去,很是奇怪,查找了2天没有找到原因,后来看到一边文章,介绍了解决nginx出现502的错误现象,按照这个方法进行尝试,最终还是找到了问题的原因。
解决步骤如下:
1、查看当前的PHP FastCGI进程数是否够用:
netstat -anpo | grep “php-cgi” | wc -l
如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。
2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:
……
http
{
……
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
……
在做第一步的时候,系统当前的PHP FastCGI进程数明显超过了预设值的64这个数值,在电信的服务器上查看当前的PHP FastCGI进程数没有高于64这个数值,而且网通线路的活动连接明显高于电信的活动连接,准备到晚上的时候看看情况,结果到晚上22:30的时候,查看系统当前的PHP FastCGI进程数明显小于64预设值,当前的活动连接也比原来低很多,由此可以说明出现nginx不稳定的情况是由于服务器访问负载过大引起的,就是加上第二步的错误也不顶作用。
总结,php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。
感谢此篇文章的作者,链接为 http://blog.s135.com/read.php/361.htm2008年8月11日 | 归档于 web构架 -
解决504 Gateway Time-out(nginx)
504 Gateway Time-out问题常见于使用nginx作为web server的服务器的网站
我遇到这个问题是在升级discuz论坛的时候遇到的
一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out
现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点
在nginx.conf里, 加入:fastcgi_buffers 8 128k
这表示设置fastcgi缓冲区为8×128k
当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:send_timeout 60;
我只是调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错, 但是也可能是由于其他的原因, 目前关于nginx的资料不是很多, 很多事情都需要长期的经验累计才有结果, 期待您的发现哈!2008年8月8日 | 归档于 web构架 -
快速安全搭建linux ftp server (vsftpd)
快速安全搭建linux ftp server(vsftpd)
linux ftp server快速搭建既然强调快速, 我们就马上开始环境是centos5安装vsftpd# yum -y install vsftpd没什么问题就直接安装好啦编辑vsftpd的配置文件# vi /etc/vsftpd/vsftpd.conf清空, 添加如下内容:listen=YESbackground=YESanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022anon_upload_enable=NOanon_mkdir_write_enable=NOdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESchown_uploads=NOxferlog_file=/var/log/vsftpd.logxferlog_std_format=YESasync_abor_enable=YESascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to hao32 FTP serverspam_service_name=vsftpdchroot_local_user=NOchroot_list_enable=YESchroot_list_file=/etc/vsftpd/vsftpd.chroot_list
# touch /etc/vsftpd/vsftpd.chroot_list
# service vsftpd startStarting vsftpd for vsftpd: [ OK ]一般启动正常
ftp用户我们来使用系统用户, 现在我们来添加用户hao32, 指向目录/home/hao32, 权限是nologin, 就是没给shell权限, 不影响ftp的# useradd hao32 -d /home/hao32 -s /sbin/nologin如果显示:useradd: warning: the home directory already exists.Not copying any file from skel directory into it.不用理会, 只是告诉你, 你指向的目录已经存在了, [...]2008年7月11日 | 归档于 web构架 -
解决configure: error: wrong mysql library version or lib not found
上次在编译php对mysqli的支持的时候出现了如下错误:checking whether to enable embedded MySQLi support… nochecking for mysql_set_server_option in -lmysqlclient… noconfigure: error: wrong mysql library version or lib not found. Check config.log for more information.经过大量测试, 发现解决方案:(php-xxxxx为php文件名, 代表路径)# cd /usr/local/src/php-xxxxx/ext/mysqli# yum -y install mysql-devel# /phpize# ./configure –with-php-config= /php-config –enable-embedded-mysqli=shared –enable-shared# make# make install这时屏幕会打印mysqli.so生成的路径, 在php.ini里加载就好啦
2008年7月9日 | 归档于 web构架 -
解决Apache的NameVirtualHost has no VirtualHosts警告
原因: The namevirtualhost command tells Apache that you will use VirtualHost boxes on a specific IP address. This command is needed only once for each IP address. It is not necessary to repeat the namevirtualhost directive for every VirtualHost box you use as in your example. The directive doesn’t define a VirtualHost, it only [...]
2008年7月4日 | 归档于 web构架 -
针对中小型网站(3000人左右/15分钟)的服务器架构
针对中小型网站(3000人左右/15分钟)的服务器架构
本文涉及的服务器构架主要针对3000人左右/15分钟的中小型网站, 多见于discuz!论坛构建的社区等等
环境为linux(内核2.6+), nginx, php(fastcgi), mysql 等高效开源软件构成, 成本低廉, 是普通个人站长朋友的首选,
但是针对部分企业, 这个方案也是一个非常不错的选择!
至于nginx和apache等web服务器的性能比较这里就不多说了
本文是以实例的方式来描述安装以及配置等情况, 供各位参考
1. 硬件环境
一台web服务器, 一台db服务器, 没有raid
web服务器 至强双核1.60GHz, 2G, 73GSCSI*2
db服务器 至强双核1.60GHz, 2G, 73GSCSI*2
2. 系统环境
CentOS 5.x (内核2.6+)
简单的说下前期工作:安装系统尽可能的精简, 检查系统时间, dmesg看看有无错误, 关闭selinux,ipv6, 升级系统到最新yum -y update
安装如下web环境必要的软件包:
# yum install -y ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel kernel
3. 准备软件
nginx-0.6.31.tar.gz
pcre-7.3.tar.gz
php-5.2.6.tar.bz2
eaccelerator-0.9.5.3.tar.bz2
ZendOptimizer-3.3.0-linux-glibc21-i386.tar.gz
lighttpd-1.4.19.tar.bz2
libxml2-2.6.30.tar.gz
libmcrypt-2.5.8.tar.bz2
gd-2.0.34.tar.gz
mysql-5.0.51a-linux-i686-glibc23.tar.gz
以上软件都是目前最新最稳定的版本, 查找和下载以上软件或者更新版本
请在www.google.com输入: 软件全名 intitle:index
一般头几个都是可以下载的, 找个最快的就可以了
<!—————以下都是web服务器上的配置—————>
4.开始安装环境:
(1)安装gd库
# tar zxvf [...]2008年6月11日 | 归档于 web构架 -
centos5下vsftpd的设置
CENTOS5下VSFTPD的设置
最近公司的一台业务机需要为客户在CentOS5.1下配置Vsftpd,于是开动。步骤很简单:
需求:(虚拟用户分下载用户/下载、上传但不能删除用户/管理用户)
一、安装yum -y install vsftpd*yum -y install pam*yum -y install db4*
二、系统帐户1、vsftpd服务的宿主用户useradd vsftpd -s /sbin/nologin2、vsftpd虚拟宿主用户useradd ftpuser -s /sbin/nologin*不允许相关用户登录。三、vsftpd.conf设置1、备份cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.ysbk2、设置—-anonymous_enable=NO设定不允许匿名访问local_enable=YES设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。write_enable=YES设定可以进行写操作。local_umask=022设定上传后文件的权限掩码。anon_upload_enable=NO禁止匿名用户上传。anon_mkdir_write_enable=NO禁止匿名用户建立目录。dirmessage_enable=YES设定开启目录标语功能。xferlog_enable=YES设定开启日志记录功能。connect_from_port_20=YES设定端口20进行数据连接。chown_uploads=NO设定禁止上传文件更改宿主。xferlog_file=/var/log/vsftpd.log设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。xferlog_std_format=YES设定日志使用标准的记录格式。nopriv_user=vsftpd设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。async_abor_enable=YES设定支持异步传输功能。ascii_upload_enable=YESascii_download_enable=YES设定支持ASCII模式的上传和下载功能。ftpd_banner=Welcome to Awei FTP servers设定Vsftpd的登陆标语。chroot_local_user=YES禁止本地用户登出自己的FTP主目录。pam_service_name=vsftpd设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。guest_enable=YES设定启用虚拟用户功能。guest_username=ftpuser指定虚拟用户的宿主用户。virtual_use_local_privs=YES设定虚拟用户的权限符合他们的宿主用户。user_config_dir=/etc/vsftpd/vconf设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。—-3.建立Vsftpd的日志文件,并更该属主为Vsftpd的服务宿主用户:[root@KcentOS5 ~]# touch /var/log/vsftpd.log[root@KcentOS5 ~]# chown vsftpd.vsftpd /var/log/vsftpd.log4.建立虚拟用户配置文件存放路径:[root@KcentOS5 ~]# mkdir /etc/vsftpd/vconf/四、制作虚拟用户数据库文件1.先建立虚拟用户名单文件:[root@KcentOS5 ~]# touch /etc/vsftpd/virtusers建立了一个虚拟用户名单文件,这个文件就是来记录vsftpd虚拟用户的用户名和口令的数据文件,我这里给它命名为virtusers。为了避免文件的混乱,我把这个名单文件就放置在/etc/vsftpd/下。2.编辑虚拟用户名单文件:[root@KcentOS5 ~]# vi /etc/vsftpd/virtusers—————————-download1234upload5678admin9012—————————-编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“一行用户名,一行口令”。3.生成虚拟用户数据文件:[root@KcentOS5 ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db五、设定PAM验证文件,并指定虚拟用户数据库文件进行读取在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)—-auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusersaccount sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers—-六、虚拟用户的配置1、download用户,只能下载不能上传和删除–write_enable=NO–2、upload能下载、上传但不能删除–write_enable=YEScmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEATfile_open_mode=0444–3、admin对ftp进行管理–默认的vsftpd.conf文件就可以了,不要做任何修改。–4、补充:如果对上传用户要限制其上传目录(主目录),需要加入–local_root=/home/ftp/upload–前将/home/ftp/upload给予相应的权限。2008年5月5日 | 归档于 web构架 -
Linux下编译安装GD2(LIBTOOL错误解决)
Linux下编译安装GD2所需软件包:automake,libjpeg-devel,libpng-devel,freetype-devel,libtiff-devel,autoconf
# cd /usr/local/src# tar xzvf gd-2.0.35.tar.gz# cd gd-2.0.35# aclocal…warning: macro `AM_ICONV’ not found in library
通过Google得知需要gettext-devel软件包,安装后正常生成。
# ./configure –prefix=/usr/local/gd2 –mandir=/usr/share/man# makeMakefile.am:18: Libtool library used but `LIBTOOL’ is undefinedMakefile.am:18: Makefile.am:18: The usual way to define `LIBTOOL’ is to add `AC_PROG_LIBTOOL’Makefile.am:18: to `configure.ac’ and run `aclocal’ and `autoconf’ again.make: *** [Makefile.in] Error 1
# rpm -ivh libtool*安装libtool软件包后重新运行编译安装成功。# aclocal# ./configure –prefix=/usr/local/gd2 [...]2008年5月5日 | 归档于 web构架 -
PHPSHIELD的安装
首先去http://www.phpshield.com/loaders/下载相应操作系统的phpSHIELD Loaders
解压出来后根据php的版本,例如您的php是5.2的版本, 您的server是windows操作系统
那么把压缩包解压把其中的phpshield.5.2.win放在php目录的ext下
然后在php.ini里增加一行extension=phpshield.5.2.win
更改 enable_dl = Off
重启web server OK
至于linux版本, 操作步骤类似2008年2月22日 | 归档于 web构架 -
linux tomcat 安装笔记
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器
本文就是一篇linux下tomcat 安装笔记, 重点讲述了apache和tomcat在linux下整合的方法
1.准备文件并解压缩至/temp/:apr-0.9.1.tar.gzhttpd-2.0.40.tar.gzj2sdk-1_4_1_02-linux-i586-rpm.bin(直接运行)jakarta-tomcat-4.1.18.tar.gzjakarta-tomcat-connectors-4.1.27-src.tar.gz
注; 这些文件在其官方网页上下载较慢,但都可以在天网上找到.然后将生成的jakarta-tomcat-4.1.18/ 和 jakarta-tomcat-connectors-4.1.27-src/ 拷贝至/opt/下#cp -r jakarta-tomcat-4.1.18/ /opt/#cp -r jakarta-tomcat-connectors-4.1.27-src/ /opt/
2.安装JDK(java development Kit)#rpm -ivh j2sdk-1_4_1_02-fcs-linux-i586.rpm默认安装目录是/usr/java/j2sdk1.4.1_02/
3.设定环境变量:在/etc/profile中,加入:#java environment variable settingsJAVA_HOME=/usr/java/j2sdk1.4.1_02export JAVA_HOMECLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/libexport CLASSPATHCATALINA_BASE=/opt/jakarta-tomcat-4.1.18export CATALINA_BASECATALINA_HOME=/opt/jakarta-tomcat-4.1.18export CATALINA_HOMEPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
需重启才能生效.
测试JDK:运行# java -version# javac -version看到版本信息则JDK安装成功
测试tomcat:运行# /opt/jakarta-tomcat-4.1.18/bin/startup.sh在浏览器中输入: http://ip地址:8080能看到tomcat页则安装成功.
4.安装apache进入apache的解压目录 /temp/httpd-2.0.40/config.layout文件确定了各种风格的apache的各安装目录. 这里将选择RedHat. 建议将文件中RedHat的prefix改为/etc/httpd .
# ./configure –enable-layout=RedHat –enable-module=so– 生成makefile 文件. 这里选择了config.layout文件中的RedHat设置. 并采用DSO(Dynamic Shared Object)方式编译# make– 编译# make install– 安装
测试apache:运行# /etc/httpd/sbin/apachectl start在浏览器中输入: http://ip地址能正确显示则安装成功.
5.编译Jakarta-Tomcat-connectors# cp -r [...]2008年2月5日 | 归档于 web构架