系统迁移从CentOS7.9到Rocky8.9

我有两台阿里云上的服务器是CentOS7.9,由于CentOS7已经停止支持,后续使用的话会有安全漏洞,所以需要尽快迁移,个人使用的话目前兼容性好的还是RockyLinux8,很多脚本改改就能用了。

一、盘点系统和迁移应用


查看当前系统发行版版本

cat /etc/os-release

盘点迁移清单

服务器

应用

部署方式

docker镜像来源

v1

wordpress

docker

dockerhub

v1

zdir

docker

dockerhub

v1

nps

docker

dockerhub

v1

nginx

docker

dockerhub

v1

定时任务

crontab

-

v2

小程序后端

docker

私有仓库

v2

epg后端

docker

私有仓库

v2

nest后端

docker

私有仓库

v2

php后端

docker

私有仓库

v2

Docusaurus文档

nginx静态目录

-

二、迁移前数据备份


docker 映射目录备份

zip -r abc.zip abc


crontab定时任务备份

crontab -l >>cron.txt


docker镜像备份

docker save > nginx.tar nginx:latest 


静态目录

zip -r webroot.zip webroot

三、迁移前安装包准备


docker和docker-compose离线安装包准备
由于docker.com从2023.5月开始无法访问,dockerhub国内镜像从2024.6开始无法访问,建议先下载好这两个离线安装包。
docker安装包
建议安装docker20及以上版本
软件包名

containerd.io-1.6.32-3.1.el8.x86_64.rpm
docker-buildx-plugin-0.14.0-1.el8.x86_64.rpm
docker-ce-26.1.3-1.el8.x86_64.rpm
docker-ce-cli-26.1.3-1.el8.x86_64.rpm
docker-ce-rootless-extras-26.1.3-1.el8.x86_64.rpm
docker-compose-plugin-2.6.0-3.el8.x86_64.rpm
docker-scan-plugin-0.9.0-3.el8.x86_64.rpm


下载地址

https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.6.32-3.1.el8.x86_64.rpm
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-buildx-plugin-0.14.0-1.el8.x86_64.rpm
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-scan-plugin-0.9.0-3.el8.x86_64.rpm
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-compose-plugin-2.6.0-3.el8.x86_64.rpm
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-ce-rootless-extras-26.1.3-1.el8.x86_64.rpm
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-ce-cli-26.1.3-1.el8.x86_64.rpm
https://download.docker.com/linux/centos/8/x86_64/stable/Packages/docker-ce-26.1.3-1.el8.x86_64.rpm


安装命令

rpm -ivh containerd.io-1.6.32-3.1.el8.x86_64.rpm
rpm -ivh docker-ce-26.1.3-1.el8.x86_64.rpm
rpm -ivh docker-ce-cli-26.1.3-1.el8.x86_64.rpm


大部分情况只需要安装上面这三个其他rpm包按需安装。

docker-compose安装包
软件包名

docker-compose-linux-x86_64


下载地址

https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-x86_64


安装命令

cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

四、备份恢复


重装系统后先将离线安装包进行安装
然后将备份的数据恢复到对应目录

unzip data.zip


对于部分目录可能需要处理权限问题(没错,说的就是wordpress)
临时解决先用(docker 终端使用)

chmod -R 755 /var/www/html
chown -R www-data:www-data /var/www/html/


后续迁移还是tar.gz包吧,至少权限不会丢,zip经常丢权限,755这个可能不需要执行。

五、迁移后的问题

目前迁移后的wordpress总是挂掉,然后带着服务器一起挂掉,排查之后发现是官方wordpress使用了apache的问题。所以花了点时间打了个nginx版本的镜像。这个镜像不含推荐组件里的webpack,其他组件都包含

Dockerfile

