[转]日均百万PV网站解决方案

news/2024/4/27 9:16:55/文章来源:https://blog.csdn.net/iteye_3878/article/details/82366737
from
http://blog.csdn.net/weq221/article/details/5883450


项目需求:
现在基本环境:
日均百万PV的导航站,静态页面,服务器环境IIS,配合10M CDN,实际上经常超出至18M左右,因此费用也不低,并且CDN节点有时会出问题,还 需要每次的更改后刷新CDN,不太方便。
改造后期望:
配置独立服务器,升级带宽,更改环境以支持PHP的程序,实现本地化的广告投放功能,以扩展自有化。

具体实现:
下面将记录实现过程的点滴,期间得益于互联网上许多资料的帮助,在此一并表示感谢。此文章力争做到细致,清晰,希望对后来者起到一定帮助作用。

一,服务器方面
1,服务器选择
根据项目所需,具体业务情况,选择为CPU较高,内存一般,硬盘一般,主板较好,较稳定的1U服务器,最后定为DELL R410。
2,服务器基本环境
Centos+apache+php+mysql
3,开始安装,选择F11进入启动选择,选择2 SATA OPTICAL启动模式,即为从光驱启动,提示找不到光盘,可以重新放置,调整位置,一般均为 不能正确读盘造成。
4,安装完毕后,发现网卡工作不正常,驱动没有正常安装,查找网上文章,下载最新BCM5716驱动,安装均未能成功,怀疑是LINUX内核版本问题。
5,centos5.2—>centos5.4后安装完毕,网卡装上,但不稳定,是因为固件支持文件所引起
yum upgrade 升级内核及一切必要升级的组件,保证环境为最新
下载dell最新补丁,并安装,过程中可能需要其它组件支持,均使用yum安装即可
wget http://ftp.us.dell.com/network/NETW_FRMW_LX_R239524.BIN
chmod +x NETW_FRMW_LX_R239524.BIN
./NETW_FRMW_LX_R239524.BIN
注意过程的完整性,完毕后,重启,设置IP,工作正常。

二,软环境方面

1,基本环境实现
具体安装配置请参考,配置服务器环境那篇文章
2,转移项目,使用了SVN,配置项目环境,smarty,adodb,建立MVC工作模式,具体参考之前文章

三,测试方面

为了实现项目需求,此部分也是重点部分,过程中碰到一些问题,也累积了一些经验。
1,安装 webbench进行压力测试
首先下载tar包
tar -zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install
webbench –help
webbench [option]… URL
-f|–force Don’t wait for reply from server.
-r|–reload Send reload request - Pragma: no-cache.
-t|–time Run benchmark for seconds. Default 30.
-p|–proxy Use proxy server for request.
-c|–clients Run HTTP clients at once. Default one.
-9|–http09 Use HTTP/0.9 style requests.
-1|–http10 Use HTTP/1.0 protocol.
-2|–http11 Use HTTP/1.1 protocol.
–get Use GET request method.
–head Use HEAD request method.
–options Use OPTIONS request method.
–trace Use TRACE request method.
-?|-h|–help This information.
-V|–version Display program version.
具体方法:
webbench -c 3000 -t 60 http://localhost/index.html
60秒内3000个访问,此时可以用IE访问该链接,看看是否速度正常。。

2,apache测试
经测试,在压力情况下,并不能很好支持服务,于是修改了最大连接数
查看当前的连接数可以用:
ps aux | grep httpd | wc -l

或:
pgrep httpd|wc -l控制最大连接数的MaxClients ,因此可以尝试配置为:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 5500
MaxClients 5000
MaxRequestsPerChild 100
</IfModule>
注意:MaxClients默认最大为250,若要超过这个值就要显式设置ServerLimit,且ServerLimit要放在MaxClients 之前,值要不小于MaxClients,不然重启httpd时会有提示。  

经以上修改后,重启服务,上线后,稍一会就打不开了,apache在多用户并发的情况下处理的并不理想。

3,更改环境nginx提供WEB服务
由于centos没有默认的nginx软件包,需要启用REHL的附件包

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum -y install nginx
设置开机启动
chkconfig nginx on
安装spawn-fcgi来运行php-cgi

yum install spawn-fcgi
下载spawn-fcgi 的启动脚本
wget http://bash.cyberciti.biz/dl/419.sh.zip
unzip 419.sh.zip
mv 419.sh /etc/init.d/php_cgi
chmod +x /etc/init.d/php_cgi
启动php_cgi
/etc/init.d/php_cgi start
查看进程
netstat -tulpn | grep :9000
若出现如下代表一切正常
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4352/php-cgi

然后要配置php.ini
去掉;使之生效
cgi.fix_pathinfo=1
加上;
; doc_root =


也可单独安装nginx0.8.15
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
tar zxvf nginx-0.8.15.tar.gz
cd nginx-0.8.15/
./configure –user=www –group=www –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module
make && make install
cd ../


rc.local里加入

/usr/local/webserver/nginx/sbin/nginx

