[우분투] OSQA 라는 Q&A 시스템 꾸며보기 Computer Tip

피플웨어와 더불어 조엘 온 소프트웨어 라는 유명한 소프트웨어 관련 서적이 있습니다.
꽤 오래 전에 이 두권을 읽은 기억이 있는데,
특히나 이 조엘이라는 분은 자신의 블로그에서 발췌한 내용을 그대로 책으로 엮어놓은 것이었죠.
나름 바른 이야기를 잘 하고 있구나 느꼈는데요...

혹시 언제부터인가 구글에서 소프트웨어 개발에 관한
검색을 하면 스택오버플로우 라는 사이트가 상위권에 있는 것을 느끼셨습니까?
바로 조엘 아저씨가 이 싸이트를 만들었다는 이야기를 어디선가...들었습니다.
(혹시 아니면 지적해 주세요~~)

역시 소프트웨어 개발은 기계가 아닌 사람이 아는 것이고,
사람간의 관계 및 개별의 실력이 무척이나 중요하다고 본 것이 적중하지 않았나 싶습니다.

요즘에 필요에 따라 
이것과 유사하지만, 폐쇄적인,
사내의 Q&A 시스템을 꾸며보고 싶었습니다.

여러가지 중에서 선택한 것이 OSQA 라는 시스템입니다.
파이썬의 쟁고 프레임워크 (1.x) 로 구성되어 있고,
웹 환경에서 비교적 쉽고 편리하게 Q&A 시스템을 구현하도록 되어 있습니다.

그런데 이것이 쟁고의 특징이기도 한데, 설치가 쉽지 않다는 단점이 있습니다.
이번에 몇시간을 투자하여 이 시스템을 활용할 수 있게 되었기에,
(정확히는 세 번의 시행착오를 거치며, 
 저녁도 거르면서 네시간 반이 소요되었군요...)


아래와 같이 따라하시면 쉽게 설치하고 개별 OSQA 시스템을 구축해 보실 수 있을 것입니다.

0) 설치 시스템

Ubuntu 12.04 LTS 64bit Server

1) 준비작업

$ sudo apt-get update
$ sudo apt-get upgrade


2) 리눅스 사용자 추가

$ sudo adduser --home /home/osqa --shell /bin/bash osqa
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: password updated successfully
Changing the user information for osqa
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
정보가 올바릅니까? [Y/n]


3) MySql DB 관련

$ sudo apt-get install mysql-server mysql-client
<mysql root password input and confirm>
$ sudo mysql -u root -p
mysql> CREATE USER 'osqa'@'localhost' IDENTIFIED BY 'osqafoo';
mysql> CREATE DATABASE osqa DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON osqa.* to 'osqa'@'localhost';
mysql> quit


4)  작업 폴더 준비
 
$ sudo mkdir /srv/osqa.1
$ sudo chown osqa:osqa /srv/osqa.1


5) 파이썬 virtualenv 환경 구축

파이썬에서 virtualenv 라는 개념은 잘 이용하면 아주 유용합니다.
어떤 머신에서 동시에 여러 버전의 파이썬 인터프리터 및 해당 모듈 등이 
있는 각각의 애플리케이션이 실행된다고 할때,
각 사용자 혹은 환경 마다 해당 버전으로 자연스럽게 수행된다고 보면 됩니다.

$ sudo apt-get install build-essential libmysqlclient15-dev python-dev python-setuptools python-virtualenv
$ su - osqa
$ cd /srv/osqa.1/
$ virtualenv ./
$ source /srv/osqa.1/bin/activate
$ easy_install django==1.3 south MarkDown html5lib ElementTree ipython
$ easy_install -U distribute
$ pip install MySQL-python
$ python -c "import django ; print django.get_version()"
1.3
위와 같은 결과가 나오면 정상으로 설치된 것입니다.


6) OSQA 설치

6.1) 소스 구하기

$ sudo apt-get install subversion
$ su - osqa
$ cd /srv/osqa.1
$ svn co http://svn.osqa.net/svnroot/osqa/trunk/ osqa

6.2) Configure

$ su - osqa
$ cd /srv/osqa.1/osqa
$ cp settings_local.py.dist settings_local.py

IP가 10.16.10.10 인 경우

$ vi settings_local.py
INTERNAL_IPS = ('127.0.0.1','10.16.10.10')
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'osqa',
        'USER': 'osqa',
        'PASSWORD': 'osqafoo',
        'HOST': '',
        'PORT': '',
    }
}
APP_URL = 'http://10.16.10.10'
TIME_ZONE = 'Asia/Seoul'
LANGUAGE_CODE = 'ko'
DJANGO_VERSION = 1.3


6.3) OSQA DB 설정 및 로컬 테스트

$ su - osqa
$ cd /srv/osqa.1/osqa
$ source /srv/osqa.1/bin/activate
$ cd /srv/osqa.1/osqa/
$ python manage.py syncdb --all
...
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): no

$ python manage.py migrate forum --fake
$ python manage.py runserver 10.16.10.10:8888


위와 같은 화면이 감격스럽게 나타납니다~

일단 최초 account를 생성합니다.
최초 생성하는 사용자는 OSQA 관리자입니다.

