将网站定期备份到本地 ,方便本地调试 与 文件备份。
一、网站备份迁移流程:
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