一些主机间迁移 WordPress 的操作流程和注意事项。
从 FTP 遍历下载代码
递归下载根目录所有内容
1 |
wget -rm -nH ftp://user:password@example.com/ |
参数 -r 表示递归, -m 开启镜像(复制文件的元数据), -nH 表示不把文件保存到主机名对应的路径下。(不加的话,会建立一个名为 example.com 的文件夹,然后把下载的文件放到里面。)
下载某个子目录的内容
1 |
wget -rm -nH --cut-dirs=3 ftp://example.com/path/to/dir/ |
参数 --cut-dirs 表示从路径中切除前三段(本例中为 path/to/dir )。(不加的话,会严格按照服务器用户相对路径在本机建立对应文件夹。)
下载时使用绝对路径
1 |
wget -rm -nH ftp://user:password@example.com//usr/share/nginx/path/to/file/ |
多加一个 / 就可以使用绝对路径。
导出 MySQL 数据库
只需要导出在 wp-config.php 中设置的数据库即可。
命令行方式
1 |
mysqldump --databases wp_somedb --result-file=backup.sql |
GUI 方式
可以使用 Sequel Pro 等工具完成操作。
Nginx 基础配置
WordPress(无任何缓存插件) + Nginx + PHP5-FPM
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
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 跳转
1 2 3 4 |
server { server_name example.com; rewrite ^/(.*)$ http://www.example.com/$1 permanent; } |
修改文件权限
1 2 3 |
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 控制台
1 |
mysql -u root -p |
建立新数据库
1 |
CREATE DATABASE wp_somedb; |
导入备份数据
1 2 |
use wp_somedb; source path/to/backup.sql; |
建立用户并授予权限
1 2 3 |
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON wp_somedb.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES; |
修改 WordPress 配置
编辑 wp-config.php ,修改数据库配置:
1 2 3 4 |
define('DB_NAME', 'wp_somedb'); define('DB_USER', 'wp_user'); define('DB_PASSWORD', 'password'); define('DB_HOST', 'localhost'); |
保存即生效。
验证 WordPress 状态
编辑 wp-config.php ,修改 debug 配置:
1 |
define('WP_DEBUG', true); |
然后访问各页面,看是否输出错误信息。如有,检查对应的代码。最后别忘了把 debug 选项关掉。