网站搬家记录

记录第一次用宝塔面板搬迁wordpress网站,附性能优化+防黑。

最近把网站从虚拟主机搬迁到了vps,由于是第一次搬网站,又不太懂运维和服务器知识,期间踩了不少坑,在此记录一下,也希望对遇到同样问题的朋友有所帮助。首先,如果你的流量比较大,为了不影响用户最好选准时间段,我的网站早晨是一个流量低谷,所以我是定好闹钟6点起床开搞的,记得在完成搬迁之前,原有服务器上的网站先别急着删掉,这样可以随时通过域名解析就能恢复。

宝塔面板的安装和配置

宝塔面板的安装在这里我就不说了,网上一抓一大把,实在不行看官网教程一步步走下去就行,这边我为了自己做备忘,简单记录下面板里需要设置的东西。

非必须的配置

  • 如果是国内云服务器厂商,需要在面板导入出站规则和入站规则。
  • 如果是有多块磁盘,需要运行一下自动挂载

LNMP的一键安装

这边所安装的php和nginx版本最好和原有服务器的版本一样。

优化服务器效率

用 linux工具箱配置swap

安装php拓展:opcache, memcached, magemagick, fileinfo, exif

  • 开启memcached缓存步骤:下载解压memcached对应的wordpress插件 ,上传到 wp-content 目录下面,然后再wp-config里面添加两行define('ENABLE_CACHE', true);define('WP_CACHE', true);

安全配置

  1. 修改账号密码
  2. 修改面板端口
  3. 修改服务器的SSH端口
  4. 禁止ping
  5. 开启监控

转移网站和数据库

把网站根目录和数据库打包备份到本地,这里注意一点,原先的网站最好压缩成tar.gz的后缀,防止在转移之后中文文件名出现乱码,至于数据库什么格式都行,然后通过宝塔面板上传导入,网站上传放到wwwroot下,数据库正常导入。然后在网站那个页面添加一个新站点,域名添加两个,一个带www的一个不带www的,目录指向wwwroot下面的那个网站目录,如果是wordpress或者其他cms程序的话,还需要设置伪静态规则,直接选中点确定就行。至此,网站和数据库就转移完成,接下来连接数据库。

连接数据库

把wordpress目录下的wp-config文件中的数据库信息修改成新的,其他的cms程序都有对应的配置文件,记得找到修改一下,这样网站才能正确连接到数据库。

ssl证书迁移

如果你的网站是https的,那就需要转移ssl证书,这边宝塔面板还是很方便的。可以申请宝塔的免费证书(有效期1年),也可以自行导入第三方证书,我用的是阿里云的免费ssl证书,也是一年有效期。第三方证书都只要把证书的内容复制粘贴到框里就行了,

开放端口

这里我折腾了很久,也不知道是因为我之前ssl没部署还是端口没开放的原因,反正我遇到了cloudflare 522错误,这个错误的意思其实是通过域名已经能连到cloudflare,但是cloudflare连不到你的服务器。这里千万要记得:把vps服务商和宝塔面板的端口,如什么80啊433啊,该开放的都开放,并且把cloudflare的IP段加入白名单,不然可能会因为阻止了cloudflare的IP段而造成无法正确解析,这里排查要点主要是以下两点,我就原话复制过来了:

  • 请确保你没有在.htaccess,iptables的,或您的防火墙阻止CloudFlare的IP地址。
  • 确保您的托管服务提供商是不是速率限制或阻止来自CloudFlare的IP地址IP请求,并要求他们在白名单地址中提到的IP地址http://www.cloudflare.com/ips

域名解析

这一步还是比较简单的,如果你之前用的是vps,换一下ip就行,如果你之前用的是虚拟主机,那就把CNAME解析换成A解析,然后把地址改成ip。如果你用cloudflare做了CDN加速,并且把原先域名服务商的DNS服务器换成了cloudflare的,那么你原先的域名服务商的解析就会被cloudflare托管,这时候需要在cloudflare的DNS页面修改解析。

常见问题

图片无法显示

由于原先主机是linux的原因,如果迁移不当则会造成中文文件名乱码,导致新网站就显示不出图片了。这边有3种解决方法。

  • 第一种方法就是在迁移的时候把网站压缩成tar.gz的格式,这样linux是可以保留中文名的,但有些主机的cpanel是只支持zip压缩的,这样就需要用到第二种解决方法了。
  • 第二种方法,先用FTP软件把uploads目录,也就是存储文件的目录下到本地,然后用脚本把文件名都批量替换成拼音的,最后再把uploads目录上传到新的服务器上,我用的是这个脚本,装个python用命令行py一下就行了,执行完会生成一段sql命令,进入数据库执行一下就好了。
  • 第三种方法,如果你网站的图片不多的话,那么还是手动改吧,这样更加靠谱并且能防止出错。

cloudflare国内速度慢

Cloudflare is fast except in China. 如果你的用户主要在国内,并且网站不是什么灰色产业,那还是建议域名做备案,然后通过国内的云加速做CDN,因为CF在国内的CDN实在是有点慢,如果真不想做备案,那就去掉cloudflare的CDN,只需要把DNS面板的proxy status点成DNS only就行了,这样cloudflare就只做域名解析,如果有其他子域名解析到其他站点,那同样需要把子域名的proxy去掉,不然会出现ssl证书匹配不上的问题。最好是都加上proxy或者干脆都不加,我的根域名去掉之后发现backblaze的流量无法代理过去了,所以后来就又都加上了。

我实测了一下,国内访问的话,去掉cloudflare的CDN加速服务确实比加了CDN要快,当然,前提是机房在亚洲,如果在欧美,那还是老实套上cloudflare吧,其实套上cloudflare也是能接受的,没有网上说的那么不堪。如果你的用户主要在海外,那放心白嫖cloudflare就完事了,你会发现香的一批。

webshell查杀

一旦网站seo上去了,如果防护没做到位,被盯上挂后门是很常见的事情,这时候会严重影响用户浏览,还会使网站体积越来越大。我最近就遇到了一起被人恶意挂webshell的事情,前几天我通过bing搜到自己的网站,点进去发现强制重定向到雅虎日本了,但是在其他搜索引擎是好的,于是我就找原因,点开index文件发现一大串乱码,当时我就意识到被黑了,我原本以为只是简单的改了index文件,后来经过查杀才知道好几个目录都被下了乱码的php文件,隔几天就来改我一次,删了还是有。所以我就上网找查杀工具,打算把源头揪出来,webshell的查杀工具有很多,我用的是深信服的WebShellKiller。

后来经过一系列的仔细对比搜索,我发现源头似乎在主题里,网上查了一下,确实很多黑链后门都是在第三方主题中,所以主题千万别上哪个论坛随便下,网上很多cms主题都被改了而且留了后门。主题目录下有个functions.php文件,可以重点关注一下这个文件。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2020 Eric Shen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信