WordPress: MacOS X Local Mirror:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
下面是我怎样在MacOS X上 为我的WordPress博客设置一个本地镜像。 | 下面是我怎样在MacOS X上 为我的WordPress博客设置一个本地镜像。 | ||
==动机和设想== | ==动机和设想== | ||
首先,为什么要这么做?哦,我能够想到一些原因: | 首先,为什么要这么做?哦,我能够想到一些原因: | ||
*保存一个最新的并且<em>运转的</em>文件备份 | *保存一个最新的并且<em>运转的</em>文件备份 | ||
*在你将博客公之于众之前,用文件备份来测试博客上的变化。像格式,软件更新,或者其它的什么内容。 | *在你将博客公之于众之前,用文件备份来测试博客上的变化。像格式,软件更新,或者其它的什么内容。 | ||
*非常有趣(MySQL设置除外,我们即将开始MySQL设置) | *非常有趣(MySQL设置除外,我们即将开始MySQL设置) | ||
基本的方法是take a snapshot of the database and file system your hosting provider,将其下载并且在本地提取,然后再查看结果。 | 基本的方法是take a snapshot of the database and file system your hosting provider,将其下载并且在本地提取,然后再查看结果。 | ||
因此,我假定你在http://example.com (没有子目录)有一个博客。在下面的指示中,你可以用你自己的博客名来代替这个。出于怎样做的目的,我假定你以<code>alastair</code>登录(MacOS称这个为你的"简称")。 | 因此,我假定你在http://example.com (没有子目录)有一个博客。在下面的指示中,你可以用你自己的博客名来代替这个。出于怎样做的目的,我假定你以<code>alastair</code>登录(MacOS称这个为你的"简称")。 | ||
我还假定你正在运行MacOS X 10.3,而且希望安装最小的软件,使得过程更加简单。或者换句话说,尽可能地使用标准的OS发行版本。这样做,利用了patches和其它的更新,还有其它的好处。MacOS X10.3拥有先前安装好的Apache和PHP,我们所需要的就是MySQL和WordPress。(写好这篇文章的时候,10.3还是当前的版本,但是在10.4上这个过程是一样的,我个人对此进行检验过了)。 | 我还假定你正在运行MacOS X 10.3,而且希望安装最小的软件,使得过程更加简单。或者换句话说,尽可能地使用标准的OS发行版本。这样做,利用了patches和其它的更新,还有其它的好处。MacOS X10.3拥有先前安装好的Apache和PHP,我们所需要的就是MySQL和WordPress。(写好这篇文章的时候,10.3还是当前的版本,但是在10.4上这个过程是一样的,我个人对此进行检验过了)。 | ||
如果你想要升级到一个更新的PHP和MySQL,你会发现[http://www.andybudd.com/archives/2005/02/the_no_hassle_guide_to_installing_php_and_mysql_on_os_x_103/index.php Andy Budd的指南]很有用。 | 如果你想要升级到一个更新的PHP和MySQL,你会发现[http://www.andybudd.com/archives/2005/02/the_no_hassle_guide_to_installing_php_and_mysql_on_os_x_103/index.php Andy Budd的指南]很有用。 | ||
== 配置 Apache 和 PHP == | == 配置 Apache 和 PHP == | ||
首先要确定Apache和PHP都配置好了。确定Apache是在分享喜好板块上开始的: | 首先要确定Apache和PHP都配置好了。确定Apache是在分享喜好板块上开始的: | ||
[[WordPress:Image:pws-capture.png|个人网络分享]] | [[WordPress:Image:pws-capture.png|个人网络分享]] | ||
然后进入<code>/etc/httpd/httpd.conf</code>并且uncomment (例如开头部分的#) 下面的行: | 然后进入<code>/etc/httpd/httpd.conf</code>并且uncomment (例如开头部分的#) 下面的行: | ||
LoadModule php4_module libexec/httpd/libphp4.so | LoadModule php4_module libexec/httpd/libphp4.so | ||
... | ... | ||
AddModule mod_php4.c | AddModule mod_php4.c | ||
你可能要将这个像根目录一样编辑。一种方法是打开一个终端部分,并且输入<code>sudo pico /etc/httpd/httpd.conf</code>,但是我确定还有其它的方法。 | 你可能要将这个像根目录一样编辑。一种方法是打开一个终端部分,并且输入<code>sudo pico /etc/httpd/httpd.conf</code>,但是我确定还有其它的方法。 | ||
现在,让我们来重启Apaceh… | 现在,让我们来重启Apaceh… | ||
sudo apachectl graceful | sudo apachectl graceful | ||
…查看是否能够运行。在你的站点目录(在主目录内部)创建一个文件,命名为<code>info.php</code>。编辑文件,使得文件包含: | …查看是否能够运行。在你的站点目录(在主目录内部)创建一个文件,命名为<code>info.php</code>。编辑文件,使得文件包含: | ||
< ? php phpinfo(); ?> | < ? php phpinfo(); ?> | ||
然后在你的浏览器中打开http://localhost/~alastair/info.php(记住要替换你自己的名字)并且会对结果感到惊奇。你会得到PHP需要处理的所有的详细信息的列表。祝贺你,现在继续… | 然后在你的浏览器中打开http://localhost/~alastair/info.php(记住要替换你自己的名字)并且会对结果感到惊奇。你会得到PHP需要处理的所有的详细信息的列表。祝贺你,现在继续… | ||
== 创建一个例子.mirror 静态网页 == | == 创建一个例子.mirror 静态网页 == | ||
如果你在一个顶级级别的主机(如http://example.com而不是http://example.com/blog)上运行博客,你可能将你的内部站点链接设置使用绝对路径。事实上,我认为对于某些链接,像样式表,WordPress没有向你提供选择。 | 如果你在一个顶级级别的主机(如http://example.com而不是http://example.com/blog)上运行博客,你可能将你的内部站点链接设置使用绝对路径。事实上,我认为对于某些链接,像样式表,WordPress没有向你提供选择。 | ||
因此创建一个本地镜像的问题是,你需要为之创建一个主机名,这样不会与你在MacOS系统上运行的其它内容相冲突。如果你没有必要这样做,你只要随心所欲地跳到这个部分的末尾,只要将你的博客文件系统反映到<code>/Library/网络服务器/文件</code>。 | 因此创建一个本地镜像的问题是,你需要为之创建一个主机名,这样不会与你在MacOS系统上运行的其它内容相冲突。如果你没有必要这样做,你只要随心所欲地跳到这个部分的末尾,只要将你的博客文件系统反映到<code>/Library/网络服务器/文件</code>。 | ||
我们要做的是创建一个新的,伪造的主机名,并使得这个主机名在本地服务。已经采取了.本地最高级别域(用作Rendezvous),因此我们选择.mirror。本地镜像会在http://example.mirror | 我们要做的是创建一个新的,伪造的主机名,并使得这个主机名在本地服务。已经采取了.本地最高级别域(用作Rendezvous),因此我们选择.mirror。本地镜像会在http://example.mirror | ||
首先要做的是,将这个主机名添加到你的<code>/etc/主机</code>文件。只要添加: | 首先要做的是,将这个主机名添加到你的<code>/etc/主机</code>文件。只要添加: | ||
127.0.0.1 example.mirror | 127.0.0.1 example.mirror | ||
你现在能够ping这个地址了: | 你现在能够ping这个地址了: | ||
alastair $ ping example.mirror | alastair $ ping example.mirror | ||
第129行: | 第60行: | ||
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=5.078 ms | 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=5.078 ms | ||
^C | ^C | ||
--- example.mirror ping 统计数据 --- | --- example.mirror ping 统计数据 --- | ||
第138行: | 第65行: | ||
2 packets transmitted, 2 packets received, 0% packet loss | 2 packets transmitted, 2 packets received, 0% packet loss | ||
round-trip min/avg/max = 0.159/2.618/5.078 ms | round-trip min/avg/max = 0.159/2.618/5.078 ms | ||
[Aside: [http://www.evolt.org/MacOSX_vhosts/ Bob Davis 描述了]另一种,通过NetInfo 管理器执行的更好的操作。我没有测试这个,看起来是一种很好的方法,但是根据一篇[http://docs.info.apple.com/article.html?artnum=88158 Apple KB 文章],MacOS10.2以及以后的版本更乐意于编辑文章。我不知道为什么。] | [Aside: [http://www.evolt.org/MacOSX_vhosts/ Bob Davis 描述了]另一种,通过NetInfo 管理器执行的更好的操作。我没有测试这个,看起来是一种很好的方法,但是根据一篇[http://docs.info.apple.com/article.html?artnum=88158 Apple KB 文章],MacOS10.2以及以后的版本更乐意于编辑文章。我不知道为什么。] | ||
现在继续,将这个作为VirtualHost添加到Apache配置。你想要做的可能是编辑<code>/private/etc/httpd/users/alastair.conf</code>(或者你的用户名)而不是主要的<code>httpd.conf</code>文件。这个minimises更改为主要的Apache配置文件和简化的更新。在任何情况下,你需要添加: | 现在继续,将这个作为VirtualHost添加到Apache配置。你想要做的可能是编辑<code>/private/etc/httpd/users/alastair.conf</code>(或者你的用户名)而不是主要的<code>httpd.conf</code>文件。这个minimises更改为主要的Apache配置文件和简化的更新。在任何情况下,你需要添加: | ||
NameVirtualHost *:80 | NameVirtualHost *:80 | ||
第170行: | 第78行: | ||
AllowOverride All | AllowOverride All | ||
</Directory> | </Directory> | ||
</VirtualHost | </VirtualHost. | ||
这在一个特别的文件根中创建了一个新的虚拟主机。我们准备在这个目录中储存mirrored文件。 | 这在一个特别的文件根中创建了一个新的虚拟主机。我们准备在这个目录中储存mirrored文件。 | ||
再次重新启动Apache:<code>sudo apachectl graceful</code> | 再次重新启动Apache:<code>sudo apachectl graceful</code> | ||
现在是个好时机,任何人都可以将你的主机供应商的文件复制到这个本地镜像目录。你可以使用任何你喜欢的工具。如果你的供应商支持cPanel,你只能得到一个主目录文件备份,提取出相关文件(可能所有的内容都在<code>public_html</code>)。 | 现在是个好时机,任何人都可以将你的主机供应商的文件复制到这个本地镜像目录。你可以使用任何你喜欢的工具。如果你的供应商支持cPanel,你只能得到一个主目录文件备份,提取出相关文件(可能所有的内容都在<code>public_html</code>)。 | ||
我使用[http://www.interarchy.com Interarchy],运行执行一个真正的mirror(例如,复制需要复制的文件)。如果你也使用Interarchy,请确定设置Interarchy是用作UNIX行结尾的,而不是用作Mac。 | 我使用[http://www.interarchy.com Interarchy],运行执行一个真正的mirror(例如,复制需要复制的文件)。如果你也使用Interarchy,请确定设置Interarchy是用作UNIX行结尾的,而不是用作Mac。 | ||
现在你应该能够看到你的博客的静态部分。WordPress自述文件能够很好地测试这一点,你可以在http://example.mirror/readme.html找到这个自述文件。如果迄今为止,一切顺利了,你应该正在阅读WordPress自述文件。 | 现在你应该能够看到你的博客的静态部分。WordPress自述文件能够很好地测试这一点,你可以在http://example.mirror/readme.html找到这个自述文件。如果迄今为止,一切顺利了,你应该正在阅读WordPress自述文件。 | ||
== 安装和配置MySQL == | == 安装和配置MySQL == | ||
现在临到un-fun bit了,不管怎么说,un-fun bit是拥护我的。MacOS X有几种不同的MySQL,我尝试了其中的几个MySQL,但是MySQL AG标准发行的版本,似乎更适合我。问题是:哪个版本?答案取决于,你想要mirror哪个版本的MySQL。换句话说,你的主机供应商使用哪个版本? | 现在临到un-fun bit了,不管怎么说,un-fun bit是拥护我的。MacOS X有几种不同的MySQL,我尝试了其中的几个MySQL,但是MySQL AG标准发行的版本,似乎更适合我。问题是:哪个版本?答案取决于,你想要mirror哪个版本的MySQL。换句话说,你的主机供应商使用哪个版本? | ||
一般的规则是,你可能与你的主机供应商使用同一个版本(例如x.y)。对于4.1版本以及以后发行的版本,我们会使用一个[http://dev.mysql.com/doc/refman/4.1/en/old-client.html 工作区]更改4.1版本中引入的密码hashing算法。倒不是那个让你烦恼的。 | 一般的规则是,你可能与你的主机供应商使用同一个版本(例如x.y)。对于4.1版本以及以后发行的版本,我们会使用一个[http://dev.mysql.com/doc/refman/4.1/en/old-client.html 工作区]更改4.1版本中引入的密码hashing算法。倒不是那个让你烦恼的。 | ||
你所要做的就是下载挑选的版本(例如[http://dev.mysql.com/downloads/mysql/4.0.html 4.0], 或者[http://dev.mysql.com/downloads/mysql/4.1.html 4.1] 或者[http://dev.mysql.com/downloads/ what-have you])并且将其安装。关于[http://dev.mysql.com/doc/refman/4.1/en/mac-os-x-installation.html 安装], [http://dev.mysql.com/doc/refman/4.1/en/unix-post-installation.html 文章安装配置] 和[http://dev.mysql.com/doc/refman/4.1/en/default-privileges.html 保护初始帐户]的指示说明既详细又长,下面是PowerPoint幻灯片版本。 | |||
你所要做的就是下载挑选的版本(例如[http://dev.mysql.com/downloads/mysql/4.0.html 4.0], 或者[http://dev.mysql.com/downloads/mysql/4.1.html 4.1] 或者[http://dev.mysql.com/downloads/ what-have you])并且将其安装。关于[http://dev.mysql.com/doc/refman/4.1/en/mac-os-x-installation.html 安装], [http://dev.mysql.com/doc/refman/4.1/en/unix-post-installation.html 文章安装配置] 和[http://dev.mysql.com/doc/refman/4.1/en/default-privileges.html 保护初始帐户] | |||
*为mysql软件和启动项运行installer。 | *为mysql软件和启动项运行installer。 | ||
* (MacOS X 10.4.4+ <em>只有</em>)更新你的<code>/etc/my.cnf</code>文件,指向socket的新的安全位置。请看看下面的注释。 | * (MacOS X 10.4.4+ <em>只有</em>)更新你的<code>/etc/my.cnf</code>文件,指向socket的新的安全位置。请看看下面的注释。 | ||
*用<code>sudo /Library/StartupItems/MySQLCOM/MySQLCOM start</code>启动数据库服务器 | *用<code>sudo /Library/StartupItems/MySQLCOM/MySQLCOM start</code>启动数据库服务器 | ||
* <code>cd /usr/local/mysql</code> | * <code>cd /usr/local/mysql</code> | ||
* <code>sudo 脚本/mysql_安装_db –用户=mysql</code> | * <code>sudo 脚本/mysql_安装_db –用户=mysql</code> | ||
* <code>bin/mysqladmin -u 根密码</code> <em>一个-安全的-密码</em> | * <code>bin/mysqladmin -u 根密码</code> <em>一个-安全的-密码</em> | ||
MacOS X 10.4.4+用户需要设置MySQL服务器在一个socket上聆听而不是默认的socket。要做到这一点,就要创建一个拥有以下内容的<code>/etc/my.cnf</code>文件: | MacOS X 10.4.4+用户需要设置MySQL服务器在一个socket上聆听而不是默认的socket。要做到这一点,就要创建一个拥有以下内容的<code>/etc/my.cnf</code>文件: | ||
[mysqld] | [mysqld] | ||
socket=/var/mysql/mysql.sock | socket=/var/mysql/mysql.sock | ||
如果目录不存在的话,再创建一个目录: | 如果目录不存在的话,再创建一个目录: | ||
$ sudo mkdir /var/mysql | $ sudo mkdir /var/mysql | ||
$ sudo chown mysql /var/mysql | $ sudo chown mysql /var/mysql | ||
这是要匹配Apple的PHP安装所期望的新位置。同样,你只要为MacOS X 10.4.4+准备这个stuff。(但是在先前的版本中,这个stuff可能不会有危害)请阅读[http://docs.info.apple.com/article.html?artnum=302977 这儿]得到(稍微)更多的信息。 | 这是要匹配Apple的PHP安装所期望的新位置。同样,你只要为MacOS X 10.4.4+准备这个stuff。(但是在先前的版本中,这个stuff可能不会有危害)请阅读[http://docs.info.apple.com/article.html?artnum=302977 这儿]得到(稍微)更多的信息。 | ||
注意,在上面最后一步中设置的根密码,不需要与我们之后使用的WordPress密码相同。事实上,如果根密码与我们之后使用的WordPress密码不同,会是一件好事。选一些你能够记住的内容作为密码。这时候,确定你能够访问数据库,因为根使用<code>mysql</code>工具,会是个好主意: | |||
mysql $ bin/mysql -u root -p | mysql $ bin/mysql -u root -p | ||
输入密码: | |||
欢迎来到MySQL监控器。 命令行以 ; or \g结束。 | 欢迎来到MySQL监控器。 命令行以 ; or \g结束。 | ||
Your MySQL connection id is 3 to server version: 4.1.15-standard | Your MySQL connection id is 3 to server version: 4.1.15-standard | ||
第310行: | 第144行: | ||
Mmmm, ASCII art! | Mmmm, ASCII art! | ||
核实你能够访问数据库,[http://cocoamysql.sourceforge.net/ CocoaMySQL]也是值得做的。确认你得到了MySQL安装的合适的版本(支持[http://cocoamysql.sourceforge.net/beta.php beta 版本]中拥有的4.1+版本。 | 核实你能够访问数据库,[http://cocoamysql.sourceforge.net/ CocoaMySQL]也是值得做的。确认你得到了MySQL安装的合适的版本(支持[http://cocoamysql.sourceforge.net/beta.php beta 版本]中拥有的4.1+版本。 | ||
==设置WordPress用户和数据库 == | ==设置WordPress用户和数据库 == | ||
几乎完成了!你只要为WordPress博客安装一个用户/密码和数据库,应该与你的<code>wp-config.php</code>文件中的设置相匹配!严格地说,不<em>需要</em>匹配,但是如果你想下载你的博客并且马上将博客运行,匹配信息会帮你使用同样的详细的连接信息。假定用户名是<code>example_u</code>,数据库称为<code>example_db</code>,密码是<code>example_pw</code>。 | 几乎完成了!你只要为WordPress博客安装一个用户/密码和数据库,应该与你的<code>wp-config.php</code>文件中的设置相匹配!严格地说,不<em>需要</em>匹配,但是如果你想下载你的博客并且马上将博客运行,匹配信息会帮你使用同样的详细的连接信息。假定用户名是<code>example_u</code>,数据库称为<code>example_db</code>,密码是<code>example_pw</code>。 | ||
首先连接到数据库并且为WordPress用户添加保证: | 首先连接到数据库并且为WordPress用户添加保证: | ||
mysql $ bin/mysql -u root -p | mysql $ bin/mysql -u root -p | ||
第351行: | 第162行: | ||
mysql> grant all on example_db.* to 'example_u'@'localhost'; | mysql> grant all on example_db.* to 'example_u'@'localhost'; | ||
Query OK, 0 rows affected (0.00 sec) | Query OK, 0 rows affected (0.00 sec) | ||
如果你使用MySQL4.0而不是更高的版本,那么设置密码的过程会有所不同。如果你使用MySQL4.0,请使用: | 如果你使用MySQL4.0而不是更高的版本,那么设置密码的过程会有所不同。如果你使用MySQL4.0,请使用: | ||
第359行: | 第168行: | ||
Query OK, 0 rows affected (0.06 sec) | Query OK, 0 rows affected (0.06 sec) | ||
或者这个用于4.1+: | 或者这个用于4.1+: | ||
mysql> set password for 'example_u'@'localhost' = old_password('example_pw'); | mysql> set password for 'example_u'@'localhost' = old_password('example_pw'); | ||
Query OK, 0 rows affected (0.05秒) | Query OK, 0 rows affected (0.05秒) | ||
[MacOS X 10.4.4+ 更新: 我<em>认为</em> <code>密码</code> 方法 (ie the first of the two statements above) 同样适用于MacOS X 10.4.4 及以后的版本, 虽然我自己还没有证实。] | [MacOS X 10.4.4+ 更新: 我<em>认为</em> <code>密码</code> 方法 (ie the first of the two statements above) 同样适用于MacOS X 10.4.4 及以后的版本, 虽然我自己还没有证实。] | ||
现在创建数据库: | 现在创建数据库: | ||
第384行: | 第180行: | ||
mysql> \q | mysql> \q | ||
如果一切进展顺利,我们可以从主机供应商那里导入博客数据库。假定你已经下载了这个单一的压缩的数据库(例如,如cPanel支持的文件备份功能)。如果数据库dump称为<code>example.gz</code>,我们可能会: | 如果一切进展顺利,我们可以从主机供应商那里导入博客数据库。假定你已经下载了这个单一的压缩的数据库(例如,如cPanel支持的文件备份功能)。如果数据库dump称为<code>example.gz</code>,我们可能会: | ||
alastair $ gzcat example.gz | mysql -u example_u -p example_db | alastair $ gzcat example.gz | mysql -u example_u -p example_db | ||
输入密码: (example_pw) | 输入密码: (example_pw) | ||
这时,可能要付款使用CocaMySQL或者mysql命令工具,访问数据库,并且核实所有的内容是否都成功地导入了。如果没有成功导入,你可能在上面的命令中,得到许多错误信息。 | 这时,可能要付款使用CocaMySQL或者mysql命令工具,访问数据库,并且核实所有的内容是否都成功地导入了。如果没有成功导入,你可能在上面的命令中,得到许多错误信息。 | ||
== 完成 == | == 完成 == | ||
现在是关键时刻了。打开你的浏览器中的http://example.mirror。如果一切进展顺利,就应该显示你的博客了。 | 现在是关键时刻了。打开你的浏览器中的http://example.mirror。如果一切进展顺利,就应该显示你的博客了。 | ||
你可能注意到一些链接在example.com上仍然指向你的原始站点。要解决这个问题,你需要在http://example.mirror/wp-admin/options-general.php 中的WordPress总选项,中更新"Wordpress 地址" 和 "博客地址"。 | 你可能注意到一些链接在example.com上仍然指向你的原始站点。要解决这个问题,你需要在http://example.mirror/wp-admin/options-general.php 中的WordPress总选项,中更新"Wordpress 地址" 和 "博客地址"。 | ||
== 使其自动化 == | == 使其自动化 == | ||
有几种不同的方法,用博客内容自动更新本地镜像。这些方法取决于你拥有什么工具,以及你的主机供应商有什么工具。我在下面列出来了我使用的AppleScript,给你提供一些灵感。AppleScript依赖于Interarchy进行文件传输。 | 有几种不同的方法,用博客内容自动更新本地镜像。这些方法取决于你拥有什么工具,以及你的主机供应商有什么工具。我在下面列出来了我使用的AppleScript,给你提供一些灵感。AppleScript依赖于Interarchy进行文件传输。 | ||
--自动更新WordPress一个站点的本地镜像的脚本 | --自动更新WordPress一个站点的本地镜像的脚本 | ||
第521行: | 第240行: | ||
do shell script "rm " & dbfile | 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 | 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添加密码"。 | 为了使得这个脚本运行,你需要在脚本编辑器中编辑脚本,并且更改不同的位置,URLs和密码。希望这些能够轻易地执行。此外,你需要向keychain添加密码,以下载你的静态站点,访问你的数据库dump,这样Interarchy能够找到这些内容。执行这一步的最好方法,是在Interarchy中交互式地访问站点并且确定在检验框中点击了"向 Keychain添加密码"。 | ||
如果你没有使用Interarchy,你仍然会发现这个脚本具有价值,因为这个脚本显示了怎样使用SQL查询,从软件程序方面,更新不同的"Wordpress 地址" 和"博客地址" 选项 。 | 如果你没有使用Interarchy,你仍然会发现这个脚本具有价值,因为这个脚本显示了怎样使用SQL查询,从软件程序方面,更新不同的"Wordpress 地址" 和"博客地址" 选项 。 | ||
{{Stub}} | {{Stub}} |
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.