记录下网站服务器迁移和https升级遇到的坑

这篇文章发布于 2018年06月18日,星期一,7:19 上午,归类于 应用技巧。 阅读 16843 次, 今日 2 次

 

端午在家把网站进行了服务器迁移和https升级改造,记录下,希望可以帮到类型场景的人。

一、一些关于服务器迁移的疑问

1、为什么要服务器迁移?

原本网站使用的是阿里云的虚拟主机服务,无法升级为https协议。之前就有人反馈运行商劫持问题,而且http协议的SEO应该不及https。事不宜迟,不能因小失大,于是果断购买独立的云服务器ECS,进行服务器迁移。

2、为什么不借助CDN的https?

如果走https,比如要整站CDN,而CDN是根据流量计费的。那原来主机的包月带宽几乎就白费了,且自己网站访问量较大,全走CDN,钱烧不起。一句话总结就是太不划算了。不过目前站点部分高频小资源有示意CDN。

3、服务器成本怎样的?

买的是这个配置的云服务器ECS:2 vCPU 4 GB (I/O优化) ecs.c5.large 2Mbps。1年2400多吧,因为比较急,什么优惠券活动之类的什么也没有,硬价格。因为跟之前云虚拟主机价格差不多,所以觉得还OK。

4、备案怎样处理的?

因为之前在阿里云有备案,你只要买阿里云服务器,是可以自动正常解析的。因为,备案无需任何其他调整,直接修改域名解析即可。

二、服务器迁移和https升级概述

1. 购买独立的云服务器ECS

这个靠自己甄选了,经验就是不要贪便宜,一分价钱一分货,1年多个几百块钱,少很多性能或宕机之类的麻烦,显然更划算。

然后系统我选的是CentOS,因为在下拉框中第一个,我觉得应该是最合适的。

2. 安装LNMP

像我这种服务器小白,如果自己一点一点安装,国庆节到了都不一定弄得好,于是使用了LNMP一键安装包。

官网:https://lnmp.org/

非常好用,按照文档,一步一步下来,很顺利。我觉得LNMP最强的地方就是官方的文档事无巨细,各种坑,各种场景都会给你指出,帮了大忙。

3. 申请SSL证书

腾讯云,阿里云还有一个专门申请SSL的网站都可以申请免费的SSL证书。

4. 安装虚拟主机

见文档,一步一步下来就好了。然后必须夸一夸,虚拟主机安装时候直接有是否需要SSL支持的提示,这个太棒了,当然是要,然后选择自己上传证书,完成后,直接站点就支持https访问了。我整个人都惊呆了,我原本以为弄https会很麻烦,我勒个擦,居然像吃早饭一样轻松。

5. 主机文件迁移

原虚拟主机打包(阿里云的虚拟主机管理后台有这个功能),借助sftp传到云主机,然后云主机上解压即可(通过命令,解压命令我都是百度的)。

6. 数据库数据迁移

原虚拟主机数据库数据导出(阿里云的数据库管理后台可以可视化操作),借助sftp传到云主机,然后云主机上导入(通过命令,数据库导入等操作命令我百度的)。

博客数据库连接的主机名、数据库名也同步修改。

7. 原域名解析到新的主机上

云主机都是有独立IP的,因此,域名通过A记录到新的IP上即可!此时,https协议就能正常访问页面了。

8. 写死的http协议排查

wordpress页面双管齐下,一是数据库字符串替换,image.zhangxinxu.com域名下图片的资源所有http://协议字符替换为//,二是在文章内容输出再做一次过滤——修改了wordpress源码;对于上千+的静态页面,自己写了个工具,在线上批量替换,很快就搞定了,顺便搞了了很多老页面使用google jquery.js外链问题(墙了)。

9. nginx 301站点http到https

整站301跳转,http协议域名自动到https,然后整个网站迁移和https升级工作完成。

三、迁移服务器遇到的一些坑

1. putty要使用新版

一开始用的是阿里云提供的命令行管理界面,但在上传SSL证书那里,rz命令一直没效果,于是换本地工具putty进行上传,装了相关的包,还是无效,后来找了一圈才知道,是我的putty版本太低了,无法呼起本地文件选择框,果断下拉个新版本,就好了。

2. wordpress子页总是回到首页问题

