[오늘의 삽질]WRT54G에는 버전이 2개?

동아리에서 사용하는 공유기가 wrt54g이다. 최근에 누군가 공유기가 잘 끊긴다고 펌웨어를 업글한다고 하고 업글을 했다. 그런데 펌웨어업그레이드를 하고나서부터 공유기가 좀 이상해졌다. 하루동안은 잘 작동하고서 이후에는 공유기의 역할을 수행하지 못하더라. 공유기에 물린 컴퓨터끼리는 소통이 되는데 인터넷으로는 나갈수 없고, 공유기 자체에 달린 테스트로는 공유기에서는 외부로 핑을 보낼수 있고...한마디로 유무선공유기가 인트라넷이 됐더라..

gg치고 어차피 오래된 공유기 새로살까..하다가 설치한 펌웨어 이름이 WRT54GV4.0_4.21.1_US_code.bin인것과 wrt54g라는 이름의 공유기가 오래전부터 지금까지 생산되고 있던점이 이상하더라. 그래서 좀 찾아봤더니 WRT54G에는 2개의 버전 붙는다는 걸 알았다.

하나는 하드웨어의 버전이다. WRT54G v2.2, WRT54G v4, WRT54G v8...같은 식으로 붙으면서 하드웨어 자체의 버전을 나타낸다. 즉, WRT54G라는 이름을 달고 계속 하드웨어가 발전해 온 것이다.

또다른 버전은 펌웨어 버전이다. WRT54GV4.0_4.21.1_US_code.bin를 보면 하드웨어 버전을 제외한 4.21.1이 펌웨어 버전이다.

이쯤되니까 대체 왜 공유기가 맛이갔는지 알겠더라. 동아리에 설치된 wrt54g는 v2.2인데 업그레이드한 펌웨어가 v4용이니까 제대로 동작할수 없었던거 같다. wrt54g v2.2용 펌웨어를 구해다가 올리니까 이젠 잘 돌아간다.

그나자나 이젠 802.11n 규격도 표준이 정해졌겠다, 공유기를 새로 사는것도 고려해봐야겠다.

apache 서버 에러페이지 바꾸기 + 예제 에러 짤방 리눅스

일단은 젠투 기준으로 작성했다. 다른 배포판에서는 설정파일이 다를수 있다

/etc/apache2/modules.d/00_error_documents.conf

위쪽에 보면 다음과 같은 내용이 있다.

#ErrorDocument 404 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html

다음과 같은 형식이다
ErrorDocument <ErrorCode> ("Message"|"/errorPagePath"|url)

알아서 적절한 것을 에러번호에 적절한 페이지를 할당하면 된다

내 경우는 이미지를 띄우기 위해서 ErrorDocument 404 "/OdukError/404.gif"같은 식으로 설정했다

그럼 보너스로 에러페이지에 사용가능한 이미지 예제이다






mod_wsgi를 사용해서 django 배포하기 리눅스

(내가 젠투에서 작업한 관계로 젠투를 기준으로 설명했다. 다른 배포판에서는 설정파일의 위치, 이름이 약간 달라질수 있다)

django 공식홈페이지에 가면 3가지 배포방법(apache + mod_wsgi, apache + mod_python, fastCGI,,,)를 설명해놨다. 문서에서는 이중에서 apache + mod_wsgi를 추천하더라. 그래서 mod_wsgi로 삽질하기로 했다

일단 mod_wsgi를 준비한다.
emerge apache mod_wsgi

mod_wsgi를 설치한 후에 아파치에 몇가지 설정을 건드린다
/etc/conf.d/apache2에서 APACHE2_OPTS항목에 "-D WSGI"를 추가한다
/etc/apache2/00_default_vhost.conf<VirtualHost>와 </VirtualHost>사이의 적당한 곳에 다음을 추가한다

<Dirctrory /var/www/wsgi-scripts>
order allow,deny
Allow from all
</Directory>

django의 배포 경로도 설정해야한다
/etc/apache2/modules.d/70_mod_wsgi.conf에 다음을 추가한다

WSGIScriptAlias /pbc /var/www/wsgi-scripts/pbc.wsgi

pbc는 내가 배포하고자 하는 django project 명이다. 접속 경로는 http://server-url/pbc로 설정했다. 맨 뒤에 wsgi스크립트의 위치는 아까 apache설정파일에 넣은 /var/www/wsgi-scripts/ 안에 위치하면 된다

일단 wsgi가 제대로 설정되었는지부터 테스트해보자
/var/www/wsgi-scripts/pbc.wsgi를 다음과 같은 내용으로 만들자

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

그리고 아파치를 재장전한다
apache2ctl restart

wsgi설정이 제대로 끝났는지 일단 확인해보자
http://server-url/pbc로 접속했을때 뭔가 뜨면 wsgi설정은 제대로 된것이다. 뭔가 제대로 된게 안뜨면 http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide를 참고해서 설정을 확인한다

wsgi가 잘 돌아가면 django project랑 연동한다
/var/www/wsgi-scripts/pbc.wsgi의 내용을 다음과 같이 고친다
import os
import sys

sys.path.append('/home/foripperz/pbc/trunk')

os.environ['DJANGO_SETTINGS_MODULE'] = 'pbc.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

