wordpress-网站迁移与本地主机测试

将网站定期备份到本地 ,方便本地调试 与 文件备份。 

一、网站备份迁移流程:

1、用mysql 客户端 备份数据库,导出sql

2、删除网站自动备份文件,将网站压缩打包,从服务器下载网站备份。

3、因为本地环境是Apache + php ,网站 环境是 nginx +php,所以需要迁移。

(1)开启本地mysql,导入网站 sql 数据,数据库名和原网站相同。

(2)配置本地虚拟主机,并将网站文件存放至虚拟主机目录。

(3)调整网站环境,解决其他迁移问题。


二、配置虚拟主机

mac os x已自带了apahce,so 我们不需要单独安装apache,只需修改其中配置即可。

1、修改apache主配置文件

sudo vim /etc/apache2/httpd.conf

搜索vhost关键字,将以下两行代码前的#删除

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
  
#Include /private/etc/apache2/extra/httpd-vhosts.conf

搜索php5关键字,将以下两行代码前的#删除

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

#LoadModule php5_module libexec/apache2/libphp5.so

wq保存退出,第一步完成。

2、修改虚拟主机配置文件

sudo vim /etc/apache2/extra/httpd-vhost.conf

将以下代码贴进文件尾行,并按照注释配置相关参数

<VirtualHost *:80>
    ServerAdmin [email protected]  //主机邮箱地址
    DocumentRoot "/usr/docs/dummy-host2.example.com"  //站点根目录
    ServerName dummy-host2.example.com  //站点虚拟域名
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"  //错误日志输出
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
    <Directory "/usr/docs/dummy-host2.example.com"> //站点根目录   文件权限相关
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Require all granted
    </Directory>
</VirtualHost>

将注释中的配置项改好之后,wq保存退出。

3、修改host配置

sudo vim /etc/hosts

在文件末尾加上一行

127.0.0.1       dummy-host2.example.com  //刚配好的虚拟站点目录

保存退出。

4、将网站文件存放至虚拟主机目录,并重启服务器

sudo apachectl restart

三、调整迁移环境解决迁移问题

1、数据库密码匹配问题

为了以后的方便测试统一,将本地数据库密码与网站统一。

#### 输入密码,进入 mysql 数据库
mysql -u root -p

### 修改数据库密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

2、wordpress 中的 wp-config.php问题

(1)Apache 只能 解析 127.0.0.1  而 Nginx 可以解析 127.0.0.1 和 localhost  ,一开始这个地方填了 localhsot,导致 Apache 无法解析。

/** MySQL hostname  正确填法如下 **/

define('DB_HOST', '127.0.0.1');

(2)开启 debug 输出模式,方便查找 错误

define('WP_DEBUG', true);

(3)服务器内部错误,debug输出下发现文件夹权限问题,无法写入缓存

### 修改网站文件的权限,对指定 文件夹 文件 读写 全开放
sudo chmod -R 777 文件夹  (递归调用,使子文件 文件夹也是这个权限) 

### 对指定 文件夹 ,设置 文件 文件夹 用户组 和用户 ;就是文件所有者
sudo  chown  –R  apache:apache  文件夹  (递归调用,使子文件 文件夹也是这个权限) 

### 最后 设置好 文件权限
sudo  chmod   –R  755 文件夹  (递归调用,使子文件 文件夹也是这个权限) 
### 检查效果效果 ,可以查看文件 权限 用户组
ls  –l   文件夹 

### 移植成功后,别忘记 关闭 debug 模式:
define('WP_DEBUG', false);

3、url路径请求问题

当完成上面的操作时,我们发现 浏览器 可以访问 网站首页了,但是无法访问网站的其他子页面。都是显示  404  错误。经过查找,是路径 重写问题。

以前是nginx 服务器 现在改为 Apache ,所以 在  Permalink Settings 中,需要重新再 保存一下即可。

这样子:网站根目录下的   .htaccess 文件会添加 路径重写模块,开启路径重写功能。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

建议删除 以下原网站的 配置文件,网站运行时 会根据新服务器环境  提示重新配置。
wordfence-waf.php 【插件生成的安全模块】
.htaccess 文件 【Apache 服务器下的 网站配置文件】
.user.ini 文件 【不清楚 之前哪里来的,反正也是在里面 只调用了 wordfence-waf.php 文件】

nginx.conf 【这个是nginx 服务器下的 网站配置文件,我这边是一个 缓存插件 自动生成的】

总结参考:

解决wordpress能打开(无404),但帖子无法打开的办法是:
在固定链接本身设置为 /%postname%/,即文章名的前提下:

1、确保apache的mod_rewrite是开启了。
即httpd.conf中,取消注释,已变成:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

2、确保有权限可以重写url,即httpd.conf中的<Directory />的AllowOverride从None变成了All:

<Directory /> 
Options FollowSymLinks 
AllowOverride All 
Order deny,allow 
Deny from all 
</Directory>

备份网站是虚拟主机配置,重写权限应该是下面的 虚拟主机 配置目录的AllowOverride All

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot "/Users/cool/Sites/www.yyyyy.com"
        ServerName www.yyyyy.com
        ErrorLog "/private/var/log/apache2/testLocalSite-error_log"
        CustomLog "/private/var/log/apache2/testLocalSite-access_log" common

        <Directory "/Users/cool/Sites/www.yyyyy.com">
            AllowOverride All
            Require all granted
        </Directory>
</VirtualHost>

 

四、网站域名更改

UPDATE wp_options SET option_value = replace( option_value, 'http://www.aliyun.com', 'http://www.bieryun.com' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://www.aliyun.com', 'http://www.bieryun.com' ) ;
UPDATE wp_posts SET guid = replace( guid, 'http://www.old.com', 'http://www.new.com' ) ;

### old代表旧域名、new代表新域名,将上面的执行语句修改为自己的,然后点击执行即可!

 

 


参考:

https://www.jianshu.com/p/d09bdabbe065

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments