집에서 혼자서 리눅스를 사용하다가 Apache2를 사용하다보면 아래와 같은 경고(?) 메시지를 보곤 한다.

 


$ sudo service apache2 restart
 * Restarting web server apache2                                                                                                          apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                                   [ OK ]

Apache2 구동에는 별 지장이 없지만, 괜히 저런 메시지를 보면 기분이 나쁘니... 없애보자.

 


$ sudo nano /etc/apache2/httpd.conf

ServerName localhost

[ /etc/apache2/httpd.conf ] 파일을 수정하여 ServerName을 적어주면 된다.

 


$ sudo service apache2 restart


그리고, apache2를 재시작하면 기존에 보이던 마음에 안드는 메시지가 사라졌을 것이다!!!

 

위와 같이 해도 여전히 에러메시지가 나올 때가 있다.

그럴 때엔 앞에서 만든 "/etc/apache2/httpd.conf" 파일 삭제하고,

"/etc/apache2/apache2.conf" 파일의 제일 뒤에 "ServerName localhost" 적어주고 나서

"sudo service apache2 restart" 해주면 된다.

 

 http://hosts.tistory.com/448


 

반응형

버전관리 도구로 Git을 사용하는 경우,
코드 리뷰 도구로는 Gerrit을 사용하는 것이 거의 당연시 되고 있다.
그 가장 큰 이유는 바로 요즘 대세인 Google의 Android에서 사용하고 있다고 알려져있기 때문으로 보인다.


그래서 궁금한 것이 그러면 다른 곳에서는 어떤 코드 리뷰 도구를 사용하는지 알아보고 싶었다.
그러던 중 알게 된 것이 Yahoo에서 사용했다고 알려진 Review Board였다.
최근에는 Git도 지원을 하고 있었다.


그 외에도 몇 가지 도구를 더 찾을 수는 있었지만,
코드 리뷰를 개발 프로세스 안에서 시스템 적으로 코드 리뷰를 강제해야만 하는
회사에서 적용할 수 있는 강력하고 안정적인 쓸만한 리뷰 도구는 그다지 많지 않았다.


결론적으로,
일단 Review Board를 설치해보고 그 화면이나 기능에 대해서 한 번 살펴보기로 했다!
시간 투자 결정 !!!


01. Review Board

   - http://www.reviewboard.org/
   - Review Board는 Ubuntu와 Python을 사랑하는 도구로 보인다. 특히 Python !!!
   - 그래서 설치 과정 역시 일반적이지 않고 Python을 이용하여 이루어진다.


02. Database

   - Review Board는 다음의 3가지 database를 지원한다.
   - MySQL, PostgreSQL, sqlite

   - 개인적인 취향으로 PostgreSQL으로 이하 설치과정을 진행하겠다.
   - 다들 알겠지만, 설치는 다음과 같이 진행하면 된다.

$ sudo apt-get install postgresql



03. WAS

   - 웹 기반의 코드 리뷰 도구이기 때문에 WAS가 필요하다.
   - Review Board에서 공식적으로 지원하는 것은 다음의 2가지 WAS 구성이다.
      ▷ Apache + mod_wsgi, fastcgi, or mod_python
      ▷ lighttpd + fastcgi

   - 최근에는 lighttpd도 많이 사용되지만, Apache로 이하 설치과정을 진행하겠다.
   - 설치가 필요한 경우 아래와 같이 진행하면 된다.

$ sudo apt-get install apache2 libapache2-mod-python libapache2-mod-wsgi



04. Python Setuptools

   - Review Board는 조금 특이한 (솔직히 말하면 필자가 설치했던 것들 중 최초다 @.@) 설치과정을 갖고 있다.
   - 바로 Python Setuptools를 이용해서 설치를 진행하기에, 해당 도구를 미리 설치해줘야 한다.

$ sudo apt-get install python-setuptools



05. Python Development Headers

   - 정확히 왜 필요한지는 모르겠지만, 일단 필요하다고 하니 설치를 해보자.

$ sudo apt-get install python-dev



06. memcached

   - 웹 기반으로 구동이 되는 도구이다보니, 성능 이야기가 곧잘 나오곤 한다.
   - 그래서인지 옵션 사항이긴 하지만 Review Board는 성능 향상을 위한 도구를 제시하고 있다.

$ sudo apt-get install memcached
$ sudo easy_install python-memcached



07. Patch

   - Review를 위한 도구이다 보니, 필수로 필요한 것 중 하나가 patch이다.

$ sudo apt-get install patch



