20181014|本站成功迁移回腾讯云(另附宝塔面板简单评测)

【注意】最后更新于 October 14, 2018,文中内容可能已过时,请谨慎使用。

数个月前,托管在腾讯云本站遭遇了恶意挂马,被挂了一个流氓的一匹的Wordpress木马。

每当第一次打开blog.tracewalker.com的时候都会经历漫长的等待,然后页面被重定向到其他站点(大部分都是v~p&n之类的非法站)。

抽空研究了数次,没有找到这个玩意到底是被挂到了哪里(数据库?wp主题?wp程序文件?),也没搞明白到底是怎么被挂上来的。

防既然防不住,那就只能靠做备份然后出问题就回滚搞定了。

了解了下腾讯云的快照服务,竟然提示即将变成商业化的收费服务,那不能够呀!

迫不得已,只能把wp迁移回自己的NAS(就是下面这货,后面我会写一篇文章详细介绍一下他),然后靠脚本定时备份。

(图)

但是这样做还是存在几个问题:

  1. NAS的CPU负载过重。
  2. NAS的内存不足。
  3. NAS上放置MySQL固态磁盘性能较差。
  4. NAS放置在学校,身处重重内网,无论是做内网穿透还是端口转发都表现得很不稳定。

以上几点相互作用,导致本站还是长期处于打开十分慢甚至打不开的状态,令人十分难受。

因此,把wp博客迁移回腾讯云就被提上了日程(出现挂马问题后,腾讯云主机上只放置了纯静态的个人首页)。

在开始迁移工作之前,如何解决数据的备份问题是一个一直令我十分头疼的问题(腾讯云的快照功能是需要按存储容量付费的,对于我这样的个人站来说这笔开销完全没有必要)。

此前,我在考虑的方案有三种:

  1. 使用Shell脚本+Crontab做定时任务来定期备份(Web的静态资源、WP的Web程序、DataBase的冷备份)。
  2. 使用Docker把博客安装在容器里运行,配合Crontab的定时任务定期来给容器做快照。
  3. 使用Docker把博客安装在容器里运行,程序和数据目录从外部引用,使用定时任务来定期对外部引用的资源进行备份。(现在想想这个方案好像跟第一个方案实现的效果是一样的,多加了Docker的一层完全没什么用,反而多增加了很多不必要的开销?)

思考再三,以上几种方案都有一个共同的问题:对于一个我这样的个人博客站来说,这样的备份方式从配置环境、编写脚本再到调试完善脚本等等,都太过于复杂和耗费精力了。所以迁移工作一直都停留在思考阶段。(主要还是懒)

后来想起来在某个QQ群里有人推荐过宝塔面板这个东西,据说可以一键安装环境,一键完成设置。

此前我对于这种东西是完全无感的,因为我觉得环境这种东西还是自己安装的比较稳定,也比较让人放心。不过我这已经到了晚期的懒癌最终还是说服了我装一个来试一下,毕竟试一试又不会怀孕XD

趁着腾讯云的快照功能还是免费的,给主机做了个快照,然后重装系统,正好还能使用一下最新的CentOS7.5。

操作系统安装完成后使用SSH连接到主机,复制宝塔面板官网的安装命令执行后即可完成安装,安装的过程还是十分简单的。

面板安装完成后在浏览器输入主机的ip:8888就可以打开面板。帐号和密码会在安装完成后显示在SSH里面,不过在官网的安装说明没有提到这一点,SSH里面的安装成功信息也不是十分的显眼,这个初始的帐号密码很容易被忽视,我觉得这一点还有待改进。

第一次登录面板会提示是否一键安装LAMP(LNMP)+FTP环境。只需要点一个安装按钮就可以一键完成WEB环境的安装,操作十分的傻瓜化,还不错。

不过在这里我选择了自己自定义需要安装的软件。自行安装软件的时候可以自行选择需要安装的WEB服务器及版本、MySQL版本、PHP版本。在这里我选择了安装Nginx、PHP7、MySQL5.6。

安装方式有编译安装和快速安装两种,所谓的快速安装就是直接安装二进制包。在选择安装方式的对话框中也有提示:(编译安装耗时较长,但性能较好。快速安装耗时较短。还不错!)当然,在这里我要选编译安装。

选择了编译安装后,会在消息中心中多出三条未读消息,对应每个软件的安装(编译)状态,这里的显示与在系统中执行make等命令进行编译看到的显示基本相同,看起来应该是把shell里的回显提取出来放到了web页面进行显示。

