• 系统迁移从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及以上版本
    软件包名

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


    下载地址

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


    安装命令

    1. rpm -ivh containerd.io-1.6.32-3.1.el8.x86_64.rpm
    2. rpm -ivh docker-ce-26.1.3-1.el8.x86_64.rpm
    3. 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


    安装命令

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

    四、备份恢复


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

    unzip data.zip


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

    1. chmod -R 755 /var/www/html
    2. chown -R www-data:www-data /var/www/html/


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

    五、迁移后的问题

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

    Dockerfile

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

    default.conf

    1. server {
    2. listen 80;
    3. server_name localhost;
    4. root /var/www/html;
    5. index index.php index.html index.htm index.nginx-debian.html;
    6. error_log /var/log/nginx/error.log;
    7. access_log /var/log/nginx/access.log;
    8. location / {
    9. try_files $uri $uri/ /index.php?$args;
    10. }
    11. location ~ \.php$ {
    12. fastcgi_pass 127.0.0.1:9000;
    13. fastcgi_index index.php;
    14. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    15. include fastcgi_params;
    16. }
    17. # 新增规则来保护以点号开头的隐藏文件
    18. location ~ /\. {
    19. deny all;
    20. }
    21. location ~ /\.ht {
    22. deny all;
    23. }
    24. location = /favicon.ico {
    25. log_not_found off;
    26. access_log off;
    27. }
    28. location = /robots.txt {
    29. allow all;
    30. log_not_found off;
    31. access_log off;
    32. }
    33. location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
    34. expires max;
    35. log_not_found off;
    36. access_log off;
    37. }
    38. }

    index.html

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title>Welcome to nginx!</title>
    5. <style>
    6. body {
    7. width: 35em;
    8. margin: 0 auto;
    9. font-family: Tahoma, Verdana, Arial, sans-serif;
    10. }
    11. </style>
    12. </head>
    13. <body>
    14. <h1>Welcome to nginx!</h1>
    15. <p>If you see this page, the nginx web server is successfully installed and
    16. working. Further configuration is required.</p>
    17. <p>For online documentation and support please refer to
    18. <a href="http://nginx.org/">nginx.org</a>.<br/>
    19. Commercial support is available at
    20. <a href="http://nginx.com/">nginx.com</a>.</p>
    21. <p><em>Thank you for using nginx.</em></p>
    22. </body>
    23. </html>

    run.sh

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

    src/info.php

    1. phpinfo();
    2. ?>

  • 相关阅读:
    MHA高可用配置及故障切换
    警惕.Elbie[thekeyishere@cock.li].Elbie勒索病毒,您需要知道的预防和恢复方法。
    2023年数维杯国际大学生数学建模挑战赛A题
    Numpy基础教程
    Go-Excelize API源码阅读(十二)——SetSheetVisible(sheet string, visible bool)
    uCharts常用图表组件demo
    67基于matlab图像处理,包括颜色和亮度调整、翻转功能、空间滤波和去噪、频域滤波和去噪、噪声添加,形态学操作、边缘检测及示波器集成的GUI图像处理。
    MyBatis-Plus分页查询
    onnxruntime C++推理
    go 极简后台管理-二次开发
  • 原文地址:https://blog.csdn.net/gsls200808/article/details/140240471