08. Review Board

   - 이제 준비는 모두 끝났다. Review Board를 설치하자~!!!

$ sudo easy_install ReviewBoard

   - 너무 쉽다고?! 아직 조금 더 남았다.



09. database bindings

   - review board와 database를 연결해줘야 한다.
   - 필자는 postgresql을 사용하기에 아래와 같이 설치~!!!

$ sudo apt-get install libpq-dev
$ sudo easy_install psycopg2



10. create site

   - 설치가 되었다고 해서 모두 끝나는 것이 아니다.
   - Review를 진행할 site를 생성해야 사용할 수가 있는 것이다.

   - 여기에서 사용할 사용자와 database를 등록해놓자.

$ sudo su - postgres
$ psql

# CREATE ROLE reviewboard LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
# CREATE DATABASE reviewboard WITH ENCODING='UTF8' OWNER=reviewboard;
# \q

$ exit

   - 이제 reviewboard site를 생성하자.

$ sudo rb-site install /var/www/review.whatwant.com

   - 위 경로는 현재 존재하지 않는 디렉토리이다. 위 명령어를 통해 생성이 될 예정이다.


   - 명령어를 실행하면 위와 같은 창이 X-Windows 에 뜨게 된다.


   - 지금 테스트하고 있는 환경에서는 별도의 도메인같은 것이 없으니 위 예시는 그냥 "127.0.0.1"을 사용하고 있다.


   - 하위 경로를 별도로 지정하고 싶은 경우를 위한 환경 설정이다.


   - 무슨 말인지 잘 모르겠다. 이럴 때엔 그냥 내버려두란다. 그러면 그렇게 하자 ^^


   - 마찬가지다. 그냥 내버려두란다.


   - 설치하고 사용할 Database를 고르면 된다. 필자는 postgresql을 선택했다.


   - postgresql에서 사용할 database 이름을 지어주면 되는데, 앞에서 생성한 reviewboard라는 이름으로 생성하자.


   - DB 서버를 별도로 두었다면 해당 IP를 적어주면 되고, 같은 서버에 위치하고 있다면 기본값 localhost 그대로 쓰자.


   - database를 위한 사용자와 비밀번호 입력을 위한 화면이다. 앞에서 등록한 사용자 정보를 넣어주면 된다.


   - 메모리 캐쉬를 위해서 어떤 방법을 사용할지에 대한 것인데, ReviewBoard에서 요구하는 방식을 그대로 써보자.


   - memcache 서버에 대한 설정인데, 왠만하면 그냥 그대로 쓰자.


   - 사용할 웹서버를 고르는 것인데, 우리는 이번에 apache를 사용하기로 했으므로 그렇게 선택하면 된다.


   - 웹서버에서 Python을 사용하기 위한 Loader를 고르는 것인데, 기본 추천값으로 사용하자.


   - 이번에 생성한 ReviewBoard의 site에서 사용할 관리자의 계정을 등록하면 된다.


   - 설치가 위와같이 진행이 된다.


   - 모두 끝났다.



11. Apache 설정

   - 위에서 필자와 같이 설정을 했으면 아래와 같이 진행을 해보자.

$ nano /var/www/review.whatwant.com/conf/apache-wsgi.conf

   - 위와 같이 ReviewBoard가 참고할 환경 설정 파일을 만들어 놓았다.

<VirtualHost *:80>
        ServerName 127.0.0.1
        DocumentRoot "/var/www/review.whatwant.com/htdocs"

        # Error handlers
        ErrorDocument 500 /errordocs/500.html

        WSGIPassAuthorization On
        WSGIScriptAlias "/" "/var/www/review.whatwant.com/htdocs/reviewboard.wsgi/"

        <Directory "/var/www/review.whatwant.com/htdocs">
                AllowOverride All
                Options -Indexes +FollowSymLinks
                Allow from all
        </Directory>

        # Prevent the server from processing or allowing the rendering of
        # certain file types.
        <Location "/media/uploaded">
                SetHandler None
                Options None

                AddType text/plain .html .htm .shtml .php .php3 .php4 .php5 .phps .asp
                AddType text/plain .pl .py .fcgi .cgi .phtml .phtm .pht .jsp .sh .rb

                <IfModule mod_php5.c>
                        php_flag engine off
                </IfModule>
        </Location>

        # Alias static media requests to filesystem
        Alias /media "/var/www/review.whatwant.com/htdocs/media"
        Alias /static "/var/www/review.whatwant.com/htdocs/static"
        Alias /errordocs "/var/www/review.whatwant.com/htdocs/errordocs"
        Alias /favicon.ico "/var/www/review.whatwant.com/htdocs/static/rb/images/favicon.png"
