WordPress:MacOS X Local Mirror
下面是我怎样在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.