开机自启动服务
可用

ps -ef | grep “nginx: master process” | grep -v “grep” | awk -F ‘ ‘ ‘{print $2}’

查看当前nginx进程情况,我是装了两个,如果都起来,则有两个pid进程,要确定哪个是0.8.15的,然后做完修改好
要重启生效

kill -HUP 12996
配置虚机
server {
listen 81;

server_name www.abc.com ;
root /work/site/www/abc/docs;
#如下必须加上index.php否则有可能出现403forbidden错误
index index.html index.htm index.php;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

location ~ /.php$ {

#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#如下 必须加上这一行,是指定script_filename, 否则有可能返回404没有找到的错误
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_params文件不用修改
include fastcgi_params;
}
}

同时可配置error页面。
配置status状态监测页面
server
{
listen 80;
server_name status.abc.com;
location / {
stub_status on;
access_log off;
}
}

解决500错误
vi /etc/nginx/nginx.conf
events {
worker_connections 1024;
}
调整为
events {
worker_connections 10240;
}

cat /proc/sys/fs/file-max

ulimit -n 改为上面的大数

vi /etc/profile
添加
ulimit -HSn 大数

source /etc/profile


配置完成后,要kill -HUP 11223重启nginx,访问php正常。。。也可以同在0.6.39中配置,一样通过81也正常,别忘了更改selinux端口生效。

为了开机自启动NGINX相关的服务必须在rc.d/rc.local中加入:

ulimit -n 163672
/etc/init.d/php_cgi start
/usr/local/webserver/nginx/sbin/nginx
注意先后顺序,否则可能出现502网关错误或500打为开错误。





ls -l查看文件 所属
给nginx开通session的管理权限,很重要,使PHP中应用的SESSION能够起作用
默认安装的nginx通过make就会有一个nginx的用户,要给它加上使用session的权限
chown -R nginx /var/lib/php/session
这样就可以在nginx中结合php使用session了,至此,原在apache中运行的项目就移植到nginx中了,同时80,81,82均正常,对 外使用80,通过status查看
Active connections: 7658
连接数在7000多时,正常访问!!!
当然为了本地化的实现,是用php分析地区来源然后跳到对应地区页面上,在框架里,所以前端访问还是域名。

四,总结补充

综上,基本可以配置出支持日均百万PV的网站架构。过程中可能有不详细的地方,稍后不断补充,丰富。
开通vsftp
1,创建用户
useradd bjh2o -d /work/site/bjh2o.com -m
2,设置密码
passwd bjh2o
XXX
3,修改/etc/vsftpd/chroot_list
加入bjh2o

给bjh2o这个ftp用户操作相应目录的权限
chown -R bjh2o /work/site/bjh2o.com

4,配置站点http.conf

5,重启web,vsftpd服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_871764.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一篇文章学会独立在Windows server 2003虚拟机上搭建网站

本文学习&#xff1a;在Windows server 2003 虚拟机上的服务器搭建一个网站&#xff0c;非常详细&#xff0c;我都会了真的&#xff0c;有手就行。 Windowsiisaspaccess 环境&#xff1a;一台windows server 2003虚拟机。 准备工作什么也没有&#xff0c;开始搭建 开始测试搭建…

*.github.io的个人博客网站无法连接的问题

问题描述 就是这个样子的&#xff0c;类似*.github.io的网站都打不开&#xff0c;而且是手机电脑连接同一个WIFI&#xff0c;都打不开&#xff0c;但是我手机换了数据&#xff0c;就可以打开了&#xff0c;也是很奇怪&#xff0c;突然就这样了&#xff0c;我也不知道怎么回事&a…

Python多进程之刷小网站浏览量。

作者刚入门Python爬虫&#xff0c;如代码有问题&#xff0c;请大佬评论区指出&#xff01;&#xff01; 代码实现&#xff1a; 1&#xff0c;通过multiprocessing中的进程池实现多进程爬虫。 2&#xff0c;通过requests发起get请求刷浏览量。 代码&#xff1a; from multipr…

爬了招聘网站之后,总结Python学习的几点建议

来源商业新知网&#xff0c;原标题&#xff1a;&#xff1a;爬了招聘网站之后&#xff0c;给你几点学习Python的建议 Python语言相关的岗位非常多&#xff0c;有运维&#xff0c;有自动化测试&#xff0c;有后端开发&#xff0c;有机器学习&#xff0c;如果想要快速上手&#x…

点击链接自动定位到网页某个具体位置和网站右侧导航介绍

页面点击链接后&#xff0c;自动定位到网页某个具体位置 <!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>test</title> </head> <body> …

大型网站架构提速关键技术(页面静态化、memcached、Mysql优化)

大型网站关键技术介绍 1. pv值(page views),访问量大 带来问题 a. 流量大 10000000*2m ->解决方案 买带宽 ,优化程序(处理图片) b. 并发量,同时访问网站的人多.,解决方案 对程序的架构重新设计.->服务器集群 示意图: 1. 数据量大->10亿记录 解决方法是 a. 表的…