path설정할때는 django project가 존재하는 디렉토리를 적으면 된다. 내 경우, django project인 pbc의 실제 위치가 /home/foripperz/pbc/trunk/pbc이기 때문에 위에 처럼 설정한 것이다. 다음줄의 setting도 'djangoProjectName.settings'로 바꿔주면 된다

그리고 아파치를 재시작한다

http://server-url/pbc 다시 접속했을때 만든게 뜨면 성공이다

p.s. : 공식 문서에서는 img, css같은 static media는 별도의 서버를 돌려서 서비스하는것을 추천하더라. 그래서 난 lighttpd를 이미지 서버로 쓰기로 했다. 만약 static media도 apache로 서비스 하고 싶은 경우는 문서를 참고하라.

참고문서
http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
http://code.google.com/p/modwsgi/

탭? 스페이스? 난 둘다! 코딩


진짜로 탭, 스페이스 섞어쓴 코드 보면 누구라도 짠사람 패고 싶을거다 -_-

http://www.emacswiki.org/emacs/SmartTabs

coLinux설치(배포판:우분투) + 네트워크 설정하기 리눅스

andlinux를 리눅스용 gui프로그램을 실행시키면 창 테두리가 윈도우를 따라가는 것이 마음에 안들어서 colinux + vnc로 재설치하기로 했다. coLinux는 andLinux와 다르게 설치시에 기본 배포판을 어떤걸로 할수 있는지 고를수 있는데, 내 경우 우분투를 쓰기로 했다. 그런데 coLinux의 설정 관련 문서의 대부분이 Fedora가 기준이고 또한, 구시대의 설정파일로 설명한 것이 대부분인 것에 불만이 생겨서 귀찮지만 삽질후 대충 정리해보았다.



coLinux 설치


coLlinux 공식사이트에서 0.7.4-linux-2.6.22.18Ubuntu-9.04-1gb.7z를 받았다. coLinux를 설치하기 전에 WinPCap를 깔아야한다. 공식사이트에서 받아서 깐다


coLinux 셋업파일을 실행시키고 next를 누르다가 Choose Components가 나오면 Root Filesystem image Download를 해제한다. 아까 받아놓은 우분츄 이미지를 대신 쓰니까 받을 필요가 없는 것이다. 이것을 제외하고는 계속 next만 누르면 될것이다. 이때, 설치경로는 알아서 기억하도록 한다.



윈도우에서 coLinux 기초 설정


Ubuntu-9.04-1gb.7z를 압축풀면 Ubuntu-9.04.ext3.1gb.fs라는 파일이 생긴다. 이를 아까 coLinux를 깔았던 디렉토리에 넣는다. 기본값은 C:\Program Files\coLinux일 것이다. 하지만 나는 D:\coLinux에 colinux를 깐 관계로 앞으로의 설명은 d:\coLinux에 깔았다는 가정하에 진행한다.


coLinux를 설치한 디렉토리에 example.conf라는 파일이 있다. 이를 열어서 아래를 참고해서 적절히 고친다



# File contains the root file system.
# Download and extract preconfigured file from SF "Images for 2.6".
cobd0="d:\coLinux\Ubuntu-9.04.ext3.1gb.fs"

# Swap device, should be an empty file with 128..512MB.
#cobd1="c:\coLinux\swap_device"

# Slirp for internet connection (outgoing)
# Inside running coLinux configure eth0 with this static settings:
#ipaddress 10.0.2.15   broadcast  10.0.2.255   netmask 255.255.255.0
#gateway   10.0.2.2    nameserver 10.0.2.3
eth0=slirp

# Tuntap as private network between guest and host on second linux device
eth1=tuntap,"로컬 영역 연결 3"

참고로 eth0은 외부로 나갈때 사용하기로 했고(coLinux->internet), 윈도우랑 소통할때는 eth1을 쓰기로 했다(coLinux <-> windows). 로컬 영역 연결 3은 네트워크 설정하기를 참고하도록



윈도우에서 네트워크 설정하기


작성하기 귀찮은 관계로 coLinux에서 네트워크 설정하기를 참고한다. start-Fedora-10.bat 파일의 eth0 항목 수정하기전까지 참고해서 따라한다.

리눅스에서의 설정


대충 설정이 끝났다. coLinux를 깐 디렉토리에 다음과 같이 bat파일 하나를 만들고 이것을 실행시킨다.

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=512 cobd0="d:\coLinux\Ubuntu-9.04.ext3.1gb.fs" root=/dev/cobd0 eth0=slirp eth1=tuntap,"로컬 영역 연결 3"" ro

만든 bat를 실행하면 colinux가 뜬다. 이제 네트워크 설정을 수행하자. 훼도라에는 system-config-network를 통해서 네트워크 설정을 할수있지만 우분츄!(정확히는 데비안계열)에서는 다른 방법으로 네트워크 설정을 한다. /etc/network/interfaces라는 파일을 고치면 된다. 이 파일을 아래처럼 고친다

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 10.0.2.15
broadcast 10.0.2.255
netmask 255.255.255.0
gateway 10.0.2.2
nameserver 10.0.2.3

iface eth1 inet static
address 192.168.37.20
netmask 255.255.255.0

그리고 coLinux를 재시작하면 잘 돌아갈 것이다. 참고로 윈도우에서 coLinux로 접속할때는 192.168.37.20을 사용하면 된다

1 2 3 4 5 6 7 8