当前位置: 首页 > news >正文

将博客网站完整迁移至本地虚拟机

前言

最早支持过我网站的朋友们都知道,我的博客最初是用 WordPress 搭建的,技术方案是经典的 LAMP 架构。即便放到现在来看,第一版网站的设计依然很有美感。而且作为最热门的博客框架,WordPress 拥有大量成熟的插件,功能非常丰富。

原本我考虑采用双站并行的策略,但由于目前主要的技术栈是 Vue2 / Vue3 + SpringBoot,想要维持两个不同架构的网站同时运行,成本确实比较高。但又舍不得这份回忆,所以就想到把原来的网站迁移到虚拟机里,留作纪念和观赏。

虚拟机

镜像这里我选择采用原有的系统ubuntu22.04 Lts版本

Ubuntu 22.04.5 LTS (Jammy Jellyfish)

虚拟机软件使用VM ware17

详细流程这里不再赘述只说两个注意的点

  1. 不要使用desktop-amd64版本
  2. 安装路径不要中文

网卡配置

我这里因为网络环境经常变动的缘故所以复刻服务器双网卡策略

第一张网卡设置为仅主机模式,地址选用静态 作为服务器的管理口

第二张网卡设置为桥接模式用于共享主机网卡作为业务口使服务器通网

network:version: 2renderer: networkd ethernets:ens33:addresses:- 192.168.18.81/24	#替换成实际静态Iproutes:- to: defaultvia: 192.168.18.1 # 替换为实际网关地址nameservers:addresses: [192.168.18.81] # 替换为 DNS 服务器地址ens37:dhcp4: true 

安装 lamp 环境

这里最方便的方式还是宝塔使用命令一键安装

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

然后就和刚开始搭建网站一样.新建网站一键部署wordpess

迁移文件

  1. 打包网站备份文件
  2. 打包数据库文件

如果有宝塔面板可以直接图形化备份导出

如果没有宝塔就网页文件就tar打包后scp导出,数据库可以选择mysqldump等工具导出

在源服务器上将 WordPress 文件夹(即博客文件夹)打包为一个压缩文件

zip -r wordpress.zip /path/to/wordpress

将压缩文件通过 scp 命令拷贝到目标服务器上

scp wordpress.zip user@目的ip:/path/to/destination_folder

在目标服务器上解压缩 WordPress 文件

unzip wordpress.zip

连接到 MySQL 数据库,并创建一个新的数据库

在 WordPress 的 wp-config.php 文件中更新数据库连接信息,包括数据库名称、用户名和密码。

vim wp-config.php
define('DB_NAME', 'wordpress_database'); /* 数据库名 */
define('DB_USER', 'root');		/* 用户名 */
define('DB_PASSWORD', 'new_password');	/* 密码 */

如果有宝塔面板数据库文件等直接导入省时省事

网站适配

现在重启服务就可以通过前面我们设置过的管理口ip初步访问我们的网站了

但是这个时候因为域名url的访问方式问题肯定会造成很多问题,比如样式丢失和链接错误的问题

并且这个时候我们一般由公网服务迁移到内网肯定会造成https降到http,我们目前最急迫的需求是先让网站跑起来,所以先处理基本访问,再考虑HTTPS

这里我就拿我自己的情况https://one.helloljm.com迁移到http://192.168.18.81示例

修改host文件

为了让你自己的电脑能通过浏览器访问 http://192.168.18.81来管理和测试网站,我们需要暂时“欺骗”一下你的电脑,让它认为就是这个 IP(后续别忘了删除)。

  1. ​​找到 hosts 文件​​:
  • ​​Windows​​: C:\Windows\System32\drivers\etc\hosts
  • Mac / Linux​​: /etc/hosts
  1. ​​编辑 hosts 文件​​(需要管理员权限):
  • 用记事本(Windows)或终端(Mac/Linux)以管理员身份打开这个文件。
  • 在文件末尾添加一行:
192.168.18.81    one.helloljm.com
保存文件。
  1. ​​刷新 DNS 缓存​​:
  • Windows​​: 打开命令提示符(管理员),输入 ipconfig /flushdns

​​这样做的好处​​:你现在可以在浏览器里直接访问 http://one.helloljm.com,它就会指向你的新虚拟机

修改wordpress数据库中的网址

这个时候分两种情况,一种是还可以正常登录后台一种是无法登录后台

方法A:通过 WordPress 后台(最简单,如果还能访问旧后台的话)
  1. 访问你​​旧服务器​​上的 WordPress 后台(https://one.helloljm.com/admin)
  2. 进入 设置-> 常规。
  3. 将 ​​WordPress 地址(URL)​​ 和 ​​站点地址(URL)​​ 两个字段都修改为 http://192.168.18.81。
  4. 点击保存。
方法 B:直接修改数据库(更可靠的方法)
UPDATE wp_options SET option_value = replace(option_value, 'your_旧网站域名', 'your_新网站域名') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace(post_content, 'your_旧网站域名', 'your_新网站域名');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'your_旧网站域名', 'your_新网站域名');
UPDATE wp_comments SET comment_content = replace(comment_content , 'your_旧网站域名', 'your_新网站域名');

做到这里想必大家应该和我一样大部分样式已经恢复了,但是还是有一些地方会有瑕疵

我们采用更全面的wordpress插件数据库url替换工具

这里推荐个子比主题的插件,非常适合我们中文国人体质

WordPress一键完美换域名插件教程-数据库批量替换免费插件-WordPress主题模板-zibll子比主题

这个时候通过ctrl+F5清除缓存访问网页你就会发现,熟悉的站点已经回来了

这个时候如果还是想通过公网访问可以采用内网穿透的方式实现

如果只想要在局域网上运行通过访问我们的业务口ip已经可以正常访问到网站了

追求完美可以参考我前面的文章,添加一个内网域名解析服务器,实现域名访问

明弟有理想 | 个人网站 - 生活记录与技术分享

可能后面考虑做一个内网ssl证书和内网穿透的教程

可能等我闲的不行的时候就有动力写了

http://www.dtcms.com/a/344761.html

相关文章:

  • 爬虫基础学习-授权认证,cookie认证,异常处理
  • 最短路径问题(图论)
  • 中国SM系列密码算法的入门教程
  • 网络实践——Socket编程UDP
  • Seaborn数据可视化实战:Seaborn颜色与样式定制教程
  • elasticsearch的使用
  • odoo-065 两个视图中的action类型的button互相引用,造成死循环
  • ubuntu使用fstab挂载USB设备(移动硬盘)
  • Claude Code接入Serena mcp
  • ESP32C5,使用espidf框架配置wifi扫描时报错,为什么会提示,ghz_5_channels的参数无效呢
  • 开发避坑指南(32):FastJSON异常JSONArray cannot be cast to JSONObject解决方案
  • 什么是数据分类分级?数据分类分级技术实现路径及产品推荐
  • ​Kubernetes 详解:云原生时代的容器编排与管理
  • 08.21总结
  • 【yocto】BitBake指令汇总解析
  • 基于springboot的农产品社区配送系统
  • 线性回归的学习
  • C++ unistd.h库文件介绍(文件与目录操作, 进程管理, 系统环境访问, 底层I/O操作, 系统休眠/执行控制)
  • golang 非error错误分类
  • 【如何生成专业级 API 接口文档:从规范到实战】
  • 指针实现数组的逆序存放并输出
  • IKE 与 ISAKMP 核心笔记
  • JCTools Spmc 单生产者-多消费者的无锁并发有界队列
  • 支持轻量化部署的混元3D世界模型Lite版本上线魔乐社区,昇腾部署实践来啦
  • FCT/ATE/ICT通用测试上位机软件
  • Leetcode—595. 大的国家【简单】
  • JUC之Fork/Join
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析9
  • 2-3.Python 编码基础 - 类型检测与类型转换
  • Vue 实现可拖拽分割布局(支持左右、上下拖拽调整)