# 更改基础镜像为PHP 8.x FPM Alpine
FROM php:8-fpm-alpine# 更新并安装PHP依赖,注意检查扩展与PHP 8.x的兼容性
RUN apk update && \apk add zlib-dev libpng-dev jpeg-dev expat-dev libzip-dev icu-libs icu-dev && \apk add m4 autoconf make gcc g++ linux-headers && \docker-php-ext-install pdo_mysql opcache mysqli && \docker-php-ext-install gd && \docker-php-ext-install exif zip intl && \apk del m4 autoconf make gcc g++ linux-headers# 安装nginx依赖
RUN apk add nginx && \if [ ! -d "/run/nginx" ]; then mkdir /run/nginx; fi && \touch /run/nginx/nginx.pid# nginx配置文件和初始静态文件
ADD default.conf /etc/nginx/http.d/default.conf
ADD index.html /var/www/html/index.html# 安装wget unzip tar 后续下载wordpress使用
RUN apk add --no-cache wget unzip tar
# 下载并解压 WordPress
RUN wget https://wordpress.org/latest.tar.gz -O /tmp/wordpress.tar.gz && \tar zxvf /tmp/wordpress.tar.gz -C /tmp/ && \mv /tmp/wordpress/* /var/www/html && \rm /tmp/wordpress.tar.gz# 拷贝源代码到容器内
COPY src /var/www/html/# 更改/var/www/html目录的所有权
RUN apk add coreutils  && \chown -R www-data:www-data /var/www/html# 添加自定义脚本
ADD run.sh /
RUN chmod 755 /run.sh# 暴露端口
EXPOSE 80
EXPOSE 9000# 入口点设置为自定义脚本
ENTRYPOINT ["/run.sh"]

default.conf

server {listen 80;server_name localhost;root /var/www/html;index index.php index.html index.htm index.nginx-debian.html;error_log  /var/log/nginx/error.log;access_log /var/log/nginx/access.log;location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}# 新增规则来保护以点号开头的隐藏文件location ~ /\. {deny all;}location ~ /\.ht {deny all;}location = /favicon.ico {log_not_found off;access_log off;}location = /robots.txt {allow all;log_not_found off;access_log off;}location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {expires max;log_not_found off;access_log off;}
}

index.html

<!DOCTYPE html>
<html>
<head><title>Welcome to nginx!</title><style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/">nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

run.sh

#!/bin/sh# 后台启动
php-fpm -D
# 关闭后台启动,hold住进程
nginx -g 'daemon off;'

src/info.php

<?phpphpinfo();
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI在软件开发中的革新与未来挑战

目录 前言 AI工具的广泛应用与优势 AI与开发者技能需求的互动关系 AI的未来展望与面临的挑战 结语 前言 在当今快速发展的技术领域中&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正以前所未有的方式改变着软件开发的面貌。从代码生成到错误检测&#xff0c;再…

linux内核源码学习所需基础

1.面向对象的思想&#xff0c;尤其是oopc的实现方式。 2.设计模式。 这两点需要内核源码学习者不仅要会c和汇编&#xff0c;还要接触一门面向对象的语言&#xff0c;比如c&#xff0b;&#xff0b;/java/python等等任意一门都行&#xff0c;起码要了解面向对象的思想。 另外li…

MyBatis 框架核心及面试知识要点

1、什么是 MyBatis? MyBatis 是一款优秀的支持自定义 SQL 查询、存储过程和高级映射的持久层框架&#xff0c;消除了 几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索 。 MyBatis 可以使用 XML,或注解进 行配置和映射&#xff0c;MyBatis 通过将参数映射到配置的 SOL,形…

FastSpeech2中文语音合成就步解析:TTS数据训练实战篇

参考github网址&#xff1a; GitHub - roedoejet/FastSpeech2: An implementation of Microsoft’s “FastSpeech 2: Fast and High-Quality End-to-End Text to Speech” 数据训练所用python 命令&#xff1a; python3 train.py -p config/AISHELL3/preprocess.yaml -m confi…

ida动态调试-cnblog

ida动态调试 传递启动ida服务 android_server在ida\dbgsrv目录中 adb push android_server /data/local/tmp/chmod 755 /data/local/tmp/android_server /data/local/tmp/android_serveradb forward tcp:23946 tcp:23946ida报错:大多是手机端口被占用 报错提示&#xff1a; …

java面试-java基础(下)

文章目录 一、和equals区别&#xff1f;二、hashcode方法作用&#xff1f;两个对象的hashCode方法相同&#xff0c;则equals方法也一定为true吗&#xff1f;三、为什么重写equals方法就一定要重写hashCode方法&#xff1f;四、Java中的参数传递时传值呢还是传引用&#xff1f;五…

期末上分站——计组(3)

复习题21-42 21、指令周期是指__C_。 A. CPU从主存取出一条指令的时间 B. CPU执行一条指令的时间 C. CPU从主存取出一条指令的时间加上执行这条指令的时间。 D. 时钟周期时间 22、微型机系统中外设通过适配器与主板的系统总线相连接&#xff0c;其功能是__D_。 A. 数据缓冲和…

数据库可视化管理工具dbeaver试用及问题处理。

