Gitweb & apache 원하는 포트로 띄우기

GitWeb은 git repository를 웹으로 볼 수 있는 간단한 웹서버이다.

오늘은 apache와 연동하여 gitweb을 수동으로 설치해보자.

 

선행1. git 설치 필요(amazon linux2라서 아직 centos7인거 같음 dnf사용불가!)

sudo yum install git-all

선행2. apache 설치 필요

sudo yum install httpd

선행3. lighttpd 설치 필요 (경량 웹서버인 lighttpd 또는 webrick이 필요하다.)

아래는 아마존 리눅스에서 lighttpd 설치하는 법이고 Mac같은 경우 webrick이 깔려있어 필요없다.

sudo amazon-linux-extras install epel -y

sudo yum -y install epel-release

sudo yum repolist

sudo yum install lighttpd

 

>.<

우선, 간단하게 gitweb을 임시로 실행하는 방법을 알아보자.

 

1. git repository를 먼저 생성하겠다.

cd ~

mkdir repo

cd repo

git init --bare test.git

 

2. project 폴더 생성 및 저장소 연결

만약 

cd ~

mkdir project

cd project

git init

git remote add origin ~/repo/test

git remote -v

git instaweb

Amazon Linux2라서 브라우저가 없다.

내IP:1234포트 인바운드 설정하고 외부에서 브라우저를 통해서 접속 가능하다.

(만약 Mac이라면 명령어가 다르다.

webrick으로 웹시작: git instaweb --httpd=webrick

webrick으로 웹종료: git instaweb --httpd=webric --stop)

 

아래 명령으로 lighttpd 웹서버 종료

git instaweb --stop

 

>.<

임시로 경량 서버로 실행해 보았으니 이번엔 수동으로 설치 및 아파치와 연동해보자

 

cd ~

mkdir down

cd down

git clone git://git.kernel.org/pub/scm/git/git.git

cd git

make GITWEB_PROJECTROOT="~/repo" gitweb

sudo cp -rf ./gitweb /var/www

cd /etc/httpd/conf

sudo vi httpd.conf

    :set number

    (42line 에 Listen 80이라고 되어있네)

    입력모드로 들어가 Listen 80 밑에 Listen 1234 추가하자

    아파치를 실행하는 User와 Group도 확인하자.

    (기본이 www또는 apache인듯한데 아파치를 실행할 유저로 설정하자)

    그리고 제일 밑에 아래와 같이 입력

 

<VirtualHost *:1234>

    ServerName gitserver

    DocumentRoot /var/www/gitweb

    <Directory /var/www/gitweb>

        Options +ExecCGI +FollowSymLinks +SymLInksIfOwnerMatch

        AllowOverride All

        order allow,deny

        Require all granted

        AddHandler cgi-script .cgi

        DirectoryIndex gitweb.cgi

    </Directory>

</VIrtualHost>

 

그리고 proxy모듈을 사용하도록 설정해야하는데 아마존 리눅스2라 그런가

나는 httpd.conf에 없고 include를 보니까 conf.modules.d 디렉토리에서 .conf파일을 불러오는거 보고 찾아갔다.

찾아가서 모듈을 사용하도록 설정해줘야한다.

    #LoadModule proxy_module modules/mod_proxy.so

    #LoadModule proxy_http_module modules/mod_proxy_http.so

두 모듈이 주석되있으면 주석해제하고 없으면 추가해준다. 나는 전부 풀려있더라~

이 두줄이 리눅스OS에 따라 파일의 위치가 다 다르다. 주의해야한다.

 

아까 make로 컴파일할때 GITWEB_PROJECTROOT를 설정해줬는데 이거... /etc/gitweb.config 파일에서도 똑같이 projectroot를 설정해줘야한다 -0-;;; 해당 설정을 따르나보다?????

 

설정을 다 해줬으면 웹서버를 재시작한다.

sudo systemctl restart httpd

 

그러면 아까처럼 EC2퍼블릭아이피:1234 를 통해 접속할 수 있다.

이미지는 나중에 찍어서 저장소랑 commit한게 좀 있다.ㅎ

만약 프로젝트 루트도 정확하고 설정도 다했는데 '404 Not Found' 가 뜬다?

그러면 git 권한이 없는거다... 아까 아파치 실행 user, group 확인하라고 했었는데 관련있다.

$GIT 에서 지정한 git이 게스트에게 권한이 있는가!!!!

 

처음에는 mac에서 수동설치했을때는 잘 설치했다.

그런데 아마존 리눅스에서 다시 해보니까 경로도 다르고... 권한도 다르고... 브라우저도 없어서 호스트네임이 아니라 포트로 설정하고 하하...

특히 404에러가 참 고생했다 -_ -;;; 게스트로 접속하기 때문에 권한이랑 /etc/gitweb.config파일 설정이 이슈였다.

트러블슈팅을 할 때는 오래 걸리는데 맨날 하다보니 내공이 쌓인다... 후후

 

'git' 카테고리의 다른 글

깃허브 Travis CI  (0) 2022.04.27
firebase deploy  (0) 2021.06.10
window 명령프롬프트에서 git 사용하기 01  (0) 2021.05.18

이 글을 공유하기

댓글

Designed by JB FACTORY