得益于腾讯云的1核1Ghz的CPU,编译的速度十分缓慢,三个程序的编译大概耗时二十分钟左右。不过编译的过程是完全自动化的,不需要进行任何操作就顺利的完成了,还不错,对于我这种懒癌患者简直是一大福音。不用再去一步一步的安装编译工具、安装依赖、设置环境变量、解决报错、下载依赖包等等等等,简直美滋滋。

软件安装完成后,就可以点击面板上的网站按钮进行网站的创建,创建的过程也就是设置web目录、设置域名、设置是否开启HTTPS(HTTPS还可以设置自动申请Let’s Encrypt SSL证书并自动续期,福利呀)、设置是否是动态网站及动态网站使用的解释器,简单的几步就能完成,而且只需要动一动鼠标,完全不需要再去修改配置文件(记不住配置文件的配置项还要去百度)。

Nginx的反向代理也可以在对话框里面通过简单的鼠标点击来进行设置,十分方便。

在宝塔面板的面板设置选项卡里,可以给面板绑定域名,并开启ssl访问,但是他会提示ssl使用的是面板自签的证书,而且在这里绑定域名后使用域名打开还是需要在域名后面加上端口号进行访问,这样的设定让人觉得十分僵硬。

不过我试了一下,可以在新建一个网站,设置开启HTTPS访问,然后设置反向代理到localhost:8888,这样就可以达到给宝塔面板绑定域名并设置ssl访问的效果,完美的一匹!

数据库的创建也是点几下鼠标,输入一个数据库名就可以搞定的,更贴心的是还会自动创建一个与数据库同名的帐号,权限仅包含本库的权限。putty的SSH会话完全没必要了好嘛?关掉关掉!

另外就是最令我捉急的备份功能,这个功能在定时任务选项卡里,定时任务的时间设定类似于crontab,可以按每*月、每*周、每*天、每*小时、每*分钟来设定。与crontab的是,任务的操作可以通过鼠标的点击来设置为执行shell脚本、备份网站、备份数据库、释放内存等,Nice!在这里我添加了每周对网站的备份、每周对数据库的备份、再加一个每周释放一次内存。我的需求基本都满足了呀,心里乐开花!

而且备份的位置也可以设置为主机的硬盘或则各种云的对象存储,因为各种云的对象存储访问基本都会提供一定的免费额度,所以我们的选择还是十分的丰富的。

备份文件的清理也不需要我们担心,在设置定时任务的时候需要保留几份最新的备份也可以一起设置,可以说是十分的贴心。

宝塔面板还提供了主机负载、CPU占用和内存占用之类的主机状态的监控,这些数据全都是可视化的展现给我们的,也是一大亮点。甚至你还可以通过付费来解锁WEB防火墙、远程运维之类更加高端的功能。

主页的服务器状态:

系统监控:

一番试用下来,我的体验就是宝塔面板完全可以满足WEB服务器的大部分运维工作,就我这次迁移站点而言,完全是就点了点鼠标就搞定了服务器的安装和配置。如果是个人站长、工作室、中小企业或者一些事业单位这样的用户,没有专业的运维能力或是运维人员,或者是像我主页没有精力去对服务器进行安装配置的懒虫,宝塔面板真的是个不错的选择。

不过就目前而言,在没有对宝塔面板的所有代码和模块进行一次通读之前,我不会把宝塔面板安装在我的生产环境上(用于支撑掌上忻师及相关业务)。因为他的功能实在是太过于强大,可以说是完全接管了服务器和上面的所有数据。对于生产环境而言,如果出现什么差错,后果难以想象。

另外,这次把wp重新迁移腾讯云后还出现了一点小插曲:

在把主机迁移回腾讯云后,发现有某个wp插件需要升级,点击升级后wp却弹出了需要连接信息的对话框。

之前从来没有出现过这种情况,而且我的主机也没有安装ftp服务,所以我也无法给wp提供ftp账号。

Baidu了一下,得知这种情况可能是因为PHP没有访问程序目录的权限导致的。

检查一下,发现还真是这样。

WEB虚拟主机的目录的拥有者是www:

wp程序的拥有者是root:

尝试使用winscp重新对子目录及文件设定一下权限:

然后再次尝试升级wp的插件,插件很快就成功升级,没有再次弹出需要连接信息的窗口。撒花~

 

也可以看看