본문 바로가기

Web

django 1.5를 KT ucloud 서버에 올리기

https://ucloudbiz.olleh.com/


위 사이트를 방문하면 KT에서 제공하는 ucloud서비스를 1년간 무상으로 사용해 볼 수 있다. 실제로 어떤 서비스를 하기에는 부족하지만, 개발버젼으로 실제 서비스에 올리기전에 테스트를 해볼 수 있을 정도는 될듯하다.


Django에서 보통 개발을 할때 처음부터 apache 서버를 이용하지는 않을것이다. 이미 내부에 http 서버가 내장되어 있기때문에, 간단한 명령하나로 localhost에서 테스트는 이루어 진다. 하지만, 실제로 서비스를 그대로 올려서 사용하지는 않을것이다. 사용하는 database에 맞게 설정을 변경 하거나, 보안 관련 설정 및 성능 테스트에따라 추가 패키지 설치나 연동이 필요할 것이기 때문이다.


일단 개발이 완료된 django 서비스와 ucloud에 서비스 신청(ubuntu 11.04)이 완료되었다고 하자.


설치


* ucloud 서비스 신청이 완료되었으면 80과 22번 포트를 포트포워딩한다. 그런다음, 서버에 ssh로 접속한다.


ssh root@<할당받은 ip>


그런다음 아래의 과정대로 설치를 진행한다. 


(1) python 2.7 설치  ---> ucloud서버에 이미 설치 되어 있음. 

(2) pip로 설치 ---> sudo apt-get install python-pip 

(3) django 1.5.1 재설치 ---> pip install Django==1.5.1 

(4) apache2 설치전에 한번 갱신  ---> sudo apt-get update 

(5) apache2 설치  ---> sudo apt-get install apache2 

(6) ucloud에서 port forwarding으로 80 port open 

(7) mod-wgi 설치  ---> sudo apt-get install libapache2-mod-wsgi 

(8) /etc/apache2/sites-available 에 <만든 django 사이트명>파일을 추가하고 내용 입력 (django + apache 연동하기 위한 설정)

(9) wsgi enable  ---> sudo a2enmod wsgi 

(10) default사이트를 해제함  ---> sudo a2dissite default

(11) sudo a2ensite <만든 django 사이트명>

(12) 개발한 django 프로그램을 ucloud 서버로 복사한다. (본인의 경우는 개발용 svn서버에 업로드된 소스를 ucloud서버로 내려받음.)

(13) sudo service apache2 reload

(14) sudo service apache2 restart


===> 여기까지 모든 설정이 완료되었으면, 기본적인 설치는 모두 끝. 이제 세부 설정을 해야한다.


설정


(1) settings.py에서 database 설정을 변경한다. 외부에 database가 있다면 해당 주소와 아이디, 비밀번호 설정을 변경해야 한다. 당연히 mysql 서버의 경우에는 별도로 db서버에서 database를 생성해 줘야 한다.

(2) python manage.py syncdb로 데이터베이스를 생성한다.

(3) settings.py 에서 ALLOWED_HOSTS = ['*']를 설정한다. 실제로 상용 서비스를 할때에는 ['*']를 하면 안되고, * 대신에 사이트명으로 변경해야 한다.

  (참고:https://docs.djangoproject.com/en/1.5/releases/1.5/#allowed-hosts-required-in-production)


위 처럼 설정하면 사이트가 제대로 뜬다.


주의 및 참고


(1) 설정에 따라 500 Internal Server Error 가 뜬다. (예, DEBUG=False 의 경우, database가 생성이 안된경우등..) 구글링을 통해서 해결을 해야할 것같다.