问题描述
笔者昨天给一位前辈 「土木坛子的博客」发了链接交换的请求,前辈的维护博客多年,今天早上有了下面这段对话:
笔者刚开始接触个人网站搭建的时候确实没有做太多的调研,纯粹是因为了解到还有这种方式,感觉很棒,当天就自己折腾了起来,搞凌晨搭建出来了才睡觉。但我这种前期没有规划部署好,就会导致后面的这一大堆问题。
正如前辈所说的,境内的很多服务,确实有特别多的限制(也许是为了安全……),前几天笔者由于国内的「备案」要求,折腾了半天才稍微解决了图床问题(参见—>【干货|解决方案】如何优化网站的访问速度?使用「OSS对象存储+iPic管理+Typora写作」带来一篇博客从创作、发布到访问的全流程“丝滑体验”),那个时候就在想后续的很多服务可能都要迁移到境外服务了。
同时,笔者之前还在博客中分享了科学上网的文章(参见—>【V*N翻墙】科学上网|V2ray|阿里云|搭建服务器|低延迟、稳定、秒开4K),使用的是实名制的域名和服务器,这其实也很危险……为我的人身安全着想,下定决心,要将域名和服务器迁移到国外。
今天恰好前辈也提醒(感谢?),那就动手先从域名开始迁移吧。这篇文章完成后,本站的访问网址将从原先的 ferryxie.cn
更换为ferryxie.com
。
迁移工作主要分为以下几个步骤:
1、购买无需实名的域名
2、给新域名申请SSL证书
3、更换旧域名的解析,删除旧有服务
4、修改Wordpress数据库
5、通知友链小伙伴更新链接
cn和com的区别
在开始操作之前,笔者在这里先科普:为什么使用.cn域名不是一个好选择,最好选择.com
域名?
.cn域名
.cn域名
属于国家地区顶级域名,CN 代表中国。由中国互联网络信息中心(CNNIC)负责注册管理机构,维护中央数据库。
.com域名
.com域名
,国际最广泛流行的通用域名格式,所有国际化公司都会注册.com域名。最初由美国国防部管理,现在则由VeriSign管理。
.cn域名
和.com域名
区别
1、一个国际域名,一个是中国国家域名;
2、cn域名
要求实名认证,.com域名
通过境外服务商购买不需要实名认证;
购买无需实名的域名
如上所说,.com域名
按道理归境外公司管理,是不需要实名认证的,但是如果在国内服务商(e.g.阿里云)购买,还是强制要求实名认证的。
所以要购买无需实名认证的域名,需要要境外服务商购买。笔者这里选择在 「GNAME」 这个新加坡服务商购买域名,步骤很简单:
第一步:打开网站 ,输入要注册域名。
第二步:选购后加入购物清单,并去结算。笔者所购买的域名优惠后才59元,比在阿里云购买还便宜。
第三步:进入「GNAME」的控制台,在域名管理中,添加一个模板,主要是填写一些简单的信息。
第四步:将所添加的模板过户到所购买的域名。
这样就完成了域名的购买流程了。但笔者原先的个人网站使用的是HTTPS协议,新购买的证书并没有提供SSL证书,如果直接迁移域名会出问题,所以需要给这个新域名申请SSL证书。
关于更换域名是否需要重新申请「SSL证书」,需要看以下的具体情况
1、首先看现在使用的 SSL 证书绑定的是域名还是 IP 地址,如果是IP绑定的是服务器的IP地址,那更换域名并不影响现在的SSL证书。
2、SSL证书也分为「单域名证书」和「多域名证书」,如果是多域名证书,只需要将新的域名添加到SSL证书里面就可以了,同时之前的SSL证书还是可以再用的。
3、如果是「单域名证书」,域名更改后,之前的SSL证书不能再用了,至于可不可以中途更换域名分为两种情况:(1)非 DigiCert SSL证书中途是不可以更换域名的,只能重新申请SSL证书了(2)如果原证书是 DigiCert SSL证书,是可以中途更换域名的。
4、同时,笔者之前在搭建科学上网时,有一个使用使用acme.sh申请证书的过程,通过acme.sh申请证书如果要更换域名也是要重新申请的,但这里先不解决科学上网的问题,先解决个人网站的问题。笔者个人网站是从其他地方拿到域名的证书,只需保证证书在nginx可用即可。
笔者原先使用的是在七牛云免费申请的SSL单域名且不可更换的证书,绑定的是旧域名,所以需要在七牛云上重新申请SSL证书。
给新域名申请SSL证书
第一步,打开 「七牛云SSL证书产品页面」,点击购买证书。
第二步,选择配置,购买免费的即可
第三步,购买后,需要完成域名所有权验证才能完成订单。验证类型选择DNS(CNAME 记录),可以看到现在是未验证状态。需要到在「GNAME」购买的域名控制台,将「七牛云」申请的SSL证书记录进行「域名解析」,这样才能将SSL证书绑定到域名。
域名解析规则很简单,如下填入即可。(注意:记录名没有.xxx)
在「GNAME」解析域名成功后,需要等待一小段时间,在「七牛云」SSL证书界面,点击「检测验证结果」就可以看到域名所有权变绿了。
第四步:下载SSL证书(由于笔者博客使用的是Nginx,这里选择PEM格式)。下载到本地后,会得到一个 zip 包,解压就可以看到证书文件及私钥了。
第五步:将证书通过「FinalShell」这个SSH工具上传到服务器的目录。由于笔者使用的是 Nginx,旧有的SSL证书也是放在nginx 目录下的,这里需要找到这个目录并且用新证书替换旧证书。
首先使用find / -name nginx.conf
命令查找nginx.conf 路径,找到/usr/local/nginx/conf/
并进入路径后,发现旧证书确实也放在这个目录。将刚刚下载的新证书也拉放到这个目录。
第六步:进入路径并使用 vim 编辑/usr/local/nginx/conf/nginx.conf
文件,找到 server的位置,将旧域名 ferryxie.cn
都替换为 ferryxie.com
root@iZj6caeuxxf7de8lbs6zauZ:~# cd /usr/local/nginx/conf
root@iZj6caeuxxf7de8lbs6zauZ:/usr/local/nginx/conf# vim nginx.conf
第七步:使用systemctl restart nginx
命令重启 nginx。
这样就完成了对新域名的SSL证书申请并绑定了,接下来开始将旧域名搬到新域名上。
修改Wordpress数据库
完成了域名相关工作,接下来笔者按照这篇文章「WordPress网站更换域名详解」的思路使用「插件大法」简单方便修改WordPress数据库,完成域名迁移。(推荐,但只能用于网站后台能正常访问时使用)
这种直接替换数据库的方法适用了旧域名「不再使用了」的情况,如果旧域名仍要使用,可以使用「重定向」的方法,将新域名重定向到旧域名。
第一步: ⚠️ 注意:首先不要急着重新解析绑定域名;
第二步:用旧域名登录WordPress后台,在Wordpress中安装启用插件「automatic-domain-changer」。先备份数据库(更换域名需要修改数据库,为了以防万一,务必备份数据库),插件也提供了数据库备份按钮;
第三步:按照要求填入旧域名、新域名,按照自己的需求勾选选项,点击更换域名等待执行结束;
第四步: 重新解析和绑定新域名,用新域名打开网站看是否正常;
具体填写方参见看下图:
笔者按照上述方法执行,最终完成了数据库的替换,输出以下结果。网站打开也是正常显示,完成替换。
Changing domain
Old domain: ferryxie.cn
New domain: ferryxie.com
Processing table wp_commentmeta
Processing table wp_comments
Processing table wp_links
Processing table wp_matomo_access
Processing table wp_matomo_archive_blob_2021_10
Processing table wp_matomo_archive_blob_2021_11
Processing table wp_matomo_archive_blob_2021_12
Processing table wp_matomo_archive_blob_2022_01
Processing table wp_matomo_archive_blob_2022_02
Processing table wp_matomo_archive_blob_2022_03
Processing table wp_matomo_archive_blob_2022_04
...
更换旧有服务
笔者旧域名是在阿里云购买的,这里对应将阿里云域名的解析搬到GNAME域名解析。
(由于笔者已经将七牛云的OSS都关闭了,这里参考「教程」将七牛云的各种服务都删掉并结算了。首先新建一个images-haiwai.txt,然后account命令登录七牛云账号,只用下面语句删除。备份:文件名称保存在「images-haiwai.list.txt」)
./qshell listbucket images-haiwai -o images-haiwai.list.txt
./qshell batchdelete --force images-haiwai -i images-haiwai.list.txt
最后由于网站链接更新成了 https://ferryxie.com ,需要通知友链的小伙伴们更新链接。至此 ,完成了域名更换。
别提了,V*N翻墙分享还是少发为好,不然你换到.com也没用,别到时候国内都访问不了,别问我怎么知道的,一把辛酸泪
是的…