出现此wordpress4.1问题的原因及解决方法
成都创新互联专注于渭源网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供渭源营销型网站建设,渭源网站制作、渭源网页设计、渭源网站官网定制、成都微信小程序服务,打造渭源网络公司原创品牌,更为您提供渭源网站排名全网营销落地服务。
原因一:文件权限问题
解决方法:
可以直接输入FTP账号、密码;部分VPS或云主机,
没有开通过FTP,可以赋予网站目录www用户权限,
命令是chown -R www /home/web/wordpress;当然,
还可以用winscp等工具登陆ssh,
直接鼠标右键修改文件夹权限。
原因二:环境配置问题。
解决方法:
如果是虚拟主机,联系空间商处理;如果是VPS或云主机,可以去主机控制面板或防火墙软件上,暂时取消掉类似的安全设置。
至于怎么取消,要看具体情况,一般是设置php.ini文件,搜索open_basedir,在前面加上#注释掉;部分防火墙软件,也有可能有类似的功能,限制了网站程序目录权限。当然,为了安全,不建议取消防跨站功能,可以通过手动升级来替代。
在本教程中,我们将教你如何使用HAProxy为你的WordPress服务器搭建第四层负载均衡--特别是web应用层。负载均衡web服务器要在设置中增加冗余,这会在碰到服务器失败、网络问题时增加服务的可靠性;同时将负载分摊在多个服务器上可以提交读操作的性能。我们假设你所配置中包括一个WordPress应用服务器去连接一台单独的MySQL数据库服务器(假设你已经知道如何架设)。
如果你只是运行了一个单独的web服务器应用程序,那么第四层负载均衡就比较适用。如果你的环境更复杂(例如你想通过一个单一的入口在不同的服务器上运行WordPress和一个静态web服务器),那么就可能就需要关注应用层(第七层)负载均衡。
本文是以WordPress为例子,但是它的一般概念可以用于负载平衡,无状态的web应用。
预备知识
在继续本教程之前,你需要首先要完成架设一个拥有单独数据库服务器的WordPress站点的教程(或者使用类似的步骤):如何使用MYSQL建立一个远程数据库来优化站点性能。
当你跟着教程在单独Web应用和数据库服务器下搭建完WordPress后,你应该有两个VPS。因为我们要处理几个VPS,为了参考,我们就成这两个VPS为:
wordpress-1:你的WrodPress web应用服务器
mysql-1:你的Mysql服务器
现在你的环境的抽象视角看起来像下图这个样子:
除了你当前的环境外,我们在本教程中还需要有两个额外的VPS。我们称他们为:
wordpress-2:第二个WordPress web应用服务器
haproxy-www:HAProxy服务器,做负载均衡用
如果你对负载均衡的基本概念或者数据还不熟悉,比如四层负载均衡或者后端或者ACL,这里有篇文章解释这些基本概念:HAProxy及负载均衡概念介绍(译注:大家可百度查找)。
我们的目标
最终,我们想拥有以下一个环境:
也就是说,你的用户将通过HAProxy服务器到达WordPress站点,其中HAProxy服务器会议轮循的方式将用户请求负载均衡至WrodPress应用服务器。你的两个WordPress应用服务器(或者更过,如果你愿意)将都会请求MYSQL数据库。
当前环境快照
可选:在继续本教程之前,你可能想为你当前环境创建快照。本教程中快照有两个目的:
如果发生错误可以回滚到可工作环境
对原始服务器做一次性复制,而不需要再次安装和配置PHP以及Nginx
注意:为环境创建快照需要短暂的关闭VPS
为wordpress-1和mysql-1两个VPS做一个快照。
现在有了快照以后,我们就可以准备好继续搭建环境中其他部分了。
创建第二台web应用服务器
现在我们需要创建第二个VPS来分担原始应用服务器的负载。有两种选择:
从之前的快照wordpress-1中创建一个新的VPS
从头开始重新创建一个VPS并且设置该VPS和wordpress-1有相同的软件和配置
不论那种方法,如果网络可用,一定要确保勾选个人网络。个人网络是本教程中所有VPS都需要的。
如果没有个人网络选项,用你的VPS的公开IP来替代内网IP。需要注意的是,当使用公网IP在应用服务器和数据库服务器之间传输敏感数据比如非加密的数据库密码,并不是一个很好的选择,因为这些信息需要在互联网上传输。
方式一:使用快照创建新的VPS
创建一个新的VPS,叫做wordpress-2,使用你为wordpress-1做的快照来做。
如果你选择的这种方式,可以跳过“方式二”直接去看“同步web应用文件”小节。
方式二:从头创建一个新的VPS
这种方式和“方式一”可二选一。
如果你想从头设置wordpress-2服务器,而不是使用wordpress-1的快照,那么你要确保安装的软件相同。如果你忘了如何安装和设置原始wordpress服务器,可以参考预备知识章节中如何设置web服务器小节。
快速参考,这里是一个相关软件和配置文件的列表,需要你来安装或复制:
软件方面:
Mysql客户端
Nginx
PHP
安装完这些软件后,在你的wordpress-2服务器上运行一下命令:
sudo apt-get update
sudo apt-get install mysql-client
sudo apt-get install nginx php5-fpm php5-mysql
原始应用服务器上需要创建或编辑的配置文件:
/etc/php5/fpm/php.ini
/etc/php5/fpm/pool.d/
/etc/nginx/sites-available/example.com
/etc/nginx/sites-enabled/example.com
当你修改完配置文件后,不要忘了冲洗PHP和Nginx,可以使用一下命令:
sudo service php5-fpm restart
sudo service nginx restart
在新服务器的安装和配置完成以后,我们需要同步wordpress应用文件。
同步Web应用文件
在应用程序可以进行负载均衡之前,我们需要确保新应用服务器的应用程序文件和原始wordpress服务器的文件是同步的。这些文件的位置也就是你安装wordpress的位置,以及其他的一些文件。除了wordpress运行所需要的配置文件之外,上传的文件和通过wordpress接口安装的插件的安装文件和这些插件上传的文件都需要去同步。在预备知识文章中,我们将wordpress安装在/var/www/example.com路径下--我们将
在所有的例子中都会使用这个路径,但是你需要将这个路径替换为你wordpress的实际安装路径。
有很多方法在服务器之间同步文件--NFS或者glusterFS都是不错的选择。我们将使用glusterFS来满足我们所有的同步需求,因为它允许每个应用服务器来存储应用程序文件的副本,同时也会保持文件系统的一致性。下图是我们共享存储方案的概念图:
如果你对本小节中使用的glusterFS完全不熟悉,请参考这个GlusterFS教程(),这是本小节的基础。
注意:下面的内容将经常在wordpress-1和wordpress-2服务器之间跳转,请确保在正确服务器上运行响应命令,否则你将遇到麻烦。
编辑hosts文件
如果你有一个内部DNS,而且这个DNS记录了你VPS的内部IP地址,那么你可以跳过这一步直接配置并执行glusterFS相关命令。
否则,需要在wordpress-1和wordpress-2上编辑/etc/hosts文件:
sudo vi /etc/hosts
增加以下两行,将红色字替换为你应用服务器的各自ip:
wordpress_1_private_IP wordpress-1
wordpress_2_private_IP wordpress-2
保存并退出。
安装GlusterFS并配置一个冗余盘
在wordpress-1和wordpress-2上使用apt-get命令安装glusterFS服务端软件:
sudo apt-get install glusterfs-server
在wordpress-1上,运行以下命令来和wordpress-2保持对等:
sudo gluster peer probe wordpress-2
在wordpress-2上,运行以下命令来和wordpress-1保持对等:
sudo gluster peer probe wordpress-1
在wordpress-1和wordpress-2上,创建路径用来存储glusterFS所管理的文件,运行:
sudo mkdir /gluster-storage
在wordpress-1上,创建glusterFS副本,我们称作volume1,glusterFS 会将它存放在/gluster-storage中的数据保存在你所有的应用服务器上,运行:
sudo gluster volume create volume1 replica 2 transport tcp wordpress-1:/gluster-storage wordpress-2:/gluster-storage force
预期输出以下结果:
volume create: volume1: success: please start the volume to access data
再次在wordpress-1上,运行一下命令来启动刚刚创建的glusterFS卷,在volume1上运行:
sudo gluster volume start volume1
预期输出以下结果:
volume start: volume1: success
在wordpress-1上,如果你想查看刚创建和启动的glusterFS卷的信息,运行:
sudo gluster volume info
你需要明白的是目前有两个glusterFS“同盟”,每个对应一个wordpress服务器。
现在我们已经运行了一个glusterFS盘,为了能够使用它来同步文件,我们需要将该盘挂载。
挂载共享存储
首先挂载wordpress-1上的文件系统。
在wordpress-1上,修改fstab文件来使共享文件系统可以随机启动:
sudo vi /etc/fstab
添加以下行到fstab来将/storage-pool目录作为挂载点:
wordpress-1:/volume1/storage-pool glusterfs defaults,_netdev 0 0
保存并退出。
在wordpress-1上,现在将glusterFS盘挂载至/storage_pool文件系统:
sudo mkdir /storage-pool
sudo mount /storage-pool
在wordpress-1上挂载共享盘/storage-pool后,你可以运行df -h命令来列出当前已挂载的文件。接下来,我们将使用类似的流程来挂载wordpress-2上的共享文件系统。
在wordpress-2上,编辑fstab来使共享系统随机启动:
sudo vi /etc/fstab
添加以下行到fstab来将/storage-pool目录作为挂载点:
wordpress-2:/volume1 /storage-pool glusterfs defaults,_netdev 0 0
在wordpress-2上,现在将glusterFS盘挂载至/storage_pool文件系统:
sudo mkdir /storage-pool
sudo mount /storage-pool
现在,所有在/storage-pool文件系统中创建、修改或删除的文件都会在两个wordpress服务器之间同步,即使当其中一个服务器暂时故障时也会同步。
将wordpress文件移至共享存储
下一步是将wordpress-1的wordpress文件移动到共享存储中。请将红色字体替换为你自己的值。/var/www/example.com表示wordpress文件的位置(nginx也会在这里查找文件),example.com本身只是根目录。
在wordpress-1上,运行以下命令来移动wordpress文件至共享文件系统/storage-pool:
sudo mv /var/www/example.com /storage-pool/
sudo chown www-data:www-data /storage-pool/example.com
接下来,你可能想创建一个符号链接来指向wordpress在共享文件中位置:
sudo ln -s /storage-pool/example.com /var/www/example.com
目前wordpress文件放在共享文件系统/storage-pool中,这些文件接受Nginx访问他们的原始路径/var/www/example.com。
将新的应用服务器指向共享存储区
下一步是我们在新web应用程序服务器上创建一个符号链接指向WordPress文件共享文件系统。
如果你选择使用快照创建wordpress-2,在wordpress-2上运行以下命令:
sudo rm /var/www/example.com
sudo ln -s /storage-pool/example.com /var/www/example.com
如果你从头创建wordpress-2服务器,在wordpress-2上运行以下命令:
sudo mkdir -p /var/www
sudo ln -s /storage-pool/example.com /var/www/example.com
这就是wordpress应用的文件同步。接下来是使新服务器wordpress-2连接数据库。
创建一个新的数据库用户
由于Mysql使用用户名和源主机来区别用户,我们需要创建一个新的wordpress用户来连接新的服务器wordpress-2。
在数据库服务器(mysql-1)上连接至MYSQL控制台:
mysql -u root -p
在一下mysql语句中,将红色字体替换为你真实环境的参数:
wordpress用户:Mysql中wordpress用户。确保和已经存在的用户名保持一致。
wordpress2private_IP:wordpress-2服务器的内部ip。
密码:wordpress用户的Mysql数据库密码。去报和已经存在的用户名密码保持一致。
在wordpress-2上mysql控制台中运行以下命令:
CREATE USER 'wordpressuser'@'wordpress_2_private_IP' IDENTIFIED BY 'password';
GRANT SELECT,DELETE,INSERT,UPDATE ONwordpress.* TO 'wordpressuser'@'wordpress_2_private_IP';
FLUSH PRIVILEGES;
现在第二台服务器wordpress-2就可以登录mysql服务器mysql-1了。
还没负载均衡
注意,有两个应用服务器在运行但是他们并没有被负载均衡,因为每个服务器必须通过他们的外网IP来访问。而我们希望能够通过相同的URL访问该应用程序,如,以及在两台服务器之间做流量分配。
安装HAProxy
在内网中创建一个新的VPS,在本教程中,我们叫做haproxy-www。
在haproxy-www服务器上使用apt-get命令来安装HAProxy:
sudo apt-get update
sudo apt-get install haproxy
我们需要使用HAProxy初始化脚本来启动和停止HAProxy:
sudo vi /etc/default/haproxy
将ENABLED值改为1来开启初始化脚本:
ENABLED=1
保存并退出。
现在HAProxy可以在服务器上被启动和停止。当然,你现在可以使用命令来控制HAProxy了。让我们来检查下它是否运行:
/etc/init.d$ sudo service haproxy status
输出结果:
haproxy not running
HAProxy没有运行。这是对的,因为它首先需要配置。接下来,让我们来配置HAProxy。
HAProxy配置
HAProxy的配置文件主要分为以下两部分:
Global:设置进程级参数
Proxies:包括默认、监听、前端、后端参数
Global配置
所有的HAProxy配置都需要在HAProxy服务器haproxy-www上进行。
首先,复制一份默认的haproxy.cfg文件:
cd /etc/haproxy; sudo cp haproxy.cfg haproxy.cfg.orig
现在,使用文本编辑器打开haproxy.cfg文件:
sudo vi /etc/haproxy/haproxy.cfg
你将看到有两部分已经被定义:global和defaults。首先,我们将对一些默认参数做一些修改。
在默认情况下,找到一下两行:
mode http
option httplog
将其中http替换为tcp,结果如下:
mode tcp
option tcplog
选择tcp作为HAProxy执行第4层负载平衡模式配置。在我们的例子中,这意味着一个特定的IP地址和端口中所有传入的流量将被转发到同一后端。如果你不熟悉这一概念,请阅读在HAProxy介绍中的负载均衡小节。
先不要关闭配置文件,我们将加上proxy配置。
代理配置(Proxyies)
我们首先要做的事情是增加前端。对一个基本的4层负载均衡设置,前端监听一个特定的IP地址和端口的流量,并将传入流量转发到一个指定的后端。
在配置文件的末尾,让我们添加上我们的前端:www。请将haproxy_www_public_IP替换为你自己的haproxy-www服务器IP地址:
frontend www
bind haproxy_www_public_IP:80
default_backend wordpress-backend
以下是对上面的前端配置代码片段中的每一行是什么意思做出解释:
frontend www:指定了一个名为“www”的前端,我们将用它来处理传入www的流量
bind haproxywwwpublic_IP:80:将haproxywwwpublic_IP替换为你haproxy-www服务器的外网ip。这是告诉haproxy这个前端将处理这个ip和端口上的流量。
default_backend wordpress-backend:这指定所有这些前端的流量将会转发到wordpress-backend,这在下一步我们将定义
配置完前端后,继续将以下后端配置加入文件末尾:
backend wordpress-backend
balance roundrobin
mode tcp
server wordpress-1 wordpress_1_private_IP:80 check
server wordpress-2 wordpress_2_private_IP:80 check
以下是对上面每行配置的解释:
backend wordpress-backend:指定了一个名为“wordpress-backend”的后端
balance roundrobin:指定该后端将使用“轮循”的负载均衡算法
server wordpress-1 ...:指定了一个名为“wordpress-1”的后端服务器,内外nagIP(你必须替换为你自己服务器ip)和端口监听,在这个例子中为80端口。“check”选项表示使负载均衡器对这个服务器定期进行健康检查
server wordpress-2 ...:指定了一个名为“wordpress-2”的后端
保存并退出。
现在HAProxy可以启动了,但是让我们先开启日志功能。
开始HAProxy日志功能
启用HAproxy日志功能非常简单,首先编辑rsyslog.conf文件:
sudo vi /etc/rsyslog.conf
接着找到一下两行,取消这两行注释来开启UDP日志功能:
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
现在重启rsyslog来使新配置生效:
sudo service rsyslog restart
HAProxy日志功能现在已经开启了!日志文件将在HAProxy启动后被放在/var/log/haproxy.log。
启动HAProxy和PHP/Nginx
在haproxy-www服务器上,启动HAProxy来使配置生效:
sudo service haproxy restart
取决于你如何设置您的新应用程序服务器,您可能需要重新启动你的WordPress应用程序通过重启PHP和Nginx。
在wordpress-2服务器上,重启PHP和Nginx:
sudo service php5-fpm restart
sudo service nginx restart
现在WordPress应该运行在两个应用程序服务器,它们是负载均衡的。但仍有最后一个配置需要更改。
更新WordPress配置
现在你的WordPress应用程序的URL已经改变,我们必须在WordPress更新几个设置。
在wordpress服务器,编辑你的wp-config.php文件。它位于WordPress的安装位置(在本教程中,它是安装在/var/www/example.com但你安装可能会有所不同):
cd /var/www/example.com; sudo vi wp-config.php
找到"DB_NAME"所在行;增加以下配置在该行之上,并且替换红色的值:
define('WP_SITEURL', '');
define('WP_HOME', '');
保存并退出。
现在WordPress url配置为指向您的负载平衡器,而不是只有最初的WordPress服务器,而且在当你试着访问wp-admin控制台时发挥作用。
负载均衡完成
您的web应用程序服务器现在是负载均衡的。你的负载平衡WordPress现在可以访问您的用户通过负载均衡器haproxy-www的外网IP地址或域名访问!
总结
现在您的用户将在两个wordpress服务器之间负载。另外,如果其中一个wordpress挂了,那么您的站点仍然是可用的,因为另一个wordpress服务器仍然在处理流量。
使用此设置,记住你的HAProxy负载均衡服务器haproxy-www以及数据库服务器mysql-1,需要为你的网站运行正常而工作。
1.本文由程序员学架构摘译
2. 本文译自
300万。WordPress是一款能让您建立出色网站、博客或应用程序的开源软件。美观的设计,强大的功能,助您自由发挥心中所想。WordPress既是免费的,也是无价的,可以承载300万的负荷。
自己本地测和上传到服务器后的运行情况相差太远了
不过wordpress相对来说比较占用资源的
负载能力差的程序造成cpu占用过高
不限空间、流量、网站数,并不是说你就可以无限制的使用资源,因为国外主机对cpu的占用是有限制的。如果你选用建站程序不太好、流量又过大,导致cpu占用过高,就会被暂停访问的。最可能超的就是cpu限制,其他限制超过的情况比较少。程序的好坏对这些影响很大。
Lunarpages的CPU限制的的确比较厉害,不过CPU的使用量和所用的程序有非常大的关系,论坛类的由于用户Session是处于连接状态的,所以耗资源特别厉害。静态化的话就可以承受比较高的PV量
还有动态程序,尽可能的生成静态网页,如果是论坛的话,那就减少插件吧。做了这几步如果还被封,只能换空间了。
一个大流量的wordpress博客,不做任何优化,cpu肯定会超标。日3000ip以上,虚拟主机就撑不了了,这除了cpu限制以外,还有wp 本身的原因,wp的执行效率是很低的,不弄缓存(生成静态文件, 使用WP Super Cache插件),国外随便哪个oversell的主机都是吃不消的,但是缓存了呢?直接生成的静态文件,访问的时候不需要cpu去执行php,这就大大降低了cpu的消耗率。
承受能力:很多人问一天能支持多少ip,其实这个问题很难回答,有客户说图片站一天跑过万ip的,也有人说一天过3千就费劲,其实这个和程序关系很大的,建议把程序优化下,而且官方不允许超cpu的20%;现在很多都是不限空间和不限流量,但实际上你根本用不了多少,就算你真的ip数上来了,也有 cpu限制,我一个站运行wordpress,到4000多ip的时候就老是被暂停账号了。