原来上传代码到测试服务器都是用ftp,我觉得这种方式很低效,而且容易出错,比如忘记传某个修改过文件。
现在项目的代码放在了git@osc上了,想使用他webhook,每当有push的时候,git@osc会发送一个请求到你预设的地址(这个地址就是你自己的服务器的地址,用来收到通知后,拉取代码),这样做整个流程就变的很方便。
原来的流程是,本地push代码,登录服务器,pull代码。
现在的流程是,本地push代码,剩下的操作会自动完成,git会发送请求,服务器会自动拉取代码,这很好。
那么要拉取代码,就需要登录git@osc,所以就要使用证书登录,不然会被询问账户密码。关于如何设置证书,首先要生成证书,git客户端自带有工具可以生成,这个不多说,证书生成后,公钥要放到git@osc,私钥要放到系统用户的家目录下的.ssh目录里,如果有多个不同服务器的证书要设置config文件来区分。
然后。。。我执行拉取的时候出现了这样的错误
Could not create directory '/home/SYSTEM/.ssh'. Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
问题是出在这里的,执行pull的脚本是php,而php在windows中有是以模块的方式运行的,也就是说是apache执行的这个操作,启动apache的用户是系统账户SYSTEM。他找不到自己的主目录在哪,需要设置用户变量HOME为自己的主目录。
所以我解决的办法是用登录服务器的administrator来运行apache,在服务里找到自己的apache服务,右键属性-》登录-》输入账户和密码-》确定,重启apache,ok。
如何用其他用户启动apache,貌似要设置权限,有点麻烦,没有继续尝试。