本文记录了在内网离线安装数据库可视化管理工具dbeaver的过程和相关问题处理方法。 一、下载dbeaver https://dbeaver.io/download/ 笔者测试时Windows平台最新版本为&#xff1a;dbeaver-ce-24.1.1-x86_64-setup.exe 二、安装方法 一路“下一步”即可 三、问题处理 1、问…

【深度学习】vscode 命令行下的debug

其实我一直知道vscode可以再命令行下进行debug。 比如 python aaa.py --bb1 --cc2 以前的做法是 去aaa.py 写死bb和cc 然后直接debug。 直到今天我遇到这个&#xff1a; hydra hydra.main(version_baseNone, config_name/home/justin/Desktop/code/python_project/WASB-SBDT-m…

Truffle学习笔记

Truffle学习笔记 安装truffle, 注意: 虽然目前truffle最新版是 5.0.0, 但是经过我实践之后, 返现和v4有很多不同(比如: web3.eth.accounts; 都获取不到账户), 还是那句话: “nodejs模块的版本问题会搞死人的 !” 目前4.1.15之前的版本都不能用了, 只能安装v4.1.15 npm instal…

新手学Cocos报错 [Assets] Failed to open

两个都在偏好设置里面调&#xff08;文件下面的偏好设置&#xff09;&#xff1a; 1.设置中文&#xff1f; 2.报错 [Assets] Failed to open&#xff1f; 这样在点击打开ts文件的时候就不会报错&#xff0c;并且用vscode编辑器打开了&#xff0c; 同样也可以改成你们自己喜欢…

LabVIEW在图像处理中的应用

abVIEW作为一种图形化编程环境&#xff0c;不仅在数据采集和仪器控制领域表现出色&#xff0c;还在图像处理方面具有强大的功能。借助其Vision Development Module&#xff0c;LabVIEW提供了丰富的图像处理工具&#xff0c;广泛应用于工业检测、医学影像、自动化控制等多个领域…

Apache Seata应用侧启动过程剖析——RM TM如何与TC建立连接

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata应用侧启动过程剖析——RM & TM如何与TC建立连接 前言 看过官网 README 的第…

Android最近任务显示的图片

Android最近任务显示的图片 1、TaskSnapshot截图1.1 snapshotTask1.2 drawAppThemeSnapshot 2、导航栏显示问题3、Recentan按键进入最近任务 1、TaskSnapshot截图 frameworks/base/services/core/java/com/android/server/wm/TaskSnapshotController.java frameworks/base/cor…

IPython 性能评估工具的较量:%%timeit 与 %timeit 的差异解析

IPython 性能评估工具的较量&#xff1a;%%timeit 与 %timeit 的差异解析 在 IPython 的世界中&#xff0c;性能评估是一项至关重要的任务。%%timeit 和 %timeit 是两个用于测量代码执行时间的魔术命令&#xff0c;但它们之间存在一些关键的差异。本文将深入探讨这两个命令的不…

2786. 访问数组中的位置使分数最大

2786. 访问数组中的位置使分数最大 题目链接&#xff1a;2786. 访问数组中的位置使分数最大 代码如下&#xff1a; //参考链接:https://leetcode.cn/problems/visit-array-positions-to-maximize-score/solutions/2810335/dp-by-kkkk-16-tn9f class Solution { public:long …

vue-router 4汇总

一、vue和vue-router版本&#xff1a; "vue": "^3.4.29", "vue-router": "^4.4.0" 二、路由传参&#xff1a; 方式一&#xff1a; 路由配置&#xff1a;/src/router/index.ts import {createRouter,createWebHistory } from &quo…

探索 WebKit 的缓存迷宫:深入理解其高效缓存机制

探索 WebKit 的缓存迷宫&#xff1a;深入理解其高效缓存机制 在当今快速变化的网络世界中&#xff0c;WebKit 作为领先的浏览器引擎之一&#xff0c;其缓存机制对于提升网页加载速度、减少服务器负载以及改善用户体验起着至关重要的作用。本文将深入探讨 WebKit 的缓存机制&am…

代码随想录leetcode200题之额外题目

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题之额外题目相关题目。 2 训练 题目1&#xff1a;1365. 有多少小于当前数字的数字 解题思路&#xff1a;二分查找。 C代码如下&#xff0c; class Solution { public:vector<int> smallerNumb…

卷积神经网络(CNN)和循环神经网络(RNN) 的区别与联系

卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;是两种广泛应用于深度学习的神经网络架构&#xff0c;它们在设计理念和应用领域上有显著区别&#xff0c;但也存在一些联系。 ### 卷积神经网络&#xff08;CNN&#xff09; #### 主要特点…