一、注册Bitbucket账号,对比国内的源码托管企业(https://gitee.com/enterprises),Bitbucket相当大方,无限制源码项目数目,文件大小,项目总文件大小。
二、在Bitbucket上创建一个项目,用来托管网站源码,比如mywebsite.com。
三、通过Bitbucket提供的SourceTree工具(登录账号密码或者ssh),Git拉取一份到本地,这样本地电脑可以上传/下载源码了。
以上都是源码托管项目创建过程,已有的可以跳过,没有的可以百度搜索Bitbucket使用方法,本文的重点是如何通过git部署到阿里云网站服务器。
部署前准备:阿里云Linux服务器已经安装了git服务,请百度自行安装。
1. 进入项目的设置页面,找到access keys设置,去绑定一个公钥ssh key.
阿里云Linux或者其他系统,可参考Bitbucket提供方法来生成私有密钥,公钥,并绑定到设备账号.
https://support.atlassian.com/bitbucket-cloud/docs/add-access-keys/
Bitbucket ssh deployment key
2. 绑定成功后,在阿里云SSH终端上,通过这个命令来测试阿里云是否能够正常访问Bitbucket。
3. 之后你就可以在阿里云SSH终端上通过git clone命令,下载拉取托管在Bitbucket的源码了。
本地电脑 <======(上传/下载)==========> Bitbucket云源码托管 =========(发布更新)=========> 某个网站(阿里云服务器)
如果使用
特别注意的是:
Bitbucket ssh account key 就是有开发者账户下面所有托管项目的可写可读权限,一般用在开发者的电脑某个git软件上面,目的是替代输入账号密码,来实现上传/下载管理远程源码功能;
Bitbucket ssh deployment key 只能读取绑定的几个托管项目,一般用在网站发布,比如阿里云服务器上面的几个网站项目,都可以通过ssh git pull方式拉取直接远程下载到服务器上面,替代了传统ftp上传网站源码文件。在阿里云SSH终端上生成了密钥,公钥后,看你是想将公钥绑定到哪里:
如果绑定到Bitbucket账号下,终端的Git权限就是所有项目可写可读;如果绑定到一个或者多个源码项目下,终端的Git权限只能读取;同一个ssh pub key可以绑定多个Bitbucket项目,但是只能绑定一个Bitbucket账号。
Bitbucket ssh account key
注意事项:
1. 阿里云SSH终端上面按照提示生成的密钥对一般是root用户或者system级别的密钥,并不能给其他用户使用,无访问权限,通过chown、chmod修改权限是无效的。
2. root用户的公钥添加到了bitbucket,但是我的网站源码里面有PHP通过sh命令调用git pull拉取更新,这里httpd的用户是apache,需要给apache用户也新建一个密钥对,可添加到Bitbucket多个网站项目,这样php才有权限能调用到ssh密钥。
上面是git访问权限不通过,下面是生成 PHP/apache可用执行的用户ssh密钥对,并需要再次手动添加到Bitbucket.
以上是再次完成添加apache用户,下面是我们网站的系统手动Git更新:
上面我创建了两份ssh key,都是用来发布网站更新,
一个是阿里云ssh终端root用户,可以通过在ssh终端界面输入git命令手动更新,
另外一个是apache/www用户,可以通过编写网站源码调用sh命令,从而执行git命令来手动共享,我觉得网站命令更方便直接一些。