最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx+Apache配置环境提高服务器负载
时间:2022-06-30 18:53:11 编辑:袖梨 来源:一聚教程网
之前流行过一段时间的Nginx+以fastCGI方式运行的PHP来搭建Web站点的方法。但是经过一段时间考量之后,大家经常发现会出现一些502的错误。其实一般是Nginx+fastCGIPHP的形式不太稳定造成。于是尝试了牛人推荐的一种是用Nginx做前端转发PHP请求给Apache的方法来进行服务器平台建设。这种方法有效的避免了Apache在应付大并发时候的些许不足和Nginx配合fastCGIPHP不太稳定的弊端。同时又在一定程度上利用了Nginx速度上的优势。说白了就是一些静态文件有Nginx来处理,PHP请求转发给后端Apache来处理。但是在效率上或者内存等资源占用上不如Nginx+fastCGI方式。
在PHP页面处理使用了suPHP,关于suPHP各位可以参照这里。suPHP其实现在被应用在很多空间租用商的服务器上。主要功能为了使用目录所有者的权限来执行特定位置的PHP页面,不是使用Apache默认Apache或者wwwdata或者nobody用户。这样的好处主要有两点:1.空间租用者(使用者)不需要在设置复杂权限了,在自己空间中PHP拥有完全权限。2.空间租用者(使用者)存放网站文件的目录更安全,不需要开启Apache,wwwdate或者nobody之类权限对于自己站点,避免了777这样的高危权限。但是suPHP要求在编译安装PHP的时候必须编译为PHP-CGI形式才能是用,也就是不能使用平时我们所使用的CLI启动方式。
简单原理如下: CLI传统模式的图解:PHP是作为Apache一个模块存在,就像Apache的一个功能一样。
suPHP模式图解:suPHP作为Apache一个模块,在需要的时候以特定用户权限来启动PHP-CGI,从而实现以目录所有者权限执行PHP的功能。
最终原理图大致如下:由Nginx接受全部目的端口为80的Web请求,根据请求内容的不同进行过滤。静态文件例如:MP3、GIF、JPG、JS等文件由Nginx处理,其他PHP Web请求转发到后端Apache服务器上。Apache服务器利用suPHP模块按照目录所有者权限运行PHP程序从而返回页面给客户端。稍加改动就可以实现跨越多台计算机的群集功能。
我们操作系统平台为CentOS5.5,姑且称呼他为:Nginx+Apache+MySQL+suPHP
一、升级系统安装必须软件
代码如下 | 复制代码 |
# yum update
|
编译安装PHP和MySQL所需库文件
代码如下 | 复制代码 |
#解压缩并且安装libiconv,是一个基于GNU协议的开源库,主要是解决多语言编码处理转换等应用问题。 #安装libevent,是一个轻量级的开源高性能网络库,使用者众多。比如memcached、Vomit、Nylon、Netchat等等。 #安装libmcrypt,mhash,mcrypt等加密所需库文件。 |
编译安装MySQL
代码如下 | 复制代码 |
#可以提高MySQL在内存分配方面的性能和效率。 #真的开始安装MySQL # vim ~/.bashrc |
编译安装Apache
代码如下 | 复制代码 |
# cd ~/na #编辑/etc/init.d/httpd,在首行#!/bin/sh下添加: |
编译安装PHP这里编译成了CGI-PHP
代码如下 | 复制代码 |
# tar -zxf php-5.2.14.tar.gz #以PHP-CGI形式编译PHP #安装PHP memcache扩展。 #安装PHP的加速器eaccelerator。 #安装ImageMagick图像处理软件。 #安装ImageMagick的PHP扩展。 #安装PHP扩展Suhosin用来增强php语言的安全性。 #用来支持被加密的PHP页面。 #安装ZendOptimizer用来支持Zend加密页面 |
安装suPHP
代码如下 | 复制代码 |
#suPHP可以让用户已目录所有者的权限访问PHP Web站点目录 |
安装memcached
代码如下 | 复制代码 |
#memcached是可以有效提高PHP访问效率的内存缓存机制 # cd .. # tar -zxf memcached-1.4.5.tar.gz # cd memcached-1.4.5 # ./configure --with-libevent=/usr/local # make # make install |
安装Nginx
代码如下 | 复制代码 |
#安装Nginx需要的pcre,perl 兼容的正规表达式库,这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。 #真的开始安装nginx了 #编写启动脚本 #授予开机脚本执行权限 #安装rpaf插件,使Apache日志可以正确记录访问者IP地址。 |
安装Pure-FTP
代码如下 | 复制代码 |
# tar -zxf pure-ftpd-1.0.29.tar.gz 修改目录权限提高安全性 # chmod 711 /home |
二、编辑Apache、PHP、suPHP、Nginx、Pure-FTP配置文件 编辑Apache主配置文件
代码如下 | 复制代码 |
#配置apache配置参数文件httpd.conf,位于/usr/local/apache/conf/目录。 Timeout 300 # LoadModule perl_module modules/mod_perl.so LoadModule rpaf_module modules/mod_rpaf-2.0.so DocumentRoot "/usr/local/apache/htdocs"
DefaultType text/plain
ErrorLog "logs/error_log"
ReadmeName README.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t Include conf/extra/httpd-languages.conf
#Vhosts
Include conf/vhosts/* |
编辑PHP配置文件
代码如下 | 复制代码 |
# vim /etc/php.ini |
编辑suPHP配置文件
代码如下 | 复制代码 |
# cd /usr/local/apache/conf/ |
编辑Nginx主配置文件
代码如下 | 复制代码 |
# cd /usr/local/nginx/conf/ # mv nginx.conf nginx.conf.bak # vim nginx.conf #写入如下内容根据实际IP地址进行修改即可。 worker_processes 1; worker_rlimit_nofile 65535; events { worker_connections 65535; use epoll; } error_log /usr/local/nginx/logs/error.log info; http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 10; gzip on; gzip_http_version 1.0; gzip_min_length 1100; gzip_comp_level 3; gzip_buffers 4 32k; gzip_types text/plain text/xml text/css application/x-javascript application/xml application/xml+rss text/javascript application/atom+xml; ignore_invalid_headers on; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; server_names_hash_max_size 2048; server_names_hash_bucket_size 256; client_header_buffer_size 256k; large_client_header_buffers 4 256k; request_pool_size 32k; output_buffers 4 64k; postpone_output 1460; open_file_cache max=1000 inactive=300s; open_file_cache_valid 600s; open_file_cache_min_uses 2; open_file_cache_errors off; include "/usr/local/nginx/conf/vhosts/*.conf"; server { listen 80; server_name _; access_log off; location ~* .(ftpquota|htaccess|asp|aspx|jsp|asa|mdb)$ { deny all; } location / { client_max_body_size 100m; client_body_buffer_size 128k; proxy_send_timeout 300; proxy_read_timeout 300; proxy_buffer_size 4k; proxy_buffers 16 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_connect_timeout 30s; proxy_pass http://204.74.291.132:81/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } |
编辑Pure-FTP配置文件
代码如下 | 复制代码 |
#配置pure-ftpd,这里采用PureDB的验证方式. |
三、设置各服务开机自运行并启动服务
代码如下 | 复制代码 |
# chkconfig --level 35 mysql on # chkconfig --level 35 httpd on # chkconfig --level 35 nginx on #以下内容为一行,请注意 # echo "/usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize" >> /etc/rc.local #以下内容为一行,请注意 # echo '/usr/local/bin/memcached -d -m 64 -p 11211 -u nobody -l localhost' >>/etc/rc.d/rc.local # service mysql start # service httpd start # service nginx start # /usr/local/bin/memcached -d -m 64 -p 11211 -u nobody -l localhost |
四、如何使用和创建虚拟主机 更改用户模板文件
代码如下 | 复制代码 |
# mkdir /etc/skel/public_html 添加FTP帐户用于维护Web服务器 # useradd -s /sbin/nologin whypc_info #启动Pure-FTP因为刚才还没有产生用户数据库,所以在这里启动。 |
更改Apache配置文件增加虚拟主机
代码如下 | 复制代码 |
# cd /usr/local/apache/conf/vhosts # vim whypc.info.conf #添加如下内容,IP地址和域名根据实际情况。 ServerName whypc.info ServerAlias www.whypc.info DocumentRoot /home/whypc_info/public_html UseCanonicalName Off CustomLog /usr/local/apache/domlogs/whypc.info combined Options -ExecCGI -Includes RemoveHandler cgi-script .cgi .pl .plx .ppl .perl suPHP_Engine on suPHP_UserGroup whypc_info whypc_info AddHandler x-httpd-php .php .php3 .php4 .php5 suPHP_AddHandler x-httpd-php SuexecUserGroup whypc_info whypc_info ScriptAlias /cgi-bin/ /home/whypc_info/public_html/cgi-bin/ |
更改Nginx配置文件增加虚拟主机
代码如下 | 复制代码 |
# cd /usr/local/nginx/conf/vhosts/ |
五、创建测试文件
代码如下 | 复制代码 |
# vim ~whypc_info/public_html/test.php #写入如下内容 system("id"); ?> # chown whypc_info:whypc_info ~whypc_info/public_html/test.php |
通过浏览器查看是否为目录所有者权限(非nobody)。
相关文章
- 《绝区零》伊芙琳培养材料汇总 01-24
- 《无限暖暖》1.2春节兑换码一览 01-24
- 《网上国网》查询阶梯档位方法 01-24
- 《蛋仔派对》神游贺岁盲盒获取方法 01-24
- 《炉石传说》星际联动盗贼卡组玩法介绍 01-24
- 皮革珊瑚属于珊瑚中的 01-24