这2天忙里偷闲地体验了大街小巷人人都说好的 SiteGround虚拟机建站:对于站点内容不多也不少的外贸B2B企业站来说,简直就是 真 · 虚拟机建站之王 !

说到使用虚拟机建站的体验,我在好几年前就只使用过 bluehost共享虚拟主机而已,你可知我至今还能记得 在线找bluehost客服可以等半小时的那种体验么;之后便跟着料神转向Linode,随着时间的推移,慢慢习得一身勉强够用的Linux知识;现在转过头来体验风靡全球且口碑极好的外贸虚拟机建站,别有一番滋味在心头!

使用的感受

  • 客服24/7在线解决你的问题,等待其响应的时间平均都在几分钟之内。看看我提交的工单:

SiteGround Support

  • 一键cache加速真不是说说而已。我从Linode上完整地复制一个站点过去并使用了官方优化插件SG Optimizer;该测试站在没有套免费CloudFlare CDN的情况下,其GTmetrix测速结果都跟源站(速度优化过且套了CF CDN)不相上下!

GTmetrix Compare

  • site tools一系列工具让人爱不释手。看看后台提供的功能列表:

SiteGround Dashboard

喏,以上3点 wow~~~(还有很多没有提及到的优点,可能自己翅膀硬了啊);对于新手来说真的是不容错过,还可以30天无理由退款,点击SiteGround去体验一下这款优秀的虚拟机吧!

碰到的问题

你看我前面提交了辣么多工单,到底解决了哪些困难?

1、忘记选择虚拟主机地区...

在付款页面行云流水,忘记把上边的数据中心选项从默认的 Asia改为 USA了~

在后台 service-hosting-relocate可以自己花 $30更换一次;由于是失误,客服表示可以免费更换~

2、DNS解析BUG

我添加第一个SG网站并填写域名时,首先绑定的是一些二级域名(比如 beta.sgq.comtest.sgq.com)导致后面新建网站想要绑定主域名如 sgq.com时,就提示失败了:ATTENTION REQUIRED A site with this domain name already exists at SiteGround. Please choose another domain.

试了很多遍都是一样的问题,于是只能找客服咨询,最终原因是:There were some leftover records in our system which were preventing the domain from being added again.

以后一个 未曾在SG绑定过的新域名,最好新建网站时优先绑定好 主域名让SG系统配置好,之后再折腾二级域名啊~

3、绑定不了www二级域名

由于网站URL都是带有 wwwwww.xxx.com,我尝试在SG新建网站绑定 www.xxx.com时,它竟然会提示相同的错误如上面第2个问题提到的一模一样?!

客服答复:

www.xxx.com goes hand-in-hand with xxx.com

www subdomains are normally A records or CNAMEs of your primary domain.

You can check it via Site Tools > Domain > DNS Zone Editor.

I am afraid that you cannot have www.xxx.com as a separate Site Tools website.

后来另一个客服答复:

Hello Wilson,

To transfer a WordPress based website such as www.xxx.com you can follow the guide which suits you best:
https://my.siteground.com/support/tutorials/wordpress/wordpress-automatic-migrator/
https://my.siteground.com/support/tutorials/wordpress/transfer

It depends on the site's code if the site will be www.xxx.com, since the content is available both through xxx.com and www.xxx.com. As your website is currently set to work with www, once you transfer it, it will continue running with www.

I hope this information has been useful.

既然搬过来URL该是哪样还是那样,没关系那就放一百个心了~

4、单个文件大小不能超过8G

说到网站搬家,对于数据量只有几百M的站点而言,使用 SG Migrator插件那是相当省心!但是对于数据动辄 14GB的网站来说该插件的搬家速度就不是很理想了:

  • 虽然不用常驻插件搬家页面(你可以直接关掉让它在后台运行),但是该插件运行时,服务器CPU长时间满负荷,有点拖慢网站的正常运行...
  • 再说复制的这个测试站体积真得太大(整整几十万个文件而且没有打包压缩),目测进度条得传个一两天,还不清楚能不能完成呢...

于是我就使用SG提供的 SSH权限,直接用命令行的方式把网站压缩包从源站服务器搬过去,显示的传输耗时大概30-40分钟而已~

当传输到SG的该压缩包好像是差不多8G之后命令被中断,并提示:

rsync: write failed on "/home/u8/xxx.com-20200916.tar.gz": File too large (27)
rsync error: error in file IO (code 11) at receiver.c(374) [receiver=3.1.3]

跟客服核实后,我才知道在SG单个文件大小不能超过8G:

于是我又在网上 GET到了新技能,在源站服务器上:

  • 先用split分割压缩包;
  • 再用cat 文件名.tar.gz.part* | tar -zxv合并解压前面分割的压缩包。

感兴趣的话,请看下文记录的具体运用方法~

5、文件数量超过限额被限制

当我把上面测试站压缩包解压到SG新站目录下后,由于文件数量过多导致超过账号分配的 Inode配额被限制进入后台...

SiteGround Limits Exceeded

这种情况,你只有2个选择:要么升级套餐,要么清理网站文件;我当然是选择删除部分网站图片以此来继续测试了,同时也是因为这一点限制,我自己是不会使用SiteGround的,毕竟以后网站文件数量还会日溢增长...

配额数据一览

手动搬家

小站点无需手动搬家,直接插件大法即可~

看SG简单的教程:How to Transfer WordPress Manually,大致流程为:

  • 源网站文件数据库FTP传输过去SG、
  • 修改搬过去的wp-config.php的数据库参数:把旧站数据库参数替换为在SG新建的数据库参数、(值得一提的是为什么需要修改?由于在SG后台新建的数据库名和用户名不能自定义,都是随机字符,于是你不得不修改... 与以往VPS的WP搬家不同的就是这一点,毕竟是共享虚拟主机没有太高权限呢~)