前期还算很顺利,基本上一个下午,就完成到了第7步,域名解析到新的主机上。页面都可以访问了,但是,博客子页面全部都自动跳转到了首页……

这个问题让我一直研究到了凌晨4点,结果还没成功!好惨!一个小问题用的时间,比之前80%工作还多。睡了一觉,脑子就清爽多了,思路大开,很快就意识到,并不是LNMP提供的wordpress rewrite本身规则有问题,而是我网站的目录架构和通常的wordpress站点不一样。我的wordpress博客是最为二级目录存在的,而LNMP提供的wordpress rewrite是针对一级根目录写的,于是原来的:

location / {
    try_files $uri $uri/ /index.php?$args;
}

修改为:

location /wordpress/ {
    try_files $uri $uri/ /wordpress/index.php?$args;
}

问题才得以解决。

唉,主要还是服务器知识积累太少,所以才折腾了这么久。

四、总结

这次迁移遇到的坑其实不多,也就默认的wordpress rewrite规则不适用的问题。因为之前《CSS世界》这本书配套网站cssworld.cn也是自己专门买的个云服务器(个人不能弄论坛,所以买的海外服务器)弄出来了,前期已经有过一些摸索了,所以这次改造整体还算顺利。

wordpress子页总是回到首页问题,网上几乎没有相关的信息出现,说明这个问题并不是普遍问题,而是自己某些特殊性导致的,此时就应该意识到是目录层级的问题,还是自己不够敏锐,应该是熬夜太晚,迷迷糊糊,思维不敏捷的原因,其实,就应该早点睡,一觉醒来,精神好了,自然就知道怎么回事了。主要就是凌晨2~3点访问量小,问题解决的话可以做到神不知鬼不觉,拖到第二天白天影响就比较大,所以死耗着,也是没办法的事情。

(完)

分享到:

留下回复,目前14 条评论

  1. 陈志军说道:

    大神,我公司现在要把项目从一台阿里云服务器切换到另一台阿里云服务器,请问该怎么操作呢?新的ECS实例是空的,已经安装好了jdk和nginx,域名已经解析绑定,但是接下来不知道该干嘛了,还有一些环境配置好像和原来服务器的不大一样,希望大神能抽空指点一二~

  2. 说道:

    看了 这个,给公司的网站换成 https了

  3. 老地方说道:

    cssworld.cn 被墙了?

  4. wingmeng说道:

    访问速度快多了,旭哥辛苦了!

  5. 柳孤城说道:

    其实我是想问那个寻求共同奋斗的妹子找到对象没有?

  6. xiaoming说道:

    1、cdn可以使用一些免费的cdn给一些静态的资源加上,这样减轻了源站服务器的压力也能提高加载速度,毕竟阿里服务器带宽有点贵
    2、php集成环境建议使用宝塔,、面板,个人感觉要比其它的集成环境好一些,而且图形界面美观功能多,免去了很多自己手动敲命令改配置看日志的麻烦

  7. bruce说道:

    不错,怎么注册贵站用户

  8. mengkun说道:

    应该同时将 PHP 升级到 7 的,会快很多

  9. 邢浩东说道:

    您好,昨天刚买了您写的《CSS世界》,正准备钻研一下css知识,今天我也把我的项目从阿里虚拟主机迁移到了阿里云服务器了,看你博客学习的时候看到你写的这个博客,我发现我没有配置https,就按照你的方法配置,第三步没找到阿里云免费申请SSL证书的入口,希望您有时间可以回复一个阿里云免费申请SSL证书的入口。我也申请一下。谢谢

  10. 郭子说道:

    推荐个服务器管理软件:宝塔,用完会发现上面的几个步骤都可以在面板里完成。

  11. tom说道:

    「像我这种服务器小白,如果自己一点一点安装,国庆节到了都不一定弄得好,于是使用了LNMP一键安装包。」

    也不是很麻烦吧,

    https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7

    使用官方仓库,后续更新会方便许多,能及时吃到安全更新。

  12. tom说道:

    「wordpress子页总是回到首页问题,网上几乎没有相关的信息出现,说明这个问题并不是普遍问题,而是自己某些特殊性导致的」

    WordPress 不在网站根目录上的配置可以参考 Nginx 上的说明,这个不是你一个人遇到的问题:

    https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/