使用ssh和rsync实现symfony项目的增量更新 ... by 蓝色梦幻 ... 4 月 19 天前 ... 66 次点击
sync依赖于ssh,所以我们首先要配置好ssh,先在本地环境(你的home目录)生成ssh的key
test@debian:~$ ssh-keygen -t rsa
提示问题的时候,一路回车就行了。上面这一步做完之后,会在home目录下生成.ssh的目录和两个key文件:
test@debian:~$ ls .ssh
id_rsa id_rsa.pub
id_rsa是私有密钥,id_rsa.pub是公有密钥。下面要将公有密钥拷贝到dreamhost上去,注意把下面的your_id和xxx换成你的id和主机名:
test@debian:~$ scp ~/.ssh/id_rsa.pub your_id@xxx.dreamhost.com:~/
cp是远程拷贝命令,拷贝的时候会提示你输入密码,输入你在dreamhost上的密码就行了。拷贝完成后,测试一下ssh可以了没:
test@debian:~$ ssh your_id@xxx.dreamhost.com
同样,换成你自己的用户名和主机名,并输入密码,如果ok,那么你现在已经用ssh登录到dreamhost上了。不要退出,在dreamhost主机上把你的公有密钥添加到认证文件中:
test@dreamhost:~$ mkdir .ssh
test@dreamhost:~$ cat id_rsa.pub >> .ssh/authorized_keys
test@dreamhost:~$ rm id_rsa.pub
接着,修改一下文件和目录权限:
test@dreamhost:~$ chmod 700 ~/.ssh
test@dreamhost:~$ chmod 600 ~/.ssh/authorized_keys
OK,配置完毕,按Ctrl-D退出,下面你应该已经回到你的本地环境了。再测试一下ssh登录,这回应该不需要输入密码了:
test@debian:~$ ssh your_id@xxx.dreamhost.com
如果上面的登录能够成功,那么ssh就算完全配好了,再次退出回到本地环境。下面来配置symfony的rsync,让它支持增量更新。修改你的symfony项目下面的config/properties.ini文件如下,注意替换成你自己的信息:
[prod]
name=your_project_name
host=xxx.dreamhost.com
port=22
user=your_login_name_on_dreamhost
dir=/home/your_login_name_on_dreamhost/your_project_dir
修改完毕,保存退出。下面用symfony的sync命令测试一下:
test@debian:~/your_project$ symfony sync prod
如果没有问题,你应该会看到一串文件列表,这表示本地修改过,需要进行同步的文件,然后让我们来同步这些文件:
test@debian:~/your_project$ symfony sync prod go
你会发现,同步进行的非常快,比普通ftp快很多,而且你不必担心会有遗漏,因为sync已经替你做好了文件比较的工作,只要本地更新过的文件,全部都已经同步到远程主机上了。OK,大功告成,It’s simple, right?
另外,symfony项目下面还有一个config/rsync_exclude.txt文件,你可以把你不需要的目录和文件列在里面,这样同步的时候就会忽略这些文件和目录,比如log,cache目录等等。
原文:http://www.bolarn.com/index.php/2008/01/20/41/ |