Automatically deploy WordPress site to server after repository commit with Git
Git 是一个版本管理系统,很多企业和团队都用 Git 来管理自己的代码库、进行协作。Git 提供了很多 Hook,可以让我们在进行完某个 Git 操作之后,自动执行一些命令,使用这些 Hook,我们可以直接通过 Git 来部署网站。下面我们来简要的说明一下利用 Git 自动部署 WordPress 站点到服务器的主要步骤。
1、安装 openssh服务器
很多服务器都已经内置了 SSH 服务器和客户端,一般情况下,这一步都是可以省略的。
sudo yum install openssh-server openssh-client
2、创建个人公钥和私钥
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥:
ssh-keygen -t rsa
默认生成 2048 位密钥,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥:
ssh-keygen -t rsa -b 4096
默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:
id_rsa id_rsa.pub known_hosts
一定要保存好这一对密钥,特别是私钥、绝对不能泄露出去,把公钥里面的内容添加到服务器的 ~/.ssh/knwn_hosts 文件中,id_rsa 下载到本地,供我们通过密钥认证访问服务器的时候使用。
3、使用 Gogs 配置 Git 服务器
Gogs 目前可能是安装配置最简单的 Git 服务器了,整个安装过程只需要一个命令。
sudo rpm --import https://rpm.packager.io/key
echo "[gogs]
name=Repository for pkgr/gogs application.
baseurl=https://rpm.packager.io/gh/pkgr/gogs/centos6/pkgr
enabled=1" | sudo tee /etc/yum.repos.d/gogs.repo
sudo yum install gogs
然后访问 http://你的服务器 IP 地址:3000 来访问 Gogs 基于 Web 界面的 Git 仓库管理工具,简单的设置之后,我们就可以创建自己的 Git 仓库了,这一步基于一个类似 WordPress 的 Web 安装界面,非常简单,这里就不多说了。
4、Git 仓库更新的时候自动检出、更新服务器上面的网站代码
通过 Git 提交网站更新后,我们可以通过 Git 的 post-receive hook 来更新自动检出更新的代码就可以了,编辑 你自己的 Git 仓库中的hooks/post-receive,复制下面的代码到这个文件中、并根据自己的实际情况修改。
#!/bin/sh
site=/home/wwwroot/wpzhiku.com //这是服务器上网站的根目录
export GIT_WORK_TREE=$site
git checkout -f
以上4步进行完之后,整个基于 Git 发布网站的流程已经设置好了,我们只需要检出仓库,然后把 WordPress 站点放进去,然后提交更新、很快,服务器上的代码就自动更新了,非常方便。
看来你这篇文章,原来这么简单啊。。很久以前我寻思捣鼓过,还在segmentfault上提问了,后来还是没解决。
好久没来了,也都变成https了啊,现在越来越多的个人都有了。
弄懂了就很简单。
这是更新了wordpress,那数据库怎么同步啊,
数据库可以用 wp sync db 插件同步。
我想用远程git,比如说我把新的主题代码推送给github然后让服务器自动更新,应该怎么实现
这个需求可以通过 Github 的 webhooks 来实现,有这样的 WordPress插件,你可以找找试一下。