WordPress 备份与还原教程
本文最后更新于 222 天前,内容如有失效请评论区留言。

备份旧网站

截止 2023.7.23 旧网站已不间断运行了 508 天了

image-20230722103039035

image-20230722103149545

首先将旧网站整个目录下载下得到 lrl52.top_20230722_104208.zip,再将数据库导出得到 lrl52_top_20230722_104732.sql,之后通过这两个文件我们便可以还原整个网站。

还可以通过 All-in-one WP Migration 插件导出,得到 lrl52.top-20230722-121114-7urugo.wpress,也可以通过该插件来实现备份还原,稍后也会尝试。

新服务器配置

配置用户和登录

Ubuntu 系统如何使用 root 用户登录实例?

新服务器需要先设置 root 密码,设置后才能使用 root 用户。可以先暂时允许 root 用户登录。

sudo passwd root
sudo vim /etc/ssh/sshd_config 

PermitRootLogin 参数修改为 yes

PasswordAuthentication 参数修改为 yes

sudo service ssh restart

添加新用户,并加入 sudo 用户组(根据后面的情况来看,还是用 root 来搭网站吧,不然敲 root 累死)

adduser lrl52
adduser lrl52 sudo

将 ssh 公钥拷贝到服务器,之后就可以禁用 root 和密码登录了😈

ssh-copy-id lrl52@lrl52.top

配置基础环境

fish 开箱即用,自带历史命令补全

sudo apt update && sudo apt upgrade
sudo apt install fish neofetch

image-20230722135431321

关闭防火墙

sudo ufw status
sudo ufw disable

安装 LNMP 环境

哎,懒得用 docker 了,裸奔吧,docker 用不习惯,下次吧下次吧

安装 Nginx

sudo apt install nginx
sudo systemctl status nginx

安装 MySQL

sudo apt install mysql-server
sudo systemctl status mysql

这里实际安装的是 MySQL 8.0,后来发现占用内存有点高,尚未解决😩

对于 Ubuntu 18.04 及更高版本,在安装 MySQL 时,默认的认证方式被改变为了 auth_socket,而不是 mysql_native_password。这意味着,在安装过程中,系统不再提示你设置 root 用户的密码,且在安装完毕后,只有通过 sudo 命令的系统用户才能以 root 身份登录 MySQL。

所以,你可以使用以下命令来以 root 身份登录 MySQL:

sudo mysql -u root

如果你想要改变这个行为,并设置 root 用户的密码,可以执行以下操作:

  1. 登录 MySQL:
sudo mysql -u root
  1. 在 MySQL 命令行,更改 root 用户的认证方法并设置密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

这里 ‘your_new_password’ 替换为你想要设置的新密码。

  1. 刷新权限:
FLUSH PRIVILEGES;
  1. 退出 MySQL:
exit;

现在,你应该能够使用 root 用户和你设定的密码登录 MySQL 了:

mysql -u root -p

为 wordpres 新建一个数据库,并设置用户的账号密码

CREATE DATABASE wordpress;
CREATE USER wordpress@localhost IDENTIFIED BY '<your-password>';
GRANT ALL PRIVILEGES ON wordpress.* to wordpress@localhost;

wp-config-sample.php 复制一份为 wp-config.php,并修改数据库信息,

image-20230722174837676

安装 PHP

sudo apt install php php-fpm php-bcmath php-curl php-imagick php-intl php-json php-mbstring php-mysql php-xml php-zip
sudo systemctl status php8.1-fpm

安装 WordPress

下载并解压 wordpress

mkdir -p /var/www/lrl52.top
cd /var/www/lrl52.top
wget https://wordpress.org/latest.tar.gz
tar -xvzf latest.tar.gz

给予目录权限

sudo chown -R www-data: /var/www/lrl52.top
sudo chmod 775 -R /var/www/lrl52.top

❗❗❗ 切忌把网站目录里放在 /home/lrl52 里,因为在 Ubuntu 或者其它一些 Linux 系统中,对于 /home/<user> 这样的目录,除了 <user> 这个用户之外,其它用户默认是没有权限访问的,即使子目录或者文件的权限被设置得再开放,其它用户也无法访问。

安装了 MySQL 8.0 再 vscode 连接后,CPU 一度飙升到 100% ,死机了好几次🥵

image-20230722151150194

配置 Nginx 和安装 CA 证书

重启后发现 80 端口被占用,发现原来我竟然没有卸载系统自带的 Apache,赶紧卸载了。

