WordPress:MacOS X Local Mirror

来自站长百科
Xxf3325讨论 | 贡献2008年6月28日 (六) 16:08的版本
跳转至: 导航、​ 搜索

下面是我怎样在MacOS X上 为我的WordPress博客设置一个本地镜像。

动机和设想

首先,为什么要这么做?哦,我能够想到一些原因:

  • 保存一个最新的并且运转的文件备份
  • 在你将博客公之于众之前,用文件备份来测试博客上的变化。像格式,软件更新,或者其它的什么内容。
  • 非常有趣(MySQL设置除外,我们即将开始MySQL设置)

基本的方法是take a snapshot of the database and file system your hosting provider,将其下载并且在本地提取,然后再查看结果。

因此,我假定你在http://example.com (没有子目录)有一个博客。在下面的指示中,你可以用你自己的博客名来代替这个。出于怎样做的目的,我假定你以alastair登录(MacOS称这个为你的"简称")。

我还假定你正在运行MacOS X 10.3,而且希望安装最小的软件,使得过程更加简单。或者换句话说,尽可能地使用标准的OS发行版本。这样做,利用了patches和其它的更新,还有其它的好处。MacOS X10.3拥有先前安装好的Apache和PHP,我们所需要的就是MySQL和WordPress。(写好这篇文章的时候,10.3还是当前的版本,但是在10.4上这个过程是一样的,我个人对此进行检验过了)。

如果你想要升级到一个更新的PHP和MySQL,你会发现Andy Budd的指南很有用。

配置 Apache 和 PHP

首先要确定Apache和PHP都配置好了。确定Apache是在分享喜好板块上开始的:

个人网络分享