위와 같이 정보를 넣고 "Create Account" 합니다.

그러면 위와 같이 이메일로 보냈다는 메시지가 나타나는데, 상단 이메일 설정 링크를 누릅니다.

개별 이메일 서버를 지정해도 되고 아니면, 쥐메일을 이용한다면 위와 같은 식으로 정보를 넣고, "저장" 합니다.

상단의 "Test"를 눌러 보냈다는 메시지가 나타나고, 얼마 있지 않아...

음... 메일이 도착하였군요~

최초 관리자 계정의 관리자 화면입니다. 오른편에 많은 설정을 할 수 있군요...

테스트를 위해서 다른 일반 계정을 만들어 봅니다~

이곳에서 상단의 계정이름(예로 hotmc) 를 선택하면,

Not validated 라고 나오는군요...

실제 다른 계정의 이메일 주소를 눌러 활성화 시키면...

이런 식으로 확인되었다 나타납니다.

제일 중요한 것이 질문을 해야겠죠?

위와 같이 입력하고 하단의 "Ask your question"을 눌렀더니만...

나름 너무 심플한 제목을 넣으면 안된다 하네요~

정상적으로 질문이 올라왔구여~

자기 질문에 자기가 답을 해도 됩니다.

잘 올라갔구요~

이젠 다른 사용자로 로그인하여 답을 달아 본 내용입니다... (실제로는 여러 명이 질문과 답을 하게 되겠지요~)


이상과 같이 단일 테스트 OK!


7) OSQA를 아파치 웹서버의 WSGI 인터페이스를 통한 서비스 제공

쉽게 이야기 하여 장고 앱을 아파치를 통하여 서비스화 하는 것입니다.

$ sudo apt-get install libapache2-mod-wsgi
$ sudo chown -R www-data:www-data /srv/osqa.1/osqa/log/
$ sudo chown -R www-data:www-data /srv/osqa.1/osqa/forum/upfiles/
$ su - osqa
$ cd /srv/osqa.1/osqa
$ cp osqa.wsgi.dist osqa.wsgi
$ vi osqa.wsgi
import os
import sys
# activate virtualenv
activate_this = '/srv/osqa.1/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
# django normal setup
sys.path.append('/srv/osqa.1')
sys.path.append('/srv/osqa.1/osqa')


$ sudo vi /etc/apache2/sites-available/default
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /srv/osqa.1/osqa/forum
        Alias /m/ /srv/osqa.1/osqa/forum/skins/
        Alias /upfiles/ /srv/osqa.1/osqa/forum/upfiles/
        <Directory /srv/osqa.1/osqa/forum/skins>
                Order allow,deny
                allow from all
        </Directory>
        WSGIScriptAlias / /srv/osqa.1/osqa/osqa.wsgi
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

$ sudo service apache2 restart


휴우... 꼬박 삼십분을 매달려 이 글을 작성했네요~~


어느 분께는 도움이 되셨기를 바랍니다...


핑백

  • 지훈현서 : [Docker-AskBot] 오픈소스 Q&A 시스템 2017-05-27 15:51:51 #

    ... 예전에 오픈소스로 된 스택오버플로우와 같은 시스템을사내에 적용하려고 했던 적이 있습니다. 그래서 찾았던 것이 OSQA라는 것이었구요.(OSQA 우분투에 설치해서 운영하기 참조) 헌데 OSQA용 Docker가 있는가 살펴보았더니 잘 나오지 않는 것이었습니다. 또한 해당 소스를 확인하니, 어찌된 일인지 7년전에 마지막 ... more

덧글

  • 미소 2014/01/17 11:19 # 삭제 답글

    초보자가 설치해서 사용하기엔 무리가 있겠죠? 이뻐보여서 설치해보고 싶은데..ㅠㅠ
  • 지훈현서아빠 2014/01/19 15:55 #

    아마도 하나하나 따라가시다가 막히는 것은 또 해결하시고... 해서 하시면
    비교적 다른 설명보다는 쉽게 하실 수 있을거여요~~^^
  • Hyunho 2015/03/18 23:39 # 삭제 답글

    좋은 글 감사합니다. 현재도 잘 사용하고 계신지 여쭤보고 싶습니다. :)
    최근 기준으로 더 좋은 무료 clone (of stackoverflow)가 있을지요?
  • 지훈현서아빠 2015/03/19 09:48 #

    글쎄요.. 아직 더 좋은 대안을 찾지 못한 상태입니다~~
    더 좋은 대안을 혹시 찾으시면 알려주셔요... ^^
    감사합니다.
  • 나그네 2015/03/26 16:07 # 삭제 답글

    그 조엘이 그 조엘 맞습니다. (Joel Spolsky)
    http://stackexchange.com/about 보시면 2008년 Stack Overflow 로 시작해서
    현재의 Stack Exchange, 거대한 형태로 발전하기까지의 연혁이 나와있습니다.
    저도 궁금해져서 찾아봤네요.. ㅎㅎ
  • 지훈현서아빠 2015/03/26 22:45 #

    좋은 정보 알려주셔서 감사드립니다~~ ^^
댓글 입력 영역

구글애드텍스트