[转载]给10万pv的WordPress选择最便宜高可用的硬件以及WordPress高并发支持
这些命令很长,但是希望可以让你很容易按照步骤创建一个全新的Linux服务器,使用Varnish, Nginx, W3 Total Cache, and WordPress来搭建一个WordPress博客并运行在亚马逊微型服务器(或其它类似服务),所有这些只需要花费每月$15,能维持每天10万的点 击率,通过blitz.io测试。
教你创建可以维持每天10万点击率的WordPress博客服务器,每月只需$15
在一个新的虚拟专用服务器上安装Ubuntu 11.10 (Oneiric),11.10版本能够提供我们需要的所有软件包,用其他Linux发行版也是一样可以的。
我用亚马逊EC2来搭建测试服务器,不过Linode也很不错。下面是我的服务器详细信息,你的可能会有所不同:
1 DNS:ec2-23-20-235-223.compute-1.amazonaws.com
2 IP:23.20.235.223
使用root登录到服务器
通过ssh连接并登陆到ubuntu,然后执行sudo -i命令切换到root
1 ssh ubuntu@ec2-23-20-235-223.compute-1.amazonaws.com
2 sudo –i
配置防火墙
因为我们要安装各种不同的默认监听所有接口的网络服务,配置一个防火墙是很重要的。
在Ubuntu下,这是很简单的事,只要使用ufw就可以了。执行下面的命令来配置:
1 ufw allow ssh
2 ufw allow http
3 ufw logging off
4 ufw enable
执行完毕后,你的服务器就有了一个相对较安全的防火墙,你还可以使用fail2ban来防止暴力密码攻击。
安装和配置MySQL
1 apt-get update
2 apt-get install mysql-server
完成后,设置mysql的root用户密码
1 mysql -u root –p
然后,在mysql>提示符下输入新设置的root密码,执行下面4条命令,把ENTER_A_PASSWORD替换成你自己的密码
1 CREATE DATABASE wordpress;
2 GRANT ALL PRIVILEGES ON wordpress.* TO “wp_user”@”localhost” IDENTIFIED BY”ENTER_A_PASSWORD”;
3 FLUSH PRIVILEGES;
4 EXIT
现在MySQL的安装完成,可以继续安装PHP和Web服务器了。
安装和配置PHP
我们不仅需要安装PHP,还要安装PHP FPM系统、APC和MySQL模块
1 apt-get install php5-fpm php-pear php5-common php5-mysql php-apc
编辑/etc/php5/fpm/php.ini并在最后添加这些内容:
1 [apc]
2 apc.write_lock = 1
3 apc.slam_defense = 0
编辑/etc/php5/fpm/pool.d/www.conf
替换
1 listen = 127.0.0.1:9000
为
1 listen = /dev/shm/php-fpm-www.sock
再在下面插入这3行
1 listen.owner = nginx
2 listen.group = nginx
3 listen.mode = 0660
然后,在这个文件再下面一点,替换这2行
1 user = www-data
2 group = www-data
为
1 user = nginx
2 group = nginx
保存文件,PHP FPM现在配置好了,但是得安装nginx之后它才能运行。
安装和配置Nginx
根据Nginx website上的方法
下载nginx安全密钥来验证包
1 cd /tmp/
2 wget http://nginx.org/keys/nginx_signing.key
3 apt-key add /tmp/nginx_signing.key
执行下面的命令添加软件源(要使用>>):
1 echo “deb http://nginx.org/packages/ubuntu/ lucid nginx” >> /etc/apt/sources.list
2 echo “deb-src http://nginx.org/packages/ubuntu/ lucid nginx” >> /etc/apt/sources.list
下载和安装nginx
1 apt-get update
2 apt-get install nginx
完成后,我们配置它来适应WordPress:
首先,编辑/etc/nginx/nginx.conf
在http节点内插入下面一行
1 port_in_redirect off;
然后,切换到/etc/nginx/conf.d目录并创建文件/etc/nginx/conf.d/drop
内容为drop file from GitHub里的
再替换/etc/nginx/conf.d/default.conf的内容为github default.conf file的内容,把所有domainname.com改为你自己的域名(有3处,包括一个在文件底部附近)
创建目录/var/www/,并设置它的所有者
1 mkdir -p /var/www/
2 chown nginx:nginx /var/www/
3 chmod 775 /var/www
现在nginx就配置好了,执行下面命令重启nginx和PHP FPM服务:
1 service nginx restart
2 service php5-fpm restart
现在,你可以安装WordPress了!
很简单,只需要执行:
1 cd /tmp
2 wget http://wordpress.org/latest.tar.gz
3 tar zxvf latest.tar.gz
4 cd wordpress
5 mv * /var/www/
6 chown -R nginx:nginx /var/www
配置WordPress,执行:
1 cp /var/www/wp-config-sample.php /var/www/wp-config.php
2 chown nginx:nginx /var/www/wp-config.php
使用浏览器打开https://api.wordpress.org/secret-key/1.1/salt/并复制页面内容
编辑/var/www/wp-config.php
把AUTH_KEY和NONCE_SALT之间的内容替换成你刚从api.wordpress.org复制的内容
然后,替换默认值为你前面设置的(不是root用户):
1 define(‘DB_NAME’, ‘database_name_here’);
2 define(‘DB_USER’, ‘username_here’);
3 define(‘DB_PASSWORD’, ‘password_here’);
做完了这些,如果你没有收到任何错误并且你的域名指向了正确的IP地址(这是很重要的),你就可以打开http://www.domainname.com/install.php进行WordPress的配置了。
回答安装过程中的问题,设置一个靠谱的用户名和密码(强烈推荐把管理员的用户名从admin改为其它的)
在设置页面选择永久链接,并选择“Custom Structure”,粘贴下面的值(包括%符号)
1 /%post_id%/%postname%
然后猛击“Save Changes”
现在可以发表博文了,点击”Posts”然后“Add New”
输入标题和内容,点击“Post”,并注意它的网址是友好的。
运行ablitz.io测试来看看我们的成果
100用户,60秒。超时,低点击率,错误等。CPU性能似乎是现在的瓶颈。
这次测试在1分钟内有632次成功点击并从你的应用那里传输了1.76M的数据。平均每秒9.81次点击大约折合每天847,776次点击。
很大的问题是:34.91%的用户在这次测试中遇到了超时或错误。
所以,服务器虽然成功运行了,但访问速度还是太慢了!
下面,我们来启用WordPress的缓存系统
打开WordPress的管理页面-插件-安装新插件。搜索“W3 Total Cache”,安装并激活这个插件。
在页面左边大的菜单里打开新的“Performance”选项,在每个有“PHP APC”的缓存选项中激活下面2个选项:
1 Database Cache
2 Object Cache
点击“Save All Settings”,然后点击“Deploy”
再回到ablitz.io测试,表现应该会好很多
这次测试在1分钟内有2902次成功点击并从你的应用那里传输了27.59M的数据。平均每秒46次点击大约折合每天4,006,008次点击。
如果我们把blitz.io中测试的用户数从100上升到250,问题又来了:
这次测试在1分钟内有4733次成功点击并从你的应用那里传输了36.20M的数据。平均每秒72次点击大约折合每天6,297,653次点击。
这次的问题是:5.49%的用户在这次测试中遇到了超时或错误!
你可以在Nginx And APC configuration in this PDF查看Blitz结果
还是不太理想?可以安装varnish 3了!
1 apt-get install varnish
编辑/etc/varnish/default.vcl 用里default.vcl file from github的内容替换它的内容
编辑/etc/default/varnish
把下面的内容
1 DAEMON_OPTS=”-a :6081 \
2 -T localhost:6082 \
3 -f /etc/varnish/default.vcl \
4 -S /etc/varnish/secret \
5 -s malloc,256m”
改为
1 DAEMON_OPTS=”-a :80 \
2 -T localhost:6082 \
3 -f /etc/varnish/default.vcl \
4 -S /etc/varnish/secret \
5 -s malloc,64m”
然后,我们需要编辑nginx的配置文件让它监听8080而不是80端口,Varnish替代了它来监听80端口。
编辑/etc/nginx/conf.d/default.conf
并替换
1 listen 80;
为
1 listen 8080;
保存文件,再执行:
1 <strong>service nginx restart
2 service varnish restart</strong>
再次使用100用户运行blitz.io测试
基本上没有CPU使用率,性能大大改善。
这次测试在1分钟内有2959次成功点击并从你的应用那里传输了28.36M的数据。平均每秒47次点击大约折合每天4,093,000次点击。
再次使用250用户运行blitz.io测试
这次测试在1分钟内有7342次成功点击并从你的应用那里传输了70.38M的数据。平均每秒117次点击大约折合每天10,134,627次点击。
你可以在full final run blitz performance details in this PDF查看具体细节。
这就是使用每月少于$20的服务器创建每天可以维持10万点击率的WordPress博客的过程,全归功于varnish和nginx,就是这么简单!
[转载]给10万pv的WordPress选择最便宜高可用的硬件以及WordPress高并发支持的更多相关文章
- Redis高可用详解:持久化技术及方案选择 (推荐)--转载自编程迷思博客www.cnblogs.com/kismetv/p/8654978.html
一.Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义. 我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常 ...
- Redis高可用详解:持久化技术及方案选择
文章摘自:https://www.cnblogs.com/kismetv/p/9137897.html 前言 在上一篇文章中,介绍了Redis的内存模型,从这篇文章开始,将依次介绍Redis高可用相关 ...
- (转载)MySQL数据库的几种常见高可用方案
转自: https://yq.aliyun.com/articles/74454 随着人们对数据一致性的要求不断的提高,越来越多的方法被尝试用来解决分布式数据一致性的问题,如MySQL自身的优化. ...
- keepalived高可用haproxy负载均衡varnish缓存wordpress的动静分离(第一次配置成功)
haproxy和nginx都可以作为七层和四层反代服务器对外提供服务,此文通过haproxy和keealived配置varnish搭建wordpress的动静分离站点 一.实验环境 五台虚拟机: ha ...
- [转载] MySQL高可用方案选型参考
原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao. ...
- linux高可用集群(HA)原理详解(转载)
一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个 节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服务.高可用 ...
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求(转载)
转自:http://www.cnblogs.com/dudu/archive/2009/11/10/1600062.html 今天下午17点左右,博客园博客站点出现这样的错误信息: Error Sum ...
- 转载:让Windows Server 2012r2 IIS8 ASP.NET 支持10万并发请求
由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,今天下午由于某种情况造成同时请求超过5000,从而出现了上面的错误. 为了避免这样的错误,我们根据相关文档调整了设置,让服务器从设置上支 ...
- Windows系统服务器IIS7.5 Asp.net支持10万请求的设置方法
问题现象 ECS Windows系统服务器基于IIS搭建的网站由于IIS默认的配置,服务器最多只能处理5000个同时请求,访问量大时很容易导致报错: Error Summary: HTTP Erro ...
随机推荐
- RAID技术
RAID:其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵.容量巨大的硬盘.所以称为廉价磁盘冗余数组 RAID级别: RAID 0亦称为带区集.它是将多个 ...
- 【奇偶剪枝】【HDU1010】Tempter of the Bone
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...
- 使用 Oracle Sql plus的一点经验
1 当你输入的语句有错误的时候,不用重新输入语句,直接输入ed就会出现一个文本文档显示之前输入的语句,这样你可以在文本文档里面修改语句,最后点保存. 2 三个set:设置每行显示的记录长度:SE ...
- Hibernate工作原理及为什么要用?(转http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html)
原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的<mapping resou ...
- jsp中包含JAVA代码
在JSP中大部分都是由脚本小程序组成,所谓的脚本小程序就是里面直接包含了JAVA代码. 在JSP中Scriptlet一共分为三种: · <%%>:定义局部变量,编写语句 ...
- Android 动画小知识点
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="h ...
- Keil MDK中使用pc-lint的详细方法
keil MDK版本:V4.03 PC-lint版本: V8.0 关于pc-lint的强大作用,网上有很多,这里不想再复述,只说一句:能通过pc-lint检验的程序不一定没有问题,但通过了pc-li ...
- ASP.NET自定义控件加载资源WebResource问题
最近项目用日期控件,想把My97的资源文件跟TextBox封装成一个DatePicker控件,其实很简单的意见事情,但是还是用了一天多的时间,主要的问题就是解决资源文件加载的问题.通过一天多的努力,得 ...
- BeyondCompare常用功能图解
http://jingyan.baidu.com/article/066074d68f847ec3c31cb05a.html http://lovesoo.org/use-file-compariso ...
- GDB单步调试程序
linux下gdb单步调试 用 GDB 调试程序 GDB 概述———— GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 ...