问答网站Quora副总裁杨蕾博士:让知识改变世界

????点击上方蓝字星标“Robinly”&#xff0c;获取更多重磅AI访谈 Robin.ly 是立足硅谷的视频内容平台&#xff0c;服务全球工程师和研究人员&#xff0c;通过与知名人工智能科学家、创业者、投资人和领导者的深度对话和现场交流活动&#xff0c;传播行业动态和商业技能&am…

Nginx对某个目录或整个网站进行登录认证的方法

比如要对 网站目录下的 test 文件夹 进行加密认证 首先需要在opt 的主目录中 /opt/ 创建一个新文件 htpasswd 此文件的书写格式是 用户名:密码 每行一个账户 并且 密码必须使用函数 crypt(3) 加密 官方档说 可以用 Apache 的 htpasswd 工具来创建密码文件 [rootlocalhost /]#…

网站分析基础概念之访问停留时间

类型&#xff1a;计数度量 定义&#xff1a;访问停留时间&#xff08;Visit Duration&#xff09;是指一次访问的持续时间。典型的计算方法是在一次访问中&#xff0c;用户最后一次操作发生的时间减去第一次操作发生的时间。 扩展&#xff1a; ● FAQ&#xff1a;为什么访问停留…

网站分析基础概念网页浏览数

■网页浏览数 类型: 计数度量 定义:网页浏览数&#xff08;Page Views&#xff0c;简称PV&#xff09;是指网页被浏览的次数。只要网页与服务器端完成一次请求&#xff0c;网页的浏览数就被累加一次。 说明&#xff1a;为了便于大家的理解&#xff0c;下面举例说明一下。下图是…

网站分析基础概念之新近度

类型&#xff1a;计数度量 定义&#xff1a;新近度&#xff08;Recency&#xff09;是指在一段时间内&#xff0c;访问过网站的访问者距离上次访问的时间间隔。也就是“访问频率”。 举例说明&#xff1a;2014年5月份&#xff0c;“综合购物网”的访问数&#xff08;Visits&…

网站站内数据分析

从来不喜欢说自己的感受。为什么呢&#xff0c;因为在现在这个社会&#xff0c;没有人会真正的去听你的感受。绝大多数人都只看重结果。所以即使有人问&#xff0c;我也不愿说。 一直以来&#xff0c;总喜欢给自己很大的压力。我是一个很怕被甩到后面的人。自尊心强&#xff0c…

python django学习制作一个音乐网站并将项目部署到阿里云服务器上

本音乐网站参考了黄永祥编写的书本《玩转Django 2.0》。 网址&#xff1a;http://xiaomokuaipao.com/ 欢迎关注公众号&#xff1a;Faster_Future 一、数据库的设计&#xff1a;1.歌曲信息表&#xff1a;记录了歌曲的信息。 2.歌曲分类表&#xff1a;实现歌曲的分类。 3.歌曲动…

web前端 html+css+javascript网页设计实例 企业网站制作

(案例源码链接在文章末尾&#xff0c;仅供学习参考) 一、在浏览器中的运行结果&#xff1a; 二、部分代码 1.HTML&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>启乐官网</title&g…

社会化分享bshare代码在网站中的使用(包括https下无效的解决方法)

一、代码的安装与放置 在bshare中选择好自己喜欢的代码样式之后&#xff0c;将代码复制进网站中 放入代码后&#xff0c;就会出现分享按钮。如果想要关键词和按钮平行显示的话&#xff0c;可利用table进行放置 显示结果如下&#xff1a;乌克兰玛丽塔医院 二、bshare代码在h…

如何在Windows服务器(Windows2012)中建网站

前期准备&#xff1a;一台安装了Windows的服务器 方法一&#xff1a;&#xff08;推荐&#xff09; 直接安装phpstudy或者Windows版本宝塔&#xff08;教程可在官网找&#xff09; 方法二&#xff1a; 1、进入服务器管理&#xff1a;选择添加角色和功能&#xff08;控制面板…

seowhy杂谈区顶贴模块,如何使用?

转载于:https://www.cnblogs.com/renzhe/archive/2012/09/14/3005828.html

nitc企业网站程序 V3.2正式版 发布模块,如何使用?

转载于:https://www.cnblogs.com/renzhe/archive/2012/09/24/3005842.html

忍者X3又添新成员 IIS6批量建站

前言 此工具&#xff0c;应该允许在服务器上&#xff0c;推荐是win2003。 服务器配置 1、远程桌面 2、安装配置服务器环境&#xff0c;这里我推荐使用【网站管理助手V3】&#xff0c;如果找不到地址&#xff0c;可以到下图的 一键安装PHPMysqlZend环境&#xff0c;这个链接来获…

OEcms开源、免费企业网站系统 之 忍者X3营销插件

1、配置插件 2、都设置好了&#xff0c;就启动任务吧。 转载于:https://www.cnblogs.com/renzhe/archive/2013/06/08/3127638.html