凭我多次搬家经验,站点体积大的话肯定不用FTP:你得把压缩包从源服务器下载回本地,再从本地传回SG,比如14G大小的测试站用FTP一来一回得翻番14Gx2=28G,等待传输的时间会更久,网速不好的话耗不起...

废话不多说,跟着以下步骤把WordPress网站手动搬家到SiteGround:

所有的命令行操作都是在源站服务器终端上执行的:

1、打包压缩网站文件和数据库

  • 参考前面提过的LNMP备份脚本

  • 或者手动导出网站数据库
# 使用mysqldump命令
# 参考自:https://www.vpser.net/manage/mysql-import-export.html
# 请注意:推荐使用MySQL root帐号进行操作,因为有些数据库可能设置了只能对应的用户进行操作。
# 命令格式:/usr/local/mysql/bin/mysqldump -u 用户名 -p 数据库名 > 文件名.sql
# 命令格式说明:如果数据库用户名有密码执行后会提示输入密码;
# 命令格式说明:如果数据库用户名没有密码,就将命令中的“-p”参数删除。
# 命令格式说明:导出的文件保存在当前目录下,也可以将 文件名.sql 换成绝对路径,如 /home/backup/文件名.sql
# 以下举个栗子
/usr/local/mysql/bin/mysqldump -u shenguanqun -p shenguanqun > /home/wwwroot/sgq.sql
  • 或者手动 压缩网站文件
# cd 到网站的上一次目录里
tar zcvf 网站名.tar.gz 网站名
  • 由于SG的单文件8G限制,我们需要把网站压缩包分割成小于或等于8G大小的分割包:
# 执行命令后会卡住,为防止网络中断命令,建议开一个screen窗口
screen -S backup

# 说明:-b 后面设定分割大小比如8G
# 说明:“” 里面填写分割文件的名字
split -b 8G www.xxx.com-20200916.tar.gz "www.xxx.com-20200916.tar.gz.part"

# 最后能看到相应大小的分割文件以字母顺序排序
ll
www.xxx.com-20200916.tar.gz.parta
www.xxx.com-20200916.tar.gz.partb

2、密钥认证

制作密钥对(一把钥匙和一把锁)

# 如果源服务器上还没有密钥对,需要运行以下命令生成
ssh-keygen

# 已有的话,密钥对在以下路径:~/.ssh
# 生成的秘钥文件名:id_rsa
# 生成的公钥文件名:id_rsa.pub
# 现在我们需要把公钥(这把锁)放到SG服务器,执行以下命令查看:
cat id_rsa.pub

打开SG目标网站后台:site tools - DEVS - SSH keys Manager,将上边查看到的 id_rsa.pub内容全部复制过去如图:

SG SSH keys Manager

点击 IMPORT导入成功后,即可在源服务器终端上尝试以下命令连接到SG:

# 在SG后台的SSH页面右边你可以看到:
# Hostname: beta.xxx.com
# Username: beta
# Port: 18765
# 按照以下格式,相应地替换为你的SG信息即可
# ssh -pSG端口 SG用户名@SG主机名 'ls -al'
# 举个例子
ssh -p18765 [email protected] 'ls -al'
# 不出意外的话,你就可以看到终端输出SG服务器家目录下的文件列表

3、rsync同步

现在我们就可以使用 rsync命令把网站 分割包数据库都传过去SG网站根目录下了~

# rsync -P -e "ssh -pSG端口" --progress /源服务器的压缩包绝对路径 SG用户名@SG主机名:~/www/你的网站名/public_html/
# 举个例子
rsync -P -e "ssh -p18765" --progress /home/www.xxx.com-20200916.tar.gz.partaa [email protected]:~/www/beta.xxx.com/public_html/

4、解压网站文件 + 导入数据库

4.1、登陆到SG终端并解压传过来的网站压缩包:

# 直接在源服务器终端上登陆到SG服务器终端
ssh -pSG端口 SG用户名@SG主机名

# 进入目标网站根目录下
cd ~/www/beta.xxx.com/public_html

#解压已传输过来的在该目录下的分割包们
cat 分割包名* | tar -zxv

4.2、压缩包大的话估计得等好一会儿才能解压完成,我们先去SG目标网站后台 site tools - SITE - MySQL

  1. 点击CREATE DATABASE新建数据库;
  2. 点击CREATE USER新建用户、接着点击MANAGE ACCESS在跳出的页面选择刚新建的数据库CONFIRM、最后点击用户名右边的三个圆点change password修改用户名密码CONFIRM

4.3、回到终端,开始把传过来的数据库导入到上面新建的数据库里面去:

# 登录MySql
mysql  -u 刚设置的用户名 -p
输入刚设置的用户密码

# 选择数据库
Use 刚设置的新数据库名字;

# 导入sql文件,填写绝对路径
source ~/www/beta.xxx.com/public_html/xxx.sql

如果你还需要修改网站URL的话,参考这里的SQL方法:

5、修改 wp-config.php

如上述,我们还需要修改下搬过来的 wp-config.php的数据库参数:

define('DB_NAME', '刚新建的数据库名');
/** MySQL database username */
define('DB_USER', '刚创建的数据库用户名');
/** MySQL database password */
define('DB_PASSWORD', '刚修改的数据库用户密码');

最后你就可以尝试打开网站后台,不出意外的话,手动wordpress搬家到siteground大功告成~

最后

体验完毕,取消订单...

Last modification:October 6, 2020
如果觉得我的文章对你有用,请随意赞赏