IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    诺多发表于 2024-10-01 18:10:28
    love 0

    Wordpress

    笔者的博客网站差不多也有2年时间了,一开始用的是Hexo,使用Markdown+gitea+drone+nginx进行日常的写作和发布,跑在腾讯云的服务器上。后来服务器到期后,续期的价格实在难以接受,于是又基于自己的NAS(从群晖到威联通)+Cloudflare Tunnels实现无成本建站,这是第一次迁移,同时也将建站程序由Hexo转到Wordpress,无他,看上了Wordpress完善的生态和成熟(其实是自己懒),总体来说在这个阶段还是知足的,毕竟是无成本方案😂。

    Cloudflare穿透的问题

    在正式说迁移前,先说说为何要迁移。

    基于Cloudflare的穿透方案,网站可以突破墙内的端口封锁,又省去了购买服务器的花销,其实是一个相对不错的方案了。不过,还是有一些不足:

    • 第一、网站的访问速度却始终不太理想,毕竟Cloudflare免费计划在墙内没有CDN节点,所有的流量都要出去绕一圈,不慢才怪。

    • 第二,网站部署在NAS上,可用性是一个大问题,NAS关机或重启,网站自然就无法访问了,这一点其实不是大问题(极少重启NAS),但是不完美不是?

    • 最后还有一点其实最让人无奈,不知道使用Cloudflare穿透的朋友有没有注意到,即使NAS、网站、网络都是正常的情况下,网站还是会时不时无法访问?其实原因很简单,Cloudflare穿透是基于UDP协议的,而墙内运营商是歧视UDP的,会对UDP进行丢包或其他限制手段,自然就会导致穿透不稳定(甚至有规律的中断),简直不要太难受!

    另寻出路

    有了以上的体验和经历,笔者一直在酝酿第二次迁移计划,但是前提是无成本(白嫖是吾之宗旨)。

    于是盯上了甲骨文的免费账户方案,这还得赖网友们的不断炫耀(特别是@天地无限和@hammer老头😂),从此笔者开始了持续大半年注册甲骨文账号之旅,不断在玄学和例行失败中挣扎。最终黄天不负白嫖人,白嫖之心终于战胜玄之又玄,还真让笔者注册成功了。

    但是,万事总有个但是!在顺利开出了两台x86之后。。。真正的目标——ARM服务器却开不出来!这1C1G的x86用来跑Wordpress+MySQL也太捉襟见肘了,于是继续蛰伏。

    也就在大概一周前,@天地无限升级账号了他的甲骨文账号,一切顺利;@hammer老头紧随其后,并且顺利开出了ARM(4C+24G不要太香),于是笔者的春天也来了。照葫芦画瓢,也将账号升级了(升级账号不需要付费,只有超出免费额度才需要花钱),也!顺利!开出了!ARM!!!

    在等待了几天后,连夜将网站迁到了这台ARM服务器上。

    迁移之旅

    说起迁移,得先说要迁移什么。笔者网站使用的是Wordpress+MySQL,域名使用Cloudflare解析不需要太多调整。那么就是迁移MySQL的数据和Wordpress的网站文件。所以接下来看笔者如何一步步操作。

    ‼️重要提示:在开始下面操作前,请先停止Wordpress程序,以免导出数据后程序继续产生新的数据,导致迁移后数据不一致。

    1️⃣ 导出Mysql数据

    笔者的MySQL也是跑在NAS上的,那么只需要从电脑上连接上数据库,使用mysqldump导出网站数据即可。

    第一步:确保电脑上已经安装了mysql-client,如果没有就安装一下:

    brew install mysql-client@8.4
    

    第二步:然后就可以使用mysqldump开始导出数据:

    /opt/homebrew/Cellar/mysql-client@8.4/8.4.2/bin/mysqldump wp --result-file=~/Desktop/wordpress/nas_mysql-2024_10_02_00_56_01-dump.sql --user=root --host=192.168.31.91 --port=3306
    

    或者也可以使用一些数据库管理工具,比如DataGrip,选中Wordpress使用的库,右键,一键导出:
    Wordpress

    导出的数据文件是一个SQL文件,里面就是各种建表和插入数据语句,请勿进行修改。

    第三步:将数据文件发送到甲骨文数据库

    这一步也可以等到后面使用宝塔面板直接上传导入。笔者这里选择使用scp命令发送,建议在发送前将sql文件压缩一下,以减小文件体积。

    scp ./nas_mysql-2024_09_28_21_38_14-dump.zip root@ip:/tmp
    

    2️⃣ 打包Wordpress文件

    笔者的Wordpress是使用Docker部署的,所以迁移也非常方便,只需要将整个网站的文件打包,然后发送到甲骨文服务器即可。

    选中html文件夹,点击压缩即可。
    Wordpress

    同样使用scp进行发送:

    scp ./wordpress.zip root@ip:/tmp
    

    3️⃣ 配置甲骨文服务器环境

    笔者选择使用宝塔面板管理Mysql和Nginx,当然这个并不重要,仅仅是因为简单,你也可以使用其他方式安装;另外,Wordpress还是使用Docker部署,这个纯粹是对Docker的偏爱。

    第一步:安装Docker,使用下面命令快速安装:

    curl -fsSL https://get.docker.com -o get-docker.sh
    

    第二步:安装宝塔面板,可在官网获取安装方法:

    https://www.bt.cn/new/download.html
    

    安装完成后,按照提示登录宝塔面板,继续按照提示安装MySQL、Nginx等软件,笔者忘记截图了,就不展示了。

    第三步:创建数据库

    安装完MySQL后,点击数据库->MySQL->添加数据库,创建一个新的数据库。

    Wordpress

    数据库名称、用户名、密码等按自己心意设置,只要跟Wordpress中保持一致即可。
    Wordpress

    4️⃣ 恢复数据和网站

    以上就把所有的该准备不该准备的都准备完了,现在可以开始关键时刻啦。

    首先,在上面创建好的数据库上面点击导入,将我们上传到甲骨文上的SQL数据导入到数据库中。

    Wordpress

    这里可以看到支持直接上传,也可以从服务器选择,我们点击从本机导入,选择我们之前上传到服务器上的SQL文件(可以解压,也可以不解压),然后静等导入完成。
    Wordpress

    第二步,启动Wordpress

    使用SSH登录系统,或者在宝塔面板的文件中操作。先在系统中创建一个数据文件夹,比如/home/data/wordpress/www,然后将之前上传到服务器上的Wordpress文件压缩包复制到这个文件夹下面,并解压出html文件夹。

    另外在/home/data/wordpress/下面新建一个compose.yml文件,将下面的内容粘贴进去:

    version: '3.9'
    services:
      wordpress:
        image: wordpress:latest
        container_name: wordpress
        restart: unless-stopped
        network_mode: bridge
        environment:
            WORDPRESS_DB_HOST: 172.17.0.1
            WORDPRESS_DB_USER: 数据库名称
            WORDPRESS_DB_PASSWORD: 数据库密码
            WORDPRESS_DB_NAME: 数据库用户名
            WORDPRESS_DEBUG: false
            PUID: 0
            PGID: 0
            UMASK: 022
            TZ: Asia/Shanghai
        ports:
          - '8888:80'
        volumes:
          - ./www/html:/var/www/html
    

    将其中的数据库名称、数据库密码、数据库用户名改为上面创建的数据库对应的即可。然后,启动Wordpress:

    docker compose up -d
    

    5️⃣ 设置反代

    在4️⃣中已经完成了网站数据的恢复和站点部署,但是网站还不能被外部访问到,这时候Nginx就派上用场了,我们需要在Nginx中对网站设置反代,以便后续的域名解析。

    回到宝塔面板,点击网站->反向代理->添加反代,新增一个反向代理:
    Wordpress

    填写网站的域名和Wordpress的地址,点击确定即可。
    Wordpress

    以上,关于网站的迁移其实已经完成了,不过还差最后一步,就是将此前使用Cloudflare穿透解析的域名修改为解析到甲骨文的IP上。

    6️⃣ 解析域名

    首先,在Cloudflare中删除穿透域名。打开Zero Trush->Networks->Tunnels,在隧道中删除此前创建的域名规则。

    Wordpress

    然后,回到CF控制台,进入域名管理界面,点击DNS菜单,添加一条解析记录,将网站解析到甲骨文的IP即可。
    Wordpress

    输入二级域名和IP地址,笔者这里同时开启了小黄云(也就是由CF提供默认的SSL证书)。
    Wordpress

    笔者这里选择使用CF的SSL证书,一方面省去了自己在宝塔面板配置SSL的过程,所有的流量由CF代理,可能会损失一些速度;另一方面就是笔者的甲骨文所在区的线路不是太好,从墙内访问的话,有些地区甚至不可达,连速度都没有。当然,这只是笔者的个人情况,你也可以直接在服务器上配置自己的SSL证书。

    总结

    以上就是笔者将博客从NAS迁移到甲骨文的全过程,总体来说还是比较顺利的,除了其间将MySQL的地址写错导致Wordpress无法连接数据库外(折腾了1个多小时才发现),再无其他问题,整个迁移过程大概持续了1小时40分钟。笔者自己体验下来,网站的打开速度明显上了一个台阶,丝滑多了。

    后续,笔者还将针对网站和数据库进行备份相关的配置,俗话说没事多折腾,折腾折腾就来事了,希望这套方案能够坚持久远吧~~

    最后,如果你正在访问笔者的网站,还请不吝键盘,将你的访问体验写在评论区,以便笔者知道如何持续改进,谢谢。

    原创不易,如果觉得此文对你有帮助,不妨点赞+收藏+关注,你的鼓励是我持续创作的动力!

    高等精灵实验室



沪ICP备19023445号-2号
友情链接