Setting up Repo on Amazon EC2 for Git Push
Was trying to setup an instance on Amazon which I can do a git push to update the /var/www/html folder. Decided to share the steps here, so that other beginners like me can benefit too!
This article basically covers all the steps need to fire-up an instance and set the Security Group and SSH.
Install LAMP stack is easy, but install phpMyAdmin is slightly tricky. Luckily this github gist explained the steps very well.
The only missing part that you might want to take note is the part to change the user of the html directory.
At first I tried this solution from stackoverflow post. The method is:
Then I found this article, by Abhijit Menon-Sen, that magically reduces the steps to just 1 git command. So basically what you need to do is just 3 steps
On your EC2 server
1. Create a bare repository.
2. Use GIT_WORK_TREE
On your local computer.
3. Setup SSH (this is missing from the guide). If not, you might get git push fail in the next step.
4. Add Git remote and push for the first time.
5. Subsequently, for every changes, you just need:
Done!
It took me the whole night just to get this done. Hope this can save your time.
http://stackoverflow.com/questions/4632749/how-to-push-to-git-on-ec2
Prerequisites
Setting up Amazone Instance
This article basically covers all the steps need to fire-up an instance and set the Security Group and SSH.
Install LAMP + phpMyAdmin
Install LAMP stack is easy, but install phpMyAdmin is slightly tricky. Luckily this github gist explained the steps very well.
The only missing part that you might want to take note is the part to change the user of the html directory.
sudo chown -R ec2-user /var/www/html/
Setting up Git
Setting Up Git Repo to work with /var/www/html folder
At first I tried this solution from stackoverflow post. The method is:
- Copying .git folder to /var/www/html/ folder.
- Then use a post-update script to update the git repo.
The idea looks logical, and easy to understand, but I just couldn't get it to work.
Then I found this article, by Abhijit Menon-Sen, that magically reduces the steps to just 1 git command. So basically what you need to do is just 3 steps
On your EC2 server
1. Create a bare repository.
$ mkdir <your-repo-name>.git
$ cd <your-repo-name>.git
$ git init --bare
Initialized empty Git repository in /home/ec2-user/<your-repo-name>.git/
2. Use GIT_WORK_TREE
$ mkdir /var/www/html
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/html git checkout -f
$ chmod +x hooks/post-receive
On your local computer.
3. Setup SSH (this is missing from the guide). If not, you might get git push fail in the next step.
ssh-add /<path-to-your-ec2-ssh-key>.pem
4. Add Git remote and push for the first time.
$ git remote add production ssh://<your-amazon-server-address>/home/ec2-user/<your-repo-name>.gitTips: You can setup for different environment, e.g. "testing", "beta", the same way. Just change the remote name, and push! :)
$ git push production +master:refs/heads/master
5. Subsequently, for every changes, you just need:
$ git push origin // update your github-repo
$ git push production
Done!
It took me the whole night just to get this done. Hope this can save your time.
References:
http://stackoverflow.com/questions/279169/deploy-a-project-using-git-pushhttp://stackoverflow.com/questions/4632749/how-to-push-to-git-on-ec2
Hi,
ReplyDeleteI'm trying to use your guide, but I'm having the following problem:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Do you have any Idea?
it worked! I put in url = ssh://@/path/to/.git and it works, you can update with your guide! Thank you!
ReplyDeleteNo...I'm still having permission problem to perfom checkout I tried using sudo but it now working
ReplyDeleteI setup a server on EC2 few days back. While I was connected to my server via Bitvise SSH my internet connection suddenly tripped yesterday. Now I am unable to login to my server. I get error no private key found. Though my website www.indiangoldrates.com is up and running fine. Please guide me as how to connect to my server again.
ReplyDelete