WordPress站点迁移

访学快要结束了,在美帝这里用着学校.edu的邮箱白嫖了微软一年的Azure云,眼看就要账号就要到期了,所以需要把站点的内容的搬到另一个Linode的一个月5刀的服务器上面去,之前还担心迁移会比较麻烦,现在发现其实还是比较简单的。

现在把站点搬到Docker上面去了,接下来迁移就更简单了,只要把Docker目录打包一下,一键迁移。

大致步骤如下:

1、用All-in-One WP Migration插件备份所有数据(注意:免费版有容量限制,大概500m左右,估计大部分个人站点都不到这个数把)

2、安装Dokcer,有很多脚本可以使用,我是在本机上安装一份,在本机Docker上确认了没有问题,才Deploy到服务器上去的,另外想吐槽一下,Windows下的Docker真难用,直接搞了我Vmware都用不了,最后还是用Vmware装Ubuntu,终于勉强能用。。。(果然Windows不适合作为生产力工具来使啊)

3、部署docker-compose,直接运行,随便建个账号,然后导入数据即可,不过这里建议不要用docker的volume存储,而是直接存在目录下面,迁移的时候,连着目录打包就行。

version: '3.3'

services:
  db:
    image: mysql:5.7
    container_name: wp_mysql
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: mysqlrootpassword    # 随便起,和下面的 phpMyAdmin 中的需要一致
      MYSQL_DATABASE: wp_mysql       # 这三行设定需要和下面一致
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: mysqlpassword

  wp:
    depends_on:
      - db
    image: wordpress:latest
    container_name: wp_site
    ports:
      - "8700:80"                      # 可以根据需要改成其他端口,但下文的实例将使用1234
    restart: always
    links:
      - db:mysql
    environment:
      WORDPRESS_DB_NAME: wp_mysql
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: mysqlpassword
    volumes:
     - ./www:/var/www/html  
     - ./wplog:/var/log
  phpmyadmin:                          # 如果不需要 phpMyAdmin,可以删掉33-47行相关部分
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    links:
      - db:mysql
    restart: always
    ports:
            - "80"
    volumes:
      - /sessions
    environment:
      MYSQL_ROOT_PASSWORD: mysqlpassword

4、nginx代理设置,由于本身服务器上安装nginx,并部署了其它服务,所以需要用nginx进行反代

server {
     listen      80;
     server_name  www.xuzp.net;
     return      301 https://www.xuzp.net$request_uri;
 }
server {
         listen 443;
         listen [::]:443;
         server_name www.xuzp.net;
         ssl on;
         ssl_certificate /root/.acme.sh/xuzp.net/fullchain.cer;
         ssl_certificate_key     /root/.acme.sh/xuzp.net/xuzp.net.key;
         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 / {
             proxy_set_header Origin "";
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header Host $host;
             proxy_set_header X-Forwarded-Proto https;
             proxy_set_header X-Forwarded-Port 443;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://localhost:8700;
         }
 }

5、用代理的情况下,一般会出现css样式不能正确加载的问题,需要在wp-config.php里面加一行

if ($_SERVER['HTTP_X_SSL'] == 'on') $_SERVER['HTTPS']='on';

6、如果更换域名的话,在phpmyadmin里面修改域名

UPDATE wp_options SET option_value = replace(option_value, 'www.mydomain.com','www.newdomain.com') ;
UPDATE wp_posts SET post_content = replace(post_content, 'www.mydomain.com','www.newdomain.com') ;
UPDATE wp_comments SET comment_content = replace(comment_content, 'www.mydomain.com', 'www.newdomain.com') ;
UPDATE wp_comments SET comment_author_url = replace(comment_author_url, 'www.mydomain.com', 'www.newdomain.com') ;

7、一般迁移后,原来的插件不在了,需要重新下载一下插件。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注