티스토리 뷰
자 이제 세번째로 서버에 git 설치를 하고 git을 사용하기 위한 설정을 해보겠습니다.
git 설치
1. git 설치
$ sudo apt-get install git
2. git 관리 계정 만들기
$ sudo adduser git-admin
$ su - git-admin
3. git repositories 설정
3.1 디렉토리 생성
$ cd /var/www/html/
$ sudo mkdir git-repositories
$ sudo chmod +x git-repositories
$ cd git-repositories
$ mkdir test.git
$ cd test.git
3.2 bare repositories 생성
$ git init --bare --shared
4. git 계정, 이메일 설정
$ git config --global user.email "gitolite@xxx.xxx"
$ git config --global user.name "gitolite"
자 이제 bare 저장소를 사용하기 위해 git clone을 한후 파일을 하나 올려보겠습니다.
ssh를 이용한 git 테스트
만약 ssh를 설치하지 않았다면 openssh-server를 설치하면 됩니다.
$ sudo apt-get install openssh-server
$ sudo service ssh restart
1. clone tet.git (server에서 작업중이면 <server ip>에 localhost를 치고 아니면 server ip를 치면 됩니다.)
$ git clone git-admin@<server ip>:/var/www/html/git-repositories/test.git
2. 파일 생성 및 커밋
$ touch README
$ git add README
$ git commit -m "initial commit"
$ git push origin master
다시 clone 을 해보면 파일이 잘 받아지는 것을 확인 할 수 있습니다.
지금은 browser를 통해 https://xxx.xxx.xxx.xxx/git-repositories/test.git를 쳐보면 파일을 확인할 수 있지만 보통 소스를 받을 때 많이 사용하는 git clone https://xxx.xxx.xxx.xxx/git-repositories/test.git을 해보면 connection refused가 나는 것을 발생하는 것을 확인할 수 있습니다. 이에 대한 설정을 해보겠습니다.
git http 설정
1. post update hook 설정
$ cd /var/www/html/git-repositories/test.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
2. git repository directory 사용 권한 수정
$ sudo chown -R _currentuser_:www-data /var/www/html
$ sudo chmod -R g+sw /var/www/html
3. git-http-backend 설정 추가
3.1 apache moude 설정
$ sudo a2enmod cgi alias env rewrite
3.2 git-http-backend 설정
$ sudo vi /etc/apache2/sites-available/000-default.conf
3.3 htpasswd 인증 파일 생성
$ htpasswd -c /var/www/html/.htpasswd _currentuser_
3.4 apache 재시작
$ sudo service apache2 restart
이제 http 설정이 끝났으니 테스트를 해보겠습니다.
$ git clone http://xxx.xxx.xxx.xxx/git-repositories/test.git
잘 받아지는 것을 확인 할 수 있습니다. 그럼 이제 파일을 하나 더 올려보겠습니다.
$ touch README2
$ git add README2
$ git commit -m "second commit"
$ git push origin master
아마 The requested URL returned error: 403 다음과 같은 메시지가 뜨면서 push가 안되는 것을 확인 할 수 있을 것입니다. 이럴때는 remote 저장소를 추가하면 됩니다.
$ git remote add pushServer ssh://git-admin@xxx.xxx.xxx.xxx:/var/www/html/git-repositories/test.git
$ git push pushServer master
잘 동작하는 것을 확인 할 수 있습니다.
이제 마지막으로 https에 대한 설정을 해보겠습니다.
git https 설정
1. self-signed certificate 생성
$ sudo mkdir /etc/apache2/ssl
$ sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache-ssl-cert.crt
crt 파일의 내용을 확인해보면 BEGIN CERTIFICATE ~ END CERTIFICATE와 BEGIN PRIVATE KEY ~ END PRIVATE KEY로 구성되어 있는 것을 볼 수 있습니다. 다음 파일을 두개로 나눕니다.
apache-ssl-cert.pem (BEGIN CERTIFICATE ~ END CERTIFICATE 포함)
apache-ssl-cert.key (BEGIN PRIVATE KEY ~ END PRIVATE KEY 포함)
$ cd /etc/apache2/ssl
$ sudo cp apache-ssl-cert.crt apache2-ssl-cert.pem
$ sudo cp apache-ssl-cert.crt apache2-ssl-cert.key
2. certificate 사용을 위한 httpd 설정
$ sudo vi /etc/apache2/sites-available/default-ssl.conf
SSLCertificateFile /etc/apache2/ssl/apache2-ssl-cert.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache2-ssl-cert.key
3. 위의 git http 설정시, /etc/apache2/sites-available/000-default.conf 에서 적용한 부분을 default-ssl.conf에도 적용
4. apache virtual host 생성 및 module 설정
$ sudo a2enmod ssl
$ sudo a2ensite default-ssl.conf
자 이제 모든 설정이 끝났습니다. 마지막으로 https를 이용한 clone 을 해보겠습니다.
$ git clone https://xxx.xxx.xxx.xxx/git-repositories/test.git
음? SSL certificate problem: self signed certificate 라는 메시지가 뜨면서 clone이 동작하지 않는 것을 볼 수 있습니다. 이럴때는 받는쪽에서 다음 설정을 추가하시면 됩니다.
'linux' 카테고리의 다른 글
[git] git hook을 이용한 웹서버 자동 배포 (0) | 2017.01.25 |
---|---|
[Ubuntu build server 4] jenkins 설치 및 기본 설정 (0) | 2016.12.17 |
[Ubuntu build server 2] apache 설치 (0) | 2016.12.04 |
[Ubuntu build server 1] 자동 빌드 서버를 구축해보자.. (0) | 2016.12.04 |
[Ubuntu 16.04] Git server 구축 (Git + Gitolite) (0) | 2016.11.21 |
- Total
- Today
- Yesterday
- 오픈 소스 배포
- delete item
- Git
- swip
- Jenkins
- qtwebengine
- security.ubuntu.com
- serializable
- type inference
- remove item
- data transfer
- 자동 배포
- jitpack
- Apache
- RecyclerView
- ubuntu 16.04
- git hook
- expandable recyclerview
- build server
- publish opensource
- git server
- android serialization
- android open source
- C++
- kotlin
- 리사이클러뷰 확장
- auto depoly
- Parcelable
- weak_ptr
- kotlinx serialization
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |