opsone / wp-cli-deploy
使用ssh将本地WordPress数据库或上传目录部署到远程服务器。
Requires
- php: >=5.4
- symfony/yaml: ~2.7
- wp-cli/wp-cli: >=0.14
This package is not auto-updated.
Last update: 2024-09-23 15:41:04 UTC
README
2017年1月
WP-Cli Deploy
当前版本: 1.2.0
部署本地WordPress数据库或上传目录。
该工具需要在您的wp-cli.yml文件中定义一组值。常量应以前缀为环境处理程序命名,您将使用该处理程序作为您所需子命令的第一个参数。以下是一个“dev”环境的示例配置
@dev:
path: /path/to/the/wp/dir/on/the/server
url: the-remote-website-url.com
host: ssh_host
ssh_user: ssh_user
port: ssh_port
writable_path: /path/to/a/writable/dir/on/the/server
uploads_path: /path/to/the/remote/uploads/directory
themes_path: /path/to/the/remote/themes/directory
plugins_path: /path/to/the/remote/plugins/directory
db_host: the_remote_db_host
db_name: the_remote_db_name
db_user: the_remote_db_user
db_password: the_remote_db_password
excludes:
- ".env"
- "file_to_exclude.php"
- ...
=> wp deploy push dev ...
并非所有命令/子命令都需要定义所有常量。要测试子命令需要哪些常量,请使用不存在的环境处理程序执行它。例如:wp deploy dump dev
。
您可以定义尽可能多的常量组,以适应您希望拥有的部署环境数量。
示例
# Deploy the local db to the staging environment
wp deploy push staging --what=db
# Pull both the production database and uploads
wp deploy pull production --what=db && wp deploy pull production --what=uploads
# Pull both the production themes and plugins
wp deploy pull production --what=themes && wp deploy pull production --what=plugins
# Dump the local db with the siteurl replaced
wp deploy dump production
配置依赖
子命令根据不同的常量才能正常工作。以下是依赖列表
-
wp deploy push
: 为了将内容推送到服务器,您需要定义SSH凭据和服务器上可写目录的路径。无论传递给push
子命令的参数如何,都需要这些常量%%ENV%%_SSH_USER
%%ENV%%_HOST
%%ENV%%_WRITABLE_PATH
-
wp deploy push %%env%% --what=db
: 为了将数据库部署到您的服务器,您需要定义WordPress网站的URL、服务器上WordPress代码的路径以及服务器上数据库的凭据%%ENV%%_URL
%%ENV%%_PATH
%%ENV%%_DB_HOST
%%ENV%%_DB_NAME
%%ENV%%_DB_USER
%%ENV%%_DB_PASSWORD
-
wp deploy push %%env%% --what=uploads
: 为了推送上传目录,您需要定义服务器上上传目录的路径%%ENV%%_UPLOADS_PATH
wp deploy pull
: 为了将内容拉取到您的服务器,您需要定义SSH凭据常量。无论传递给pull
子命令的参数如何,都需要这些常量: * %%ENV%%_USER
* %%ENV%%_HOST
-
wp deploy pull %%env%% --what=db
: 为了从您的服务器拉取数据库,您需要定义远程WordPress网站的URL、服务器上WordPress代码的路径以及服务器上数据库的凭据%%ENV%%_WRITABLE_PATH
%%ENV%%_URL
%%ENV%%_PATH
%%ENV%%_DB_HOST
%%ENV%%_DB_NAME
%%ENV%%_DB_USER
%%ENV%%_DB_PASSWORD
-
wp deploy push %%env%% --what=uploads
: 与push
命令一样,为了拉取远程服务器上的上传,我们需要服务器上的路径。%%ENV%%_UPLOADS_PATH
-
wp deploy push %%env%% --what=themes
: 与push
命令一样,为了拉取远程服务器上的主题,我们需要服务器上的路径。%%ENV%%_THEMES_PATH
-
wp deploy push %%env%% --what=themes --themename=mytheme
: 与push
命令一样,为了拉取远程服务器上的特定主题,我们需要服务器上的路径。%%ENV%%_THEMES_PATH
-
wp deploy push %%env%% --what=plugins
: 与push
命令一样,为了拉取远程服务器上的插件,我们需要服务器上的路径。%%ENV%%_PLUGINS_PATH
-
wp deploy push %%env%% --what=core
: 与push
命令一样,为了拉取远程服务器上的核心,我们需要服务器上的路径。%%ENV%%_PATH
-
wp dump %%env%%
: 此子命令仅需要目标WordPress路径及其URL。
%%ENV%%_POST_HOOK
您可以可选地定义一个常量,其中包含在子命令执行结束时调用的bash代码。
您可以使用占位符来引用环境变量。一些可用的环境变量包括
env
:环境句柄command
:子命令(目前为push
、pull
或dump
)。what
:对push
或pull
子命令的what
参数值。wd
:部署命令的工作目录路径。这是数据库被拉取的目录,以及其他临时文件被创建的目录。timestamp
:使用“Y_m_d-H_i”格式化的日期。tmp_path
:部署工具使用的临时文件目录的路径。bk_path
:部署工具使用的备份目录的路径。local_uploads
:本地WordPress实例上传目录的路径。ssh
:以user@host
格式表示的ssh服务器句柄。
示例
以下是一个DEV_POST_HOOK
的示例,在执行pull
或push
操作后,使用HipChat REST API(https://github.com/hipchat/hipchat-cli)向HipChat房间发送消息。对于push操作,它还会清除缓存。
<?php $hipchat_message = "http://%%url%%" . "\njeandoe has successfully %%command%%ed %%what%%"; $command = "if [[ '%%command%%' != 'dump' ]]; then " . "echo '$hipchat_message' | %%abspath%%/hipchat-cli/hipchat_room_message -t 1245678 -r 123456 -f 'WP-Cli Deploy';" . "fi;" . "if [[ '%%command%%' == 'push' ]]; then " . "curl -Ss http://example.com/clear_cache.php?token=12385328523;" . "fi;"; define( 'DEV_POST_HOOK', $command );
致谢
- 贡献者: opsone
- 分支自: terminalpixel
- https://github.com/demental/wp-deploy-flow 以获取灵感。