WordPress 整站迁移操作备忘录

一些主机间迁移 WordPress 的操作流程和注意事项。

从 FTP 遍历下载代码

递归下载根目录所有内容

wget -rm -nH ftp://user:[email protected]/

参数-r 表示递归,-m 开启镜像(复制文件的元数据),-nH 表示不把文件保存到主机名对应的路径下。(不加的话,会建立一个名为example.com 的文件夹,然后把下载的文件放到里面。)

下载某个子目录的内容

wget -rm -nH --cut-dirs=3 ftp://example.com/path/to/dir/

参数–cut-dirs 表示从路径中切除前三段(本例中为path/to/dir )。(不加的话,会严格按照服务器用户相对路径在本机建立对应文件夹。)

下载时使用绝对路径

wget -rm -nH ftp://user:[email protected]//usr/share/nginx/path/to/file/

多加一个/ 就可以使用绝对路径。


导出 MySQL 数据库

只需要导出在wp-config.php 中设置的数据库即可。

命令行方式

mysqldump --databases wp_somedb --result-file=backup.sql

GUI 方式

可以使用 Sequel Pro 等工具完成操作。


Nginx 基础配置

WordPress(无任何缓存插件) + Nginx + PHP5-FPM

server {
    listen 80;
    listen [::]:80;

    root /usr/share/nginx/example.com;
    index index.php index.html index.htm;

    server_name www.example.com;

    # WordPress single blog rules.
    # Designed to be included in any server {} block.

    # This order might seem weird - this is attempted to match last if rules below fail.
    # http://wiki.nginx.org/HttpCoreModule
    location / {
       try_files $uri $uri/ /index.php?$args;
    }

    # Add trailing slash to */wp-admin requests.
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

    # Directives to send expires headers and turn off 404 error logging.
    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
         access_log off; log_not_found off; expires max;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/wordpress;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

非 www 到 www 域名的 301 跳转

server   {
   server_name example.com;
   rewrite  ^/(.*)$  http://www.example.com/$1 permanent;
}

修改文件权限

chown -R www-data:www-data /usr/share/nginx/example.com
find /usr/share/nginx/example.com -type d -exec chmod 755 {} \;  # 把文件夹权限改为 rwxr-xr-x
find /usr/share/nginx/example.com -type f -exec chmod 644 {} \;  # 把文件权限改为 rw-r--r--

导入 MySQL 数据库

打开 MySQL 控制台

mysql -u root -p

建立新数据库

CREATE DATABASE wp_somedb;

导入备份数据

use wp_somedb;
source path/to/backup.sql;

建立用户并授予权限

CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON wp_somedb.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;

修改 WordPress 配置

编辑wp-config.php ,修改数据库配置:

define('DB_NAME', 'wp_somedb');
define('DB_USER', 'wp_user');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');

保存即生效。


验证 WordPress 状态

编辑wp-config.php ,修改 debug 配置:

define('WP_DEBUG', true);

然后访问各页面,看是否输出错误信息。如有,检查对应的代码。最后别忘了把 debug 选项关掉。


其他步骤

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据