Wordpress的设计目的似乎是在实时网站上在线构建和维护网站。我在这里看到一些帖子,表明一些人正在离线进行这种开发——在Localhost中。但是,将网站在线移动(尤其是更新)似乎很复杂,有点手动,而且根本不是自动的。事实上,还不清楚是否可以移动更改,或者是否需要重新加载整个网站。这似乎很复杂,因为在创建更新时,访问者对live网站进行了更改。以及内容的备份或版本控制——我还没有深入研究。
那么什么有效呢?是否最好对live网站进行更改?离线开发的最佳方法是什么?
Wordpress的设计目的似乎是在实时网站上在线构建和维护网站。我在这里看到一些帖子,表明一些人正在离线进行这种开发——在Localhost中。但是,将网站在线移动(尤其是更新)似乎很复杂,有点手动,而且根本不是自动的。事实上,还不清楚是否可以移动更改,或者是否需要重新加载整个网站。这似乎很复杂,因为在创建更新时,访问者对live网站进行了更改。以及内容的备份或版本控制——我还没有深入研究。
那么什么有效呢?是否最好对live网站进行更改?离线开发的最佳方法是什么?
这完全取决于所做更改的类型。如果要修改主题或插件,根据更改的内容,可以在本地或远程开发服务器上构建主题或插件,然后轻松地将其推向生产环境。
这适用于一两个用户,随着用户数量的增加,您需要版本控制(如Git或SVN)来跟踪和合并更改。
我通常更喜欢使用远程开发服务器,因为它更容易复制生产环境,也更容易从多台机器访问。我建立它的方式并不比当地的发展慢。。。可能更快。
与@PerformalStudent就离线开发达成一致。如果您从在Web服务器上安装开始,然后始终按照PC开发人员的方向进行复制,则不会覆盖用户数据。中有两条记录wp_options
每次复制数据库时需要修改的表包括siteurl
和home
需要更改为指向本地PC Web服务器。
为此,我使用windows/etc/hosts文件(在windows 7上,您需要以管理员身份运行编辑器来编辑此文件,它位于C:\\Windows\\System32\\drivers\\etc\\hosts
). 为您的站点创建静态DNS名称,如下所示:
127.0.0.1 website1 bikefun website3
然后编辑您的Web服务器配置以创建虚拟主机。我在使用WAMP,所以我编辑C:\\wamp\\bin\\apache\\apache2.4.9\\conf\\extra\\httpd-vhosts.conf
并添加如下部分<VirtualHost *:80>
ServerAdmin nik@blah.blah
DocumentRoot "c:/wamp/www/bikefun"
ServerName bikefun
</VirtualHost>
然后您可以将浏览器指向http://bikefun
(例如)。这比通过http://localhost/src/bikefun
例如,除了其他以外,它还保持PC上的相对路径与生产服务器上的相对路径相同。要刷新本地版本,使其与Web服务器相同,需要执行两个步骤。您必须最频繁地执行的操作是数据库。我使用SQLyog,它可以将远程数据库复制到本地PC上,第一次这样做时,您可以在本地创建一个空数据库,然后切换到服务器,右键单击数据库名称并“复制到其他主机”。复制时要小心,以免意外覆盖生产数据库,请确保正在复制到本地PC!
如果您使用的是cPanel,那么可以下载数据库的转储并在本地执行。
复制后,需要在wp_options
桌子
第一次设置本地PC版本时,需要从Web服务器复制webroot文件,或者在本地复制确切的安装。例如,在Web服务器上,转到webroot并使用以下内容
tar -czf name.tgz website-directory/
然后复制name.tgz
并使用类似于7-zip的东西将其解压缩到本地webroot中。随后,我很少重复文件的副本,您可以通过执行相同的版本更新和安装相同的插件等来保持本地副本的同步。但如果本地PC上出现问题,您可以随时重复文件副本。
如果您正在修改或编写插件或主题,则需要版本控制。我几乎总是创建一个子主题并将其置于版本控制中,但如果不修改主题,则不需要这样做。创建新插件或编辑现有插件后,我会在插件或主题目录中创建一个GIT存储库,并将其克隆到github。com。然后我从github克隆到Web服务器(假设您在本地PC上创建/编辑了它)。这样,您可以在本地进行开发,并将更改推送到github(或您选择的存储库),然后将它们拉到Web服务器中,以升级那里的插件/主题。
git pull origin master
尽管您在本地PC上进行了仔细的测试,但这使您能够在出现问题时回滚。因此,您的WordPress Webroot都将有一个或多个GIT存储库嵌入到wp-content
在…内plugins
或themes
目录要从github部署到live server,我使用一个简单的shell脚本:#!/bin/bash
# Argument = -w <website> -t <theme> -n <name>
# if -t is not given, plugin is assumed
usage()
{
cat << EOF
usage: $0 options
Deploy a git repository to a wordpress theme or plugin
OPTIONS:
-h Show this message
-w website. e.g. bikefun
-t it\'s a theme, otherwise it\'s a plugin
-n name of plugin or theme
EOF
}
THEME="false"
WEBSITE=
NAME=
# anything that needs a parameter has a : after it.
while getopts .htw:n:. OPTION
do
case $OPTION in
h)
usage
exit 1
;;
t)
THEME="true"
;;
w) WEBSITE=$OPTARG
;;
n)
NAME=$OPTARG
;;
?)
usage
exit
;;
esac
done
if [[ -z $WEBSITE ]]
then
usage
exit 1
fi
if [[ -z $NAME ]]
then
usage
exit 1
fi
# make sure the repository is up-to-date
cd /home/lamp/webroot
cd $WEBSITE
cd wp-content
if [ $THEME = "true" ]
then
cd themes
else
cd plugins
fi
cd $NAME
# overwrite any local changes -
# this gives freedom to hotfix directly on the server and later overwrite it
git fetch origin master
git reset --hard FETCH_HEAD
git clean -df
service apache2 reload
如果您与同一项目中的其他开发人员一起工作,并且每个人都有一个本地开发人员副本,请使用GIT Scale。但我也发现它很方便,因为我可以在台式机和笔记本电脑之间切换。有时我在没有互联网连接的笔记本电脑上工作。这是一个很好的方式来填补一个漫长的飞机飞行,没有中断或分心,而你的工作!以下是一篇关于如何在脱机使用WordPress时阻止超时减慢一切的文章:http://www.cbdweb.net/wordpress-development-offline/
我们在本地机器上运行所有开发。我们使用MAMP Pro 托管本地环境和数据库。Git用于版本控制,我们使用Beanstalk.
一旦在本地完成开发(这主要是出于速度原因,在您的机器上工作要比在服务器上工作快得多),我们将导出/转储数据库。导入数据库并部署文件后,只需更改数据库中的一些值wp-config.php
.
我强烈建议不要对任何live网站进行任何更改。您希望在受保护的(非公共)环境中进行更改,以确保不会把事情搞砸。然而,不可否认,要建立一个基础设施,使其易于安全地修改实时站点,确实需要大量的工作。
现在,我会坚持让MAMP(如果你在Windows上的话是WAMP)在你的机器上运行,并让一个本地站点启动并运行。
我刚刚通过多个环境升级了一个大型WordPress站点,在执行升级时,每个环境都完全离线。我们使用IIS作为web服务器,但由于我欣赏大多数人使用Apache,因此我将尝试保持这些步骤尽可能通用,以应用于这两种设置。
以下是步骤:
使站点脱机(请记住,我们是在IIS中进行的,所以如果使用Apache,则需要使用Apache的配置来执行此操作):
a) 请注意如何在web配置中执行404重定向。你以后会需要这个的。将404重定向更改为指向站点的根目录,例如。http://example.com
b) 更改web服务器配置,将单独文件夹结构中的保留页指向保存WordPress站点的保留页。我们只设置了一个文件,索引。带有“网站正在维护”消息的html。
The site is now shutdown and cannot be accessed or updated. It is effectively static whilst you upgrade it - 除非您有另一个指向WordPress文件夹的web配置。如果这样做,请以同样的方式将其脱机。
在WordPress文件夹中创建文件的备份副本。
创建WordPress数据库的备份。(如果需要,请确保您知道如何恢复数据库-我们使用heidisql进行备份和恢复)。
将所有站点文件复制到本地web服务器,并将本地web服务器设置为与您的实时站点具有完全相同的域。在windows计算机上编辑c:\\windows\\system32\\drivers\\etc\\hosts
添加127.0.0.1 example.com
是必需的,以确保浏览器解析为本地计算机。
Note that even though you\'ll only be upgrading files locally initially, you will be upgrading the live database, and any database backup\'s/ restores etc refer to the live database ie that used by the live site.
<列出所有active 插件。停用所有插件
升级所有插件
升级WordPress,执行以下步骤,包括升级数据库。
在激活插件之前,请查看是否还有其他插件需要更新(即使您已经完成了一轮升级,也可能会发生这种情况)
激活每个需要逐个激活的插件。如果在此阶段提示您升级插件,请升级它。
在本地计算机上成功测试站点后,将本地安装的文件复制回live WordPress文件夹。
#
“上面4中的hosts文件中的条目。将上述1)中所做的事情颠倒过来:
a) 更改web服务器配置以指向live WordPress站点。
b) 还原404重定向到更改之前的状态
在live domain上测试您的站点。
The uploaded file could not be moved to /var/www/wp-uploads/localhost/2011/10. 这是我尝试上载wordpress主题时收到的错误消息。这是我的文件夹的当前权限状态。$ sudo ls -la /var/www/wp-uploads/localhost total 12 drwxrwxr-- 3 root www-data 4096 2011-10-27 16:44 . drwxr-x--