sudo lsof -i :80
sudo apt remove apache2
sudo apt autoremove
sudo systemctl restart nginx

期间 nginx 出了些问题,我想重装,但在 sudo apt remove --purge nginxsudo apt auto remove 并不能完全卸载 nginx,需要

dpkg --get-selections | grep nginx

记着先停止 nginx ,如果未卸载干净,再把 nginx-commonnginx-core 一并卸载。

修改 /etc/nginx/nginx.conf ,(完整配置下面有)

sudo vim /etc/nginx/nginx.conf
sudo nginx -t
sudo nginx -s reload

如果看到下面的界面,就成功啦,接下来我们安装 CA 证书

image-20230722174540394

https://freessl.cn/上,可以一次性申请一年的免费证书,Nice😎。验证 CNAME 后会把证书导入 KeyManger,再通过 KeyMananger 导出证书文件。

image-20230722180133629

完整 Nginx 配置文件如下(已带 SSL),

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
    sendfile on;
    keepalive_timeout 65;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/www/access.log;
    error_log /var/www/error.log;

    server {
        listen 80;
        server_name lrl52.top www.lrl52.top;
        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl;

        root /var/www/test2;
        index  index.php index.html index.htm;
        server_name  lrl52.top www.lrl52.top;

        client_max_body_size 500M;

        ssl_certificate     /var/www/lrl52.top_chain.crt;  # pem文件的路径
        ssl_certificate_key  /var/www/lrl52.top_key.key; # key文件的路径

        # ssl验证相关配置
        ssl_session_timeout  5m;    #缓存有效期
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
        ssl_prefer_server_ciphers on;   #使用服务器端的首选算法

        location / {
            try_files $uri $uri/ /index.php?$args;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            error_log /dev/null;
            access_log /dev/null;
        }

        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
}

之后就可以看到如下界面

image-20230722183518112

还原网站

在这之前还需要修改下 PHP 允许上传文件的最大大小,默认只有 2MB,不然无法上传主题等

sudo vim /etc/php/8.1/fpm/php.ini

image-20230722185524025

image-20230722185535430

nginx 允许上传的最大大小在 client_max_body_size 500M; 处配置

借助 All-in-on WP Migration 插件

all-in-one 100GB 版本

为避免冲突,首先将所有内容清空

image-20230722183752816

image-20230722184108111

导入后网站又恢复了和之前相同的界面,但是无法显示文章目录的 BUG 还是没有修复😫

手动迁移

创建一个新的 MySQL 数据库,并导入你的 SQL 备份文件:

mysql -u root -p
CREATE DATABASE your_database;
EXIT;
mysql -u root -p your_database < /path/to/your/wordpress.sql

修改 wp-config.php,同上

根据需要,将 wp-content 目录中的文件复制解压到新的 wordpress 中即可。如果没问题可以直接全部拷贝过来,我这里由于原来文件有问题,只拷贝了媒体库的文件(uploads)和部分插件(plugins)

sudo unzip ~/uploads.zip -d /var/www/test2/wp-content/uploads/
sudo unzip ~/plugins.zip -d /var/www/test2/wp-content/plugins/

这样就 OK 了

后续美化待更

总结

  • 如果原版本没有问题,想原封不动直接迁移,可以考虑使用 All-in-one WP Migration,YouTube 或 GitHub 上能找到破解版
  • 如果想升级重装,也很简单,wordpress 的主题、插件和媒体库都是放在 wp-content 文件夹中的,而文章内容、网站数据(包括插件的数据)都是放在数据库中的,你甚至可以只恢复数据库内容,插件和主题重新手动安装,插件数据依然可以找到

References

Ubuntu 系统如何使用 root 用户登录实例?

随机密码生成器

GoDaddy 手动迁移 WordPress 网站

How to MANUALLY Migrate Your WordPress Site (still works in 2023)

How To Migrate Your WordPress Website For Free

All-in-one WP Migration 32GB Version

How to install and configure WordPress with NGINX

Ubuntu Install and configure wordpress

Install WordPress on Ubuntu 22.04

WordPress 官方手册(感觉写得很烂)

Freessl.cn

argon-theme

Argon Theme Docs

YouTube Matt – WPress Doctor

ACME v2证书自动化快速入门

phpMyAdmin Docs

Ubuntu 彻底删除 nginx

Docker系列 WordPress系列 特效

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