</VirtualHost>

   - 위와같이 친절하게 필요한 설정을 모두 제공을 해준다.
   - 필자는 위의 내용을 참고해서 그대로 이용하고자 한다. 포트만 변경해서... ^^

$ sudo nano /etc/apache2/sites-available/default

...
<VirtualHost *:8080>
위의 내용
</VirtualHost>

   - 포트를 추가하기 위해서는 다음의 작업도 수행해주어야 한다.

$ sudo nano /etc/apache2/ports.conf

...
NameVirtualHost *:8080
Listen 8080

   - 이제 apache2 재시작을 하자.

$ sudo service apache2 restart

   - 위와 같이 했는데, 다음과 같은 에러메시지가 보인다면, 다음의 포스트를 참고하자.
   - http://whatwant.tistory.com/440

$ sudo service apache2 restart
 * Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

 

12. 디렉토리 권한 설정

   - 몇 개의 디렉토리에 대해서는 권한을 부여해주어야 한다.

$ sudo chown -R www-data /var/www/review.whatwant.com/data
$ sudo chown -R www-data /var/www/review.whatwant.com/htdocs/media/ext



13. 설치 확인

   - 이제 잘 설치 되었는지 확인을 해보자.

   - 웹브라우저를 통해 [ http://localhost:8080 ]으로 접속을 하면 된다.


   - 로그인 화면이 떴다!!!!
   - 설치과정에서 입력한 계정으로 로그인을 하면 된다.



설치과정이 너무 길었으니... 사용을 위한 부분은 다른 포스팅으로 설명을 하기로 하겠다.
(실제로 포스팅을 위해서는 약 3일이 걸렸다... 몇 가지 확인을 위해서 이기도 하고, 개인적인 일도 있다보니 ^^)

반응형

Nginx 환경에서 gitweb 구동은 아직 성공은 못했다.
누군가 성공하신 분이 계시면 알려주시면 대단히 감사하겠다는....

일단 기본적인 사항에 대해서는 지난 포스팅을 참고하길 바란다.
     - http://whatwant.tistory.com/397


1. Git 준비 (gitweb 준비)

     - Git을 소스코드 설치를 하셨다면 기본적인 준비는 모두 되어있는 것이다.
     - http://whatwant.tistory.com/289



2. Apache2 준비

     - 간단하게 그냥 패키지로 설치하자.

$ sudo apt-get install apache2



3. 경로 정리

     - 개인적인 취향이 반영된 부분이지만... 여하튼 경로를 정리해보자.
     - git 을 소스설치한 경로는 다음과 같다. [ /srv/install/git/git-1.7.11.2 ]

$ cd /srv/www
$ sudo ln -s /srv/install/git/git-1.7.11.2/gitweb ./gitweb.whatwant.com



4. VirtualHost 생성

     - default 사이트는 삭제하고, 포트 변경해서 생성해보자.

$ cd /etc/apache2/sites-available
$ sudo nano ./gitweb

<VirtualHost *:8080>
        ServerAdmin whatwant@whatwant.com

        DocumentRoot /srv/www/gitweb.whatwant.com

        <Directory "/srv/www/gitweb.whatwant.com">

                DirectoryIndex gitweb.cgi
                Allow from all
                AllowOverride all
                Order allow,deny
                Options ExecCGI

                <Files gitweb.cgi>
                        SetHandler cgi-script
                </Files>

                SetEnv  GITWEB_CONFIG  /srv/www/gitweb.conf
        </Directory>

</VirtualHost>

     - 위 설정과 같이 8080 포트로 gitweb을 구동하고자 한다.

$ sudo nano /etc/apache2/ports.conf

NameVirtualHost *:8080
Listen 8080

     - sites 설정을 맞추자

$ cd /etc/apache2/sites-enabled
$ sudo rm -rf ./000-default
$ sudo ln -s ../sites-available/gitweb ./001-gitweb



5. gitweb.conf

     - gitweb 환경설정을 해보자.

$ sudo nano /srv/www/gitweb.conf

$git_temp = "/tmp";

# The directories where your projects are. Must not end with a slash.
$projectroot = "/srv/repositories";

$feature{'blame'}{'default'} = [1];
$feature{'highlight'}{'default'} = [1];



6. gitweb + gitolite

     - 기본적으로 gitolite를 적용한 환경에서 그냥 gitweb을 연결하면 testing.git repository밖에 안보인다.
     - 그래서 별도의 과정을 추가로 진행하여야 한다.

$ sudo usermod -a -G gitolite www-data
$ sudo chown -R git.www-data /srv/repositories
$ sudo chmod -R g+rx /srv/repositories

     - UMASK 기본 값을 변경해야 한다.
     - 이와 관련된 설정 파일은 gitolite를 설치한 repository를 관리하기 위한 계정에 있다.

$ sudo su - git
$ nano ./.gitolite.rc

    #UMASK                       =>  0077,
    UMASK                       =>  0027,


이제 8080 포트로 웹사이트 접속을 하면 된다~!!!

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

git blame (-e 옵션)  (0) 2012.07.29
git man  (0) 2012.07.25
Code Review - Gerrit (Install)  (12) 2012.07.07
[004] 당신은 Git을 어떻게 읽나요?  (0) 2012.06.28
[003] Git의 탄생 비화  (2) 2012.06.26

리눅스를 일반 데스크탑처럼, 워크스테이션으로 사용하더라도,
왠지 리눅스를 사용한다고 하면 Server라는 이미지를 버리기가 힘들다.

그리고 리눅스를 사용하다보면 종종 서버의 역할을 사용하게 되기도 한다.



뭐, 서론이 길었고... 리눅스를 사용하다보면 종종 내 리눅스의 상태를 모니터링하고 싶다는 욕구가 든다.
또 왠지 모니터링 화면을 보면 대단히 있어보이기도 하고....^^

그런데, 서버 어드민에 대한 학습을 하였거나 리눅스에 대해서 그 내부를 공부를 했거나 하였다면 모르겠지만,
그렇지 않다면, 모니터링 도구를 설치하는 것부터 많은 벽에 부딪치게 된다.



그런데, Ubuntu에서 재미있고, 편하게 사용할 수 있는 도구를 제공해주고 있다!
그 이름은 바로 "Munin" !!!

공식 사이트
   - http://munin-monitoring.org/

 Ubuntu의 Munin 소개
   - https://help.ubuntu.com/11.10/serverguide/C/munin.html



1. Install

   - 모니터링 도구로 Munin을 사용하는 이유는 바로 Ubuntu에서 패키지로 제공을 해주기 때문이다!!!


 $ sudo apt-get install munin munin-node

   - Munin은 두 가지로 구성되어 있다. Server 역할의 munin과 Client의 minin-node
   - Server의 역할은 munin-node로부터 정보를 얻어와서 웹페이지로 뿌려주는 것이다.

   - Client의 역할을 하는 munin-node는 클라이언트라고 보기보다는 이름 그대로 node라고 해야할 것 같다.
   - 모니터링을 하려는 대상에 심어놓는 모듈이라고 생각하면 될 것 같다.

   - 지금은 하나의 PC에 대해서 모니터링을 하면서 그곳에서 바로 웹으로 결과를 보여줄 것이다.
   - 그래서 하나의 PC에서 munin, munin-node 두가지를 모두 다 설치해버렸다.


2. munin

   - Server의 역할을 하는 munin의 환경 설정을 해보자.


 $ sudo nano /etc/munin/munin.conf


 [localhost.localdomain]
      address 127.0.0.1
      use_node_name yes

   - 지금은 자신이 설치된 PC의 것만 모니터링을 할 것이기 때문에 초기값을 그대로 사용해도 된다.

   - 즉, 여기서 설정하는 것은 어떤 node들을 모니터링할 것인가를 적어주는 부분이다.


3. munin-node

   - 여기에서 설정할 것은 누구한테 자신의 정보를 줄 것인지를 알려주어야 한다.


 $ sudo nano /etc/munin/munin-node.conf


allow ^127\.0\.0\.1$

   - node에서 Server로 정보를 보내주는 것이 아니라,
     Server가 정보를 내놓으라고 하면 node가 허용한 IP에 대해서만 응답을 하는 방식으로 이해하면 된다.

   - munin과 마찬가지로 기본값으로 그냥 사용하면 된다.




여기부터가 조금 생각을 해야하는 부분인데,
기본적으로 Munin은 Apache2 기반으로 운용이 된다.

그런데, 만약 nginx와 같은 다른 웹서버를 이미 사용을 하고 있다면?!
(내 블로그를 좋아하시는 분들이라면, 이미 Redmine을 사용하실 것이고 그러면.... Nginx를 사용할 것이고....
그러면 일반적인 방법으로 적용이 안될 것이고...

아래 부분은 전체를 한 번 다 살펴보고 나서 다시 셋팅하기를 바란다.

시행착오는 제가 미리 할테니,
여러분은 그걸 보고 올바른 길로만 걸어가시기를... ^^

(리눅스에서 설치같은거 하다가 실패하고 삭제하고 하면 왠지 지저분해지는 것 같잖아요 ^^)





4. apache

   - 모니터링 결과를 웹으로 보여주기 위해서 apache 설정을 해주어야 한다.


 $ sudo nano /etc/munin/apache.conf


   - 뭐 딱히 수정할 것은 없다.
   - 물론 특정 IP에만 모니터링을 허용한다던지, 다른 무언가를 원한다면 알아서 수정하면 된다 ^^


5. error

   - 일반적인 경우라면 위와 같이 바로 munin을 사용할 수 있겠지만...


 $ sudo service munin-node restart
 $ sudo service apache2 restart

   - 그런데, '머가필요해' 본인의 경우에는 apache2가 설치되어있지 않아서 서비스가 구동이 안된다.
   - 그러면, 설치하면 되겠지!?


 $ sudo apt-get install apache2

   - 그런데 !!!


   - 위를 보면 빨간 글씨로 [fail]이 보인다.
   - 80번 포트를 이미 다른 놈이 사용하고 있어서 구동하지 못하겠다고 앙알거리는 것이다.


6. munin-nginx-ubuntu

   - Munin을 Nginx 환경에서 구동하기 위해서는 조금 귀찮지만 몇 몇 과정을 거쳐야 한다.
   - https://github.com/jnstq/munin-nginx-ubuntu


7. Nginx

   - Munin을 위해서 필요한 사항들이 있는데, 확인을 해보고 없으면 nginx를 다시 컴파일 해야 한다.


 $ /opt/nginx/sbin/nginx -V

   - [--with-http_stub_status_module] 옵션이 보인다면 무관하지만, 없다면 Nginx를 다시 컴파일 해야 한다.


   - PCRE Library가 필요하니 다운로드 받자.
   - ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

 

 $ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
 $ tar zxvf ./pcre-8.30.tar.gz


   - Nginx를 다시 컴파일 하기 위해서 source를 다운로드 받아야 한다.
   - http://nginx.org/en/


 $ wget http://nginx.org/download/nginx-1.1.19.tar.gz
 $ tar zxvf ./nginx-1.1.19.tar.gz


   - 이제 Recompiling을 진행하여보자.


 $ cd ./nginx-1.1.19/
 $ /opt/nginx/sbin/nginx -V
 $ ./configure --prefix=/opt/nginx --with-http_ssl_module --with-cc-opt=-Wno-error --add-module=/srv/install/redmine/passenger/passenger-3.0.11/ext/nginx --with-pcre=../pcre-8.30/ --with-http_stub_status_module
 $ make
 $ sudo make install

   - ./configure 뒤의 옵션을 참조하기 위해서 [/opt/nginx/sbin/nginx -V]를 확인했다.
   - 그대로 복사해서 사용하고 뒤에 2가지만 추가하면 된다.
   - [ --with-pcre=../pcre-8.30/ --with-http_stub_status_module ]

   - 잘 설치되었는지 확인해보려면 nginx를 재시작하고 서비스 되고 있던 redmine이 잘 보이면 OK

 $ sudo /etc/init.d/nginx restart

   -그런데, 내가 잘 이해하지 못한 것이 있는지, 이렇게 restart를 해도 정말 restart가 안되는 것으로 보이기도...
   - process 추적을 해보던지 분석을 해야하지만, 귀찮아서 일단 스탑! ^^

   - nginx의 환경 파일을 다시 한 번 손 보자.

 $ sudo nano /opt/nginx/conf/nginx.conf


     server {
        listen  8000;
        server_name localhost:8000;

        location / {
            root /var/cache/munin/www;
        }
    }


   - 8000 번 포트를 사용하기 위해 위와 같은 내용을 추가한다.

 $ sudo /etc/init.d/nginx restart

   - 위와 같이 재시작을 하면 되어야 하는데...
   - 뭔가 안된다. 그럴 때엔 확실히 검증하기 위해서.... 재시작!!!... Ubuntu 를 통채로 재시작~!!!


   - 잘 된다~!!!
   - [ nginx restart ] 이 놈이 잘 적용이 안되는 것 같다.
   - 우분투의 재시작으로 적용이 가능하니 일단은 패스~


   - 특별히 뭔가를 하지 않아도 알아서 정보를 차근차근 모은다. 그냥 보면 된다 ^^

   - 주어진 데이타들을 분석하는 것은 각자의 몫~!!!




여기까지~^^

반응형

+ Recent posts