然后进入/etc/httpd/httpd.conf并且uncomment (例如开头部分的#) 下面的行:

LoadModule php4_module libexec/httpd/libphp4.so

...   
AddModule mod_php4.c

你可能要将这个像根目录一样编辑。一种方法是打开一个终端部分,并且输入sudo pico /etc/httpd/httpd.conf,但是我确定还有其它的方法。

现在,让我们来重启Apaceh… sudo apachectl graceful

…查看是否能够运行。在你的站点目录(在主目录内部)创建一个文件,命名为info.php。编辑文件,使得文件包含:

< ? php phpinfo(); ?>

然后在你的浏览器中打开http://localhost/~alastair/info.php(记住要替换你自己的名字)并且会对结果感到惊奇。你会得到PHP需要处理的所有的详细信息的列表。祝贺你,现在继续…

创建一个例子.mirror 静态网页

如果你在一个顶级级别的主机(如http://example.com而不是http://example.com/blog)上运行博客,你可能将你的内部站点链接设置使用绝对路径。事实上,我认为对于某些链接,像样式表,WordPress没有向你提供选择。

因此创建一个本地镜像的问题是,你需要为之创建一个主机名,这样不会与你在MacOS系统上运行的其它内容相冲突。如果你没有必要这样做,你只要随心所欲地跳到这个部分的末尾,只要将你的博客文件系统反映到/Library/网络服务器/文件

我们要做的是创建一个新的,伪造的主机名,并使得这个主机名在本地服务。已经采取了.本地最高级别域(用作Rendezvous),因此我们选择.mirror。本地镜像会在http://example.mirror

首先要做的是,将这个主机名添加到你的/etc/主机文件。只要添加:

127.0.0.1 example.mirror

你现在能够ping这个地址了:

alastair $ ping example.mirror

PING example.mirror (127.0.0.1): 56 data bytes  
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.159 ms  
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=5.078 ms  
^C  

--- example.mirror ping 统计数据 ---

2 packets transmitted, 2 packets received, 0% packet loss  
round-trip min/avg/max = 0.159/2.618/5.078 ms

[Aside: Bob Davis 描述了另一种,通过NetInfo 管理器执行的更好的操作。我没有测试这个,看起来是一种很好的方法,但是根据一篇Apple KB 文章,MacOS10.2以及以后的版本更乐意于编辑文章。我不知道为什么。]

现在继续,将这个作为VirtualHost添加到Apache配置。你想要做的可能是编辑/private/etc/httpd/users/alastair.conf(或者你的用户名)而不是主要的httpd.conf文件。这个minimises更改为主要的Apache配置文件和简化的更新。在任何情况下,你需要添加:

NameVirtualHost *:80

<VirtualHost *>
    DocumentRoot /Users/alastair/Sites/example.com
    ServerName example.mirror
    <Directory "/Users/alastair/Sites/example.com">
        Options FollowSymLinks
        AllowOverride All   
    </Directory>
</VirtualHost. 

这在一个特别的文件根中创建了一个新的虚拟主机。我们准备在这个目录中储存mirrored文件。

再次重新启动Apache:sudo apachectl graceful

现在是个好时机,任何人都可以将你的主机供应商的文件复制到这个本地镜像目录。你可以使用任何你喜欢的工具。如果你的供应商支持cPanel,你只能得到一个主目录文件备份,提取出相关文件(可能所有的内容都在public_html)。

我使用Interarchy,运行执行一个真正的mirror(例如,复制需要复制的文件)。如果你也使用Interarchy,请确定设置Interarchy是用作UNIX行结尾的,而不是用作Mac。

现在你应该能够看到你的博客的静态部分。WordPress自述文件能够很好地测试这一点,你可以在http://example.mirror/readme.html找到这个自述文件。如果迄今为止,一切顺利了,你应该正在阅读WordPress自述文件。

安装和配置MySQL

现在临到un-fun bit了,不管怎么说,un-fun bit是拥护我的。MacOS X有几种不同的MySQL,我尝试了其中的几个MySQL,但是MySQL AG标准发行的版本,似乎更适合我。问题是:哪个版本?答案取决于,你想要mirror哪个版本的MySQL。换句话说,你的主机供应商使用哪个版本?

一般的规则是,你可能与你的主机供应商使用同一个版本(例如x.y)。对于4.1版本以及以后发行的版本,我们会使用一个工作区更改4.1版本中引入的密码hashing算法。倒不是那个让你烦恼的。

你所要做的就是下载挑选的版本(例如4.0, 或者4.1 或者what-have you)并且将其安装。关于安装, 文章安装配置保护初始帐户的指示说明既详细又长,下面是PowerPoint幻灯片版本。

  • 为mysql软件和启动项运行installer。
  • (MacOS X 10.4.4+ 只有)更新你的/etc/my.cnf文件,指向socket的新的安全位置。请看看下面的注释。
  • sudo /Library/StartupItems/MySQLCOM/MySQLCOM start启动数据库服务器
  • cd /usr/local/mysql
  • sudo 脚本/mysql_安装_db –用户=mysql
  • bin/mysqladmin -u 根密码 一个-安全的-密码

MacOS X 10.4.4+用户需要设置MySQL服务器在一个socket上聆听而不是默认的socket。要做到这一点,就要创建一个拥有以下内容的/etc/my.cnf文件:

[mysqld]

socket=/var/mysql/mysql.sock

如果目录不存在的话,再创建一个目录: $ sudo mkdir /var/mysql

  $ sudo chown mysql /var/mysql

这是要匹配Apple的PHP安装所期望的新位置。同样,你只要为MacOS X 10.4.4+准备这个stuff。(但是在先前的版本中,这个stuff可能不会有危害)请阅读这儿得到(稍微)更多的信息。

注意,在上面最后一步中设置的根密码,不需要与我们之后使用的WordPress密码相同。事实上,如果根密码与我们之后使用的WordPress密码不同,会是一件好事。选一些你能够记住的内容作为密码。这时候,确定你能够访问数据库,因为根使用mysql工具,会是个好主意:

mysql $ bin/mysql -u root -p

输入密码: 

欢迎来到MySQL监控器。 命令行以 ; or \g结束。

Your MySQL connection id is 3 to server version: 4.1.15-standard

你的MySQL连接id是3,相对的服务器版本:4.1.15-标准

输入 'help;' 或者 '\h' 寻求帮助。输入 '\c' 清除缓冲区。

mysql>显示数据库;
+----------+
| 数据库 |
+----------+
| mysql    |
| 测试    |
+----------+
2 rows in set (0.00 sec)

mysql> \q
Bye

Mmmm, ASCII art!

核实你能够访问数据库,CocoaMySQL也是值得做的。确认你得到了MySQL安装的合适的版本(支持beta 版本中拥有的4.1+版本。

设置WordPress用户和数据库

几乎完成了!你只要为WordPress博客安装一个用户/密码和数据库,应该与你的wp-config.php文件中的设置相匹配!严格地说,不需要匹配,但是如果你想下载你的博客并且马上将博客运行,匹配信息会帮你使用同样的详细的连接信息。假定用户名是example_u,数据库称为example_db,密码是example_pw

首先连接到数据库并且为WordPress用户添加保证:

mysql $ bin/mysql -u root -p

输入密码: 
欢迎来到 MySQL监控器。  命令以 ; or \g结束。
你的 MySQL连接id 是 4 ,服务器版本是: 4.1.15-标准的

然后输入 'help;' 或者'\h' 寻求帮助。 输入 '\c' to 清除缓冲区。

mysql> grant all on example_db.* to 'example_u'@'localhost';
Query OK, 0 rows affected (0.00 sec)

如果你使用MySQL4.0而不是更高的版本,那么设置密码的过程会有所不同。如果你使用MySQL4.0,请使用:

mysql> set password for 'example_u'@'localhost' = password('example_pw');
Query OK, 0 rows affected (0.06 sec)

或者这个用于4.1+:

mysql> set password for 'example_u'@'localhost' = old_password('example_pw');
Query OK, 0 rows affected (0.05秒)

[MacOS X 10.4.4+ 更新: 我认为 密码 方法 (ie the first of the two statements above) 同样适用于MacOS X 10.4.4 及以后的版本, 虽然我自己还没有证实。]

现在创建数据库:

mysql> create database example_db;
Query OK, 1 row affected (0.00 sec)

mysql> \q

如果一切进展顺利,我们可以从主机供应商那里导入博客数据库。假定你已经下载了这个单一的压缩的数据库(例如,如cPanel支持的文件备份功能)。如果数据库dump称为example.gz,我们可能会:

alastair $ gzcat example.gz | mysql -u example_u -p example_db

输入密码: (example_pw)

这时,可能要付款使用CocaMySQL或者mysql命令工具,访问数据库,并且核实所有的内容是否都成功地导入了。如果没有成功导入,你可能在上面的命令中,得到许多错误信息。

完成

现在是关键时刻了。打开你的浏览器中的http://example.mirror。如果一切进展顺利,就应该显示你的博客了。

你可能注意到一些链接在example.com上仍然指向你的原始站点。要解决这个问题,你需要在http://example.mirror/wp-admin/options-general.php 中的WordPress总选项,中更新"Wordpress 地址" 和 "博客地址"。

使其自动化

有几种不同的方法,用博客内容自动更新本地镜像。这些方法取决于你拥有什么工具,以及你的主机供应商有什么工具。我在下面列出来了我使用的AppleScript,给你提供一些灵感。AppleScript依赖于Interarchy进行文件传输。

--自动更新WordPress一个站点的本地镜像的脚本 --

-- 由 alastair@girtby.net写的
--
-- 由Creative Commons Attribution License得到许可,
-- 请看看 http://creativecommons.org/licenses/by/2.0/

--设置这些来匹配你的wp-config.php
property u : "example_u"
property db : "example_db"
property pw : "example_pw"

-- 更新WordPress 选项来使用这个url
property newurl : "http://example.mirror"

--像这样地调用 mysql
将mysqlcmd设置为 "/usr/local/mysql/bin/mysql -u " & u & " -p" & pw & " " & db

-- 站点文件在这儿: 
将 dest 设置为 alias ((path to home folder from user domain as string) & "Sites:example.com:")

-- 从这儿下载数据库:
set tempDir to path to "temp" from user domain

tell application "Interarchy"
	-- 反映站点的静态部分
	mirrordownload dest host "ftp.example.com" path "public_html" user "example"
	
	-- 下载数据库(disable post process files preference)
	set ppf to contents of preference "PostProcessFiles"
	set contents of preference "PostProcessFiles" to "false"
	webfetch tempDir url "http://example.com:2082/getsqlbackup/wrdp1.gz" user "example"
	set contents of preference "PostProcessFiles" to ppf
end tell

将 dbfile设置为POSIX path of ((tempDir as string) & "wrdp1.gz")

-- 导入数据库
do shell script "gzcat " & dbfile & "| " & mysqlcmd

-- 清除: 移除数据库文件
do shell script "rm " & dbfile

-- 在wordpress中修复站点url和主页选项
do shell script "echo 'update wp_options set option_value = \"" & newurl & "\" where option_name = \"home\"; update wp_options set option_value = \"" & newurl & "\" where option_name = \"siteurl\";' | " & mysqlcmd

为了使得这个脚本运行,你需要在脚本编辑器中编辑脚本,并且更改不同的位置,URLs和密码。希望这些能够轻易地执行。此外,你需要向keychain添加密码,以下载你的静态站点,访问你的数据库dump,这样Interarchy能够找到这些内容。执行这一步的最好方法,是在Interarchy中交互式地访问站点并且确定在检验框中点击了"向 Keychain添加密码"。

如果你没有使用Interarchy,你仍然会发现这个脚本具有价值,因为这个脚本显示了怎样使用SQL查询,从软件程序方面,更新不同的"Wordpress 地址" 和"博客地址" 选项 。

This page is [[WordPress::Category:Stubs|marked]] as incomplete. You can help Codex by expanding it.