首先,为我可能会抛出的虚假问题道歉。如果你能指出我应该从哪里开始的方向,那就太好了。
我完全不熟悉版本控制(以及git)和云系统。但是,我必须在AWS EC2实例上开发基于php web的应用程序,并为未来的开发人员提供代码。
我成功创建了运行PHP / MySQL的EC2实例,并使用弹性IP映射域。因此,该网站现在可以通过80端口公开访问。
我还使用$sudo yum install git
安装了git并配置了user.name和user.email
然后,我转到网站的根文件夹(例如public_html)并运行'git init
'创建折叠“.git”然后我使用“git add .
”添加文件并提交“ git commit -m ‘initial upload’
”
这是正确的方法吗?是否可以将项目文件夹放在/ public_html(任何人都可以访问)。
如果上面没问题,那么我应该从哪里开始? 我想在EC2上运行git服务器,允许开发人员从他们的本地机器(例如Eclipse)连接,同时能够保留备份并比较代码之间的不同。
我想给开发人员什么细节,以便他们可以连接到git服务器并处理项目?
我快速指导或几个关键词做更多的研究会有所帮助。
答案 0 :(得分:10)
查看here,了解有关在amazon ec2上设置git的更多信息
允许开发人员使用你的git,你只需要给他们git服务器url。
直接引用我正在链接的网站。
“首先,您需要将您的EC2身份添加到ssh 验证代理。这可以防止git之后的问题,即 在尝试执行此操作时收到错误“Permission denied(publickey)。” git推送到EC2存储库。
ssh-add path/to/privateEC2key.pem
现在您可以继续在EC2上创建git存储库 实例
ssh username@hostname.com mkdir the_project.git cd the_project.git git init --bare
所以这里没有多少,我们所做的就是创建一个空的存储库 然后离开。现在,在本地计算机上,您可以执行类似的操作 以下内容:
cd the_project git init git add . git commit -m "Initial git commit message" git remote add origin username@hostname.com:the_project.git git config --global remote.origin.receivepack "git receive-pack" git push origin master
'git config'命令是我发现必须能够修复的 推送到EC2存储库。“
答案 1 :(得分:3)
Alex提到的链接为在ec2上设置git提供了一个很好的起点。但我遵循了这里提到的一种不同的方法。 link。从页面直接引用:
"在没有PEM密钥的情况下使用SSH连接" :因此,要么添加ec2私钥并将其作为实体添加到ssh身份验证代理中,要么为您的用户创建一个新的ssh密钥并使用它。要遵循的步骤是:
创建SSH密钥
首先,您需要导航到本地计算机上的.ssh文件夹:
cd
cd .ssh
如果此文件夹不存在,请使用mkdir进行此操作。
进入本地计算机上的ssh文件夹后,应该在/Users/yourusername/.ssh中执行以下操作生成密钥。
ssh-keygen -t rsa -b 1024
当提示输入文件名保存密钥时输入id_rsa_aws,当提示输入密码时请留空。
在.ssh目录中,执行以下命令并将输出复制到以后粘贴。
cat id_rsa_aws.pub
现在使用您的PEM密钥
连接到您的AWS实例ssh -i path/to/yourkeyname.pem ubuntu@xx.xxx.xxx.xxx
进入
echo 'the key you copied from id_rsa_aws.pub' >> .ssh/authorized_keys
chmod 640 .ssh/authorized_keys
chmod 750 .ssh
现在你去你的机器并输入
cd desired directory
git clone ubuntu@xx.xxx.xxx.xxx:<path_to_your_just_created_git_server>
如果您执行了上述所有步骤,则唯一的警告是
warning: You appear to have cloned an empty repository.
没关系。现在,您可以将所有代码复制到克隆目录中,并按照以下步骤操作:
git add .
git commit -m "Initial commit"
git push origin master // If working on master branch
答案 2 :(得分:0)
我创建了GitHub要点,并提供了所有详细信息,希望对您有所帮助 https://gist.github.com/eslam-mahmoud/35777e4382599438023abefc9786a382
//add your EC2 .pem file to ssh kys
ssh-add ~/aws/mypemfile.pem
//create bare repo on AWS EC2 webserver and deploy on demand
mkdir ~/git/the_project
cd ~/git/the_project
git init --bare
//create local repo and track remote one
cd ~/git/the_project
git init
git add .
git commit -m "Initial git commit message"
git remote add aws ubuntu@1.1.1.1:~/git/the_project
git config --global remote.origin.receivepack "git receive-pack"
git push aws master
//create tag
git tag -a v0.1 -m "my version 0.1"
//push tags
git push aws --tags
//Or you have one so you push your updates
git remote add aws ubuntu@1.1.1.1:~/git/the_project
git config --global remote.origin.receivepack "git receive-pack"
git push aws master
//create tag
git tag -a v0.1 -m "my version 0.1"
//push tags
git push aws --tags
//on server create another local repo that track the bare one to deploy
git clone ~/git/the_project
cd ./the_project
//checkout tag
git checkout v0.1
//install clear cache ...
npm install