What D. E.

D. E.는 Development Environment의 약자입니다.
그냥 개발 환경에 필요한 프로그램들의 셋팅에 관련한
글들을 정리하려고 따로 카테고리를 정했습니다. ^^

Fedora 9, 10 그리고 CentOs 5.x 버전을
기준으로 만들어 질 것입니다. ^^
각 프로그램에서 필요한 라이브러리나 기본 프로그램 들은
리눅스의 yum을 통해서 설치하여 사용할 것입니다.

소스 컴파일이 좋을때도 있지만,
어떤 상황에서든지 사용하려면..
이편이 좋을듯해서.. ^^
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by gwlee

2009/05/20 09:57 2009/05/20 09:57
Response
0 Trackbacks , 0 Comments
RSS :
http://thegreatgoodplace.com/tt/study/rss/response/138

Trackback URL : http://thegreatgoodplace.com/tt/study/trackback/138

Leave a comment

SVN+Apache

지난번 Trac와 SVN설치
SVN을 설치 한 후, 웹으로 접근하는 것을 테스트 안했었는데..
역시 오늘은 그것이 문제가 되서 Eclipse에서 snv repository가 등록이
안되어서 오늘은 그것에 대한 트러블 슈팅 아닌 트러블 슈팅에 대해서
잠시 적겠습니다.

일단 httpd.conf 수정
다은 두 모듈을 추가시켜 주어야 합니다.
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so


그리고 conf.d/svn.conf 수정
<Location /SVN/PATH/PROJECT_NAME>
 DAV svn
 SVNPath /SVN/PATH/PROJECT_NAME
 AuthType Basic
 AuthName "PROJECT NAME"
 AuthUserFile /SVN/PATH/conf/passwd
 Require valid-user
</Location>
※주의: AuthName이란 svnserve.conf파일의  realm = "PROJECT NAME" 부분의
PROJECT NAME을 넣어주시면 됩니다. AuthName을 안적을 경우에 문제가 생겨서
이부분을 넣어주니 문제가 없었습니다. 설정에 관련이 있는듯 합니다.

※참고: AuthUserFile은 저의 경우에는 원래 SVN의 passwd를 사용하니 안되서 Trac의
passwd 파일을 사용하니 잘 되는 것으로 보아 Trac와 SVN 연동시 그렇게 된것 같습니다.

이것과는 상관 있을지는 정확히 모르겠지만
chgrp -R apache /SVN/PATH/
-그룹을 Apache로 변경, Apache 서비스에서 접근 가능하도록 하기 위함.
chcon -R -t httpd_sys_content_t /SVN/PATH/
-Trac 설정시 언급한바와 같이 SELinux 설정으로 인한 접근 거부를 방지

chgrp/ chcon은 필수인지 선택인지는 저도 잘 모르겠습니다.

미리 다 변경후 위의 AuthName 라인을 추가해 주니 잘 작동하였습니다. ㅠㅠ









크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by gwlee

2009/05/19 20:13 2009/05/19 20:13
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://thegreatgoodplace.com/tt/study/rss/response/136

Trackback URL : http://thegreatgoodplace.com/tt/study/trackback/136

Leave a comment

Trac Plugin 설치


http://trac-hacks.org/ trac 플러스인 사이트

수동으로 설치하고자 하는 플러그인을 다운로드 받거나
easy_install을 이용해서 설치 하면 Trac에서 사용 가능 하다.

수동으로 Trac의 플러그인 설치 방법과 trac.ini 파일을 수정하여
Trac 사이트의 로고 변경 방법에 대한 글.

수동으로 Trac 플러그인 설치
설치하고자 하는 플러그인 다운로드 후 압축을 해제 후
setup.py가 있는 폴더로 이동
python setup.py bdist_egg
dist폴더에 egg파일이 생성

그 egg파일을 자신의 trac 홈페이지에 Admin 탭의 Plugins에서
Install Plugiin 해주면 된다.

그런후
trac-admin upgrade
trac-admin resync

httpd -k stop
httpd -k start 로 아파치 재시작

trac.ini 파일의 [components] 부분에 수동으로
추가를 해주는 분들도 있었지만..
그렇게 안해도 알아서들 upgrade, resync 해주고 나면
큰 문제 없이 [components]부분에 enable 라인이 추가되는듯.


Trac의 로고 이미지 변경
사용할 로고 이미지를 /Trac_PROJECT/htdocs 폴더에 복사한 후,
trac.ini 파일을 다음과 같이 수정해준다.
[header_logo]
alt = /그림이 없을경우 나오는 텍스트 문장/
height = -1
link = /your_url/
src = site/YOUR_LOGO_IMG_FILENAME
width = -1


출처:Subversion과 Trac을 이용한 프로젝트 관리


Trac Plug-in 설치시 다음과 같은 에러
Traceback (most recent call last):
  File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 406, in dispatch_request
    dispatcher.dispatch(req)
  File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 206, in dispatch
    req.hdf = HDFWrapper(loadpaths=chrome.get_all_templates_dirs())
  File "/usr/lib/python2.5/site-packages/trac/web/chrome.py", line 263, in get_all_templates_dirs
    dirs += provider.get_templates_dirs()
  File "build/bdist.linux-x86_64/egg/acct_mgr/web_ui.py", line 264, in get_templates_dirs
    return [resource_filename(__name__, 'templates')]
  File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 841, in resource_filename
    self, resource_name
  File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 1311, in get_resource_filename
    return self._extract_resource(manager, zip_path)
  File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 1318, in _extract_resource
    manager, os.path.join(zip_path, name)
  File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 1332, in _extract_resource
    self.egg_name, self._parts(zip_path)
  File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 921, in get_cache_path
    self.extraction_error()
  File "/usr/lib/python2.5/site-packages/pkg_resources.py", line 887, in extraction_error
    raise err
ExtractionError: Can't extract file(s) to egg cache
The following error occurred while trying to extract file(s) to the Python egg
cache:
  [Errno 13] 허가 거부: '/usr/lib/python2.5/site-packages/TracAccountManager-0.1.3dev_r5273-py2.5.egg-tmp'
The Python egg cache directory is currently set to:
  /usr/lib/python2.5/site-packages/
Perhaps your account does not have write access to this directory?  You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.
 
/etc/httpd/{conf|conf.d}/trac.conf 파일의 설정 중

<Location /trac>
    SetHandler mod_python
    SetEnv PYTHON_EGG_CACHE /usr/lib/python2.5/site-packages/
    PythonHandler trac.web.modpython_frontend 
    PythonOption TracEnvParentDir /YOUR_TRAC_DIRECTORY
    PythonOption TracUriRoot /trac
</Location>

Bold 효과로 된 문자열을 알맞게 변경 해주거나.
EGG_CACHE 환경 설정을 /etc/profile에 추가해주어야 한다고 한다.

Trac를 yum이 아닌 easy_install로 설치하였을 경우 이런 문제는 없었음. ^^







크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by gwlee

2009/05/11 09:16 2009/05/11 09:16
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://thegreatgoodplace.com/tt/study/rss/response/129

Trackback URL : http://thegreatgoodplace.com/tt/study/trackback/129

Leave a comment

Trac와 Subversion 설치

참조:  한울프로젝트 개발환경구축
참조:  한울프로젝트 Trac Trouble Shooting

Apache 2.2.11에 Trac와 Subversion 설치

yum을 사용하여 mod_python, Genshi, setuptools, Trac, Subversion 설치
yum을 이용한 설치와 chgrp, chmod를 제외한 작업은 일반 유저로 가능

yum을 이용한 Trac를 사용하여 셋팅하는 경우 에러가 발생하면
yum으로 설치한 Trac는 삭제한 후 easy_install Trac 명령어를 사용하여 새로 설치

ex) yum install mod_python 또는 yum install trac\*
trac관련 프로그램들은 모두 설치 가능, 능력것 사용하길 바랍니다. ㅠㅠ
추후에 esay_install을 이용하여 Trac plug-in 설치하지 말것.

Subversion
ex) /data/svn :프로젝트 폴더 /YOUR/PROJECT/SVN_DIRECTORY

svn 저장소 만들기
cd /YOUR/PROJECT/SVN_DIRECTORY
svnadmin create PROJECT_NAME --fs-type fsfs

svn 권한
vi /YOUR/PROJECT/SVN_DIRECTORY/PROJECT_NAME/conf/svnserve.conf

[general] 부분의 다음 라인에 대한 주석 제거
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository


svn유저만들기
vi /YOUR/PROJECT/SVN_DIRECTORY/PROJECT_NAME/conf/passwd
[users]
아이디 = 패스워드 형식으로 추가
user1 = 1234
user2 = 1234


svn 유저 권한
vi /YOUR/ PROJECT/SVN_DIRECTORY/PROJECT_NAME/conf/authz
[aliases]
[group]
admin= user1
users = user2
[/] #전제 svn영역에 대한 권한 설정
@admin = rw
@users = r
* =
[PROJECT_NAME:/] svn중 해당 프로젝트 영역에 대한 권한 설정
@admin = r
user1 = rw
* =

개인 혹은 그룹에 맞게 권한 설정
svn 서버 가동
svnserve -d -r /YOUR/SVN_PROJECT/DIRECOTRY/


Trac
ex) /data/trac :프로젝트 폴더 /YOUR/PROJECT/Trac_DIRECTORY

Trac 사이트 만들기
이미 svnadmin으로 svn repository를 만들어 놓았으므로,
trac 사이트는 쉽게 만들 수 있다.
cd /YOUR/PROJECT/Trac_DIRECTORY
trac-admin PROJECT_NAME initenv
1.생성할 프로젝트 이름을 입력한다. 프로젝트 이름 기입 
2.연결할 데이터베이스를 설정한다. 기본 설정을 사용하므로 그냥 엔터 
3.사용할 버전 관리 시스템 설정. SVN을 기본 설정 사용 할 것이므로 그냥 엔터
4.버전 관리 시스템 저장소 설정. 이미 SVN에서 만든 Repository를 지정할 것이므로,  /path/to/repos 에 /YOUR/PROJECT/SVN_DIECTORY/PROJECT_NAME으로 설정한다.
5.나머지 설정은 그냥 엔터

아파치 연동을 위한 폴더 그룹 설정
chgrp -R apache PROJECT_NAME/
cd PROJECT_NAME
chmod 775 db
chmod 775 db/trac.db

Trac 유저 및 패스워트 설정
cd /YOUR/PROJECT/Trac_DIRECTORY/PROJECT_NAME/conf/
htpasswd -c passwd USER_ID
New Password:
Re-type new password: 
기존의 패스워드 파일에 사용자를 추가하려면 -c option은 사용하지 않아도 된다.

Trac와 Apache 연동을 위한 conf 파일 설정
파일이름.conf 형식으로 파일 생성
/etc/httpd/conf.d/ 하위에 trac.conf 수정
trac.conf 파일이 없으면 새로 생성
<LocationMatch /trac>
    SetEnv TRAC_ENV /YOUR/PROJECT/Trac_DIRECTORY
</LocationMatch>

<IfModule mod_python.c>
<Location /trac>
    SetHandler mod_python
    SetEnv PYTHON_EGG_CACHE /usr/lib/python2.5/site-packages/
    PythonHandler trac.web.modpython_frontend  
    PythonOption TracEnvParentDir /YOUR/PROJECT/Trac_DIRECTORY
    PythonOption TracUriRoot /trac
</Location>

<Location /trac/PROJECT_NAME/login>
    AuthType Basic
    AuthName "Bioneer Pombe"
    AuthUserFile /YOUR/PROJECT/Trac_DIRECTORY/PROJECT_NAME/conf/passwd
    Require valid-user
</Location>

</IfModule>


Trac 관리자 계정 설정
trac의 계정중 관리자 계정으로 등록하고자 하는 계정을 Trac 관리자 계정으로 등록하는 방법
trac-admin /YOUR/PROJECT/Trac_DIRECTORY/PROJECT_NAME permission add USERID TRAC_ADMIN

Trac.ini 수정
vi /YOUR/PROJECT/Trac_DIRECTORY/PROJECT_NAME/conf/trac.ini

수정
[trac]
default_charset = utf-8
추가
[components]
webadmin.* = enabled
tracsearchall.* = enabled
tractimevisualizerplugin.* = enabled
worklog.* = enabled
tracrpc.* = enabled
tracdnd.* = enabled
burndown.* = enabled


Trac 변경 사항 적용 및 아파치 환경 설정 적용
cd /YOUR/PROJECT/Trac_DIRECTORY/
trac-admin PROJECT_NAME upgrade
trac-admin PROJECT_NAME resync
su
httpd -k stop
httpd -k start
※주의: httpd -k restart 나 apachectl restart 명령어는 적용안되는 듯.

위의 방법대로 셋팅한 경우
PROJECT_NAME의 Trac 사이트 주소는 http://localhost/trac/PROJECT_NAME/
Trac의 사이트 주소 http://localhost/trac/

Trac plugin 설치
http://trac-hacks.org에 다수의 플러그인 존재 설치 하고자 하는 플러그인을 다운받아
설치하면 Ok (그러나 문제 발생 가능성도 있으니 주의)
만약 문제가 발생하는 플러그인을 제거하려면 easy_install 사용하여 제거 가능

easy_install -m plugin_name

Trac 설치 및 설정 후 페이지가 안보이는 경우 해결 방법
1. 대부분의 문제는 SELinux로 인한 보안 문제일 것이다.
chcon -R system_u:object_r:httpd_sys_content_t:s0 /YOUR/PROJECT/Trac_DIRECTORY/
또는
chcon -R -t httpd_sys_content_t /YOUR/PROJECT/Trac_DIRECTORY/

2. (The user apache requires read _and_ write permission to the database file /var/trac/module_dev/db/trac.db and the directory it is located in.)

chcon -t httpd_sys_script_rw_t trac.db
chmod 777 /YOUR/PROJECT/Trac_DIRECTORY/PROJECT_NAME/db
chmod 666 /YOUR/PROJECT/Trac_DIRECTORY/PROJECT_NAME/db/trac.db
chown -R apache:apache /YOUR/PROJECT/Trac_DIRECTORY
httpd -k stop
httpd -k start

이 외의 문제에 대해서는 모르니 각자가 해결 한 후 포스팅 하세요~ ^^

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by gwlee

2009/05/09 10:43 2009/05/09 10:43
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://thegreatgoodplace.com/tt/study/rss/response/127

Trackback URL : http://thegreatgoodplace.com/tt/study/trackback/127

Leave a comment

Apache 2.2.10 + JBoss 5.x + SVN 1.5.6(+trac) [수정중]


기존 문서에 제시되어져 있는 구버전의 경우 현재에 잘 맞지않아
직접 테스트하여 작성하였습니다. 


OS: Linux Fedora 10 (x64)
환경설정만 잘 잡혀 있는 경우 JBoss는 문제없이 작동함.
#vi /etc/profile
export JAVA_HOME={JAVA_HOME}
export PATH=$PATH:$JAVA_HOME/bin
 
#source /etc/profile
 
 
Apache 2.2.10 (컴파일해서 사용)
$cd {아파치 다운 받은 폴더}
$./configure --prefix={APACHE_HOME} --enable-so --enable-expires \
--enable-headers --enable-proxy --enable-deflate --enable-rewrite \
--enable-ssl --enable-maintainer-mode --enable-dav --with-port=80
 
$make && make install
 
{APACHE_HOME}/conf/httpd.conf 수정
(자신의 환경에 맞게 설정 한 후 다음 작업)
Include conf/extra/httpd-info.conf //주석 제거

conf/extra/httpd-info.conf 파일 수정
<Location /server-status>

 SetHandler server-status

 Order deny,allow

 Deny from all

 Allow from {IP_ADDR}/{SUBNET_MASK} 127.0.0.1
//접근 허용할 IP내역 기입, 공백으로 구분

</Location>
 
 
Apache와 JBoss 연동을 위한 mod_jk
$cd {Tomcat-Connectors}/native
$./configure --with-apxs={APACHE_HOME}/bin/apxs
$make && make install
 
{APACHE_HOME}/conf/httpd.conf 수정
Include conf/mod-jk.conf //라인 추가
 
{APACHE_HOME}/conf/mod-jk.conf 파일 생성
LoadModule jk_module modules/mod_jk
 
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStamFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMountFile conf/uriworkermap.properties
 
{APACHE_HOME}/conf/workers.properties 파일 생성
worker.list={ANYNAME}
(worker 추가시 콤마(,)로 구분하여 추가 a,b,c)
 
worker.{ANYNAME}.port=8009
worker.{ANYNAME}.host=localhost
worker.{ANYNAME}.type=ajp13
 
{APACHE_HOME}/conf/uriworkermap.propertie 파일 생성
 /jmx-console={ANYNAME}
 /jmx-console/*={ANYNAME}
 /web-console={ANYNAME}
 /web-console/*={ANYNAME}
 
JBoss 5.x 설치
JBoss를 다운로드 받은 후 압축을 해제하여 나온 폴더를 {JBOSS_HOME}으로 함.
{JBOSS_HOME}/server/{SERVER_NAME}/deploy/jbossweb.sar/server.xml을 수정

<Connector protovol="HTTP/1.1" prot="8080" address"${jboss.bind.adress}"
  connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
         emptySessionPath="true" enableLookups="false" redirectPort="8443" />

      <Engine name="jboss.web" defaultHost="localhost" jvmRoute="{ANYNAME}" >

JBoss 5.0 MySQL설정
{JBOSS_HOME}/docs/examples/jca/안에 각종 DB설정 XML파일들이 존재함.
사용하고자 하는 DB의 xml파일을 사용하는 서버의 deploy폴더에 복사한다.
{JBOSS_HOME}/server/{SERVER_NAME}/deploy/
MySQL-DS.xml을 수정한다.
<connection-url>jdbc:mysql://mysql-hostname:3306/jbossdb</connection-url>
<user-name>x</user-name>
<password>y</password>

connection-url, user-name과 password 세부분의 정보를 알맞게 수정.

Subversion 1.5.6 설치
(default로 설치할 경우 /usr/{local|share} 사용하기 때문에 root 권한 필요, 혹은 /usr/{local|share} 소유자 변경)
$cd {SVN 다운 받은 폴더}
$./configure --prefix={SVN_HOME} --with-apxs={APACHE_HOME}/bin/apxs --with-apr={APACHE_HOME} --with-apr-util={APACHE_HOME}
$make && make install
$cd {SVN_HOME}
$./bin/svnadmin create {SVN_REPO} --fs-type fsfs
#chown -R {APACHE_USER}.{APACHE_GROUP} {SVN_REPO}
(사용할 SVN 저장소 생성하고 apache 유저/그룹에게 권한 부여)
 
svn을 사용할 httpd의 계정 {USER_ID} 생성
$cd {APACHE_HOME}/conf
$./../bin/htpasswd -c passwd {USER_ID}
New Password:
Re-type new pasword:
(위 과정인 {APACHE_HOME}/conf 폴더 밑에 passwd 파일 생성 추후에 svn을 사용할 httpd 계정 생성때에는 -c 옵션 불필요,
※주의 {APACHE_HOME}/conf 폴더 밑에서 htpasswd 파일 수행, htpasswd를 수행한 폴더에 passwd 파일 생성)
 
Subversion과 Apache 연동위한 httpd.conf 수정
apache로 svn 접속 주소: http://localhost/{SVN_REPO}
<Location /{SVN_REPO}>
 DAV svn
 SVNPath {SVN_HOME}/{SVN_REPO}
 AuthType Basic
 AuthName "blablabla"
 AuthUserFile {APACHE_HOME}/conf/passwd
 Require valid-user
</Location>
 
Trac 설치 및 설정
Trac의 경우 python으로 작성되었기에 파이썬이 없으면 사용 못함 (but 리눅스에는 python 2.4이상이 친절히 깔려있다.)
mod_python이 설치되어 있어야 하지만.. 크게 문제 없었음.
#python setup.py build
#python setup.py install
(python으로 생성하는 경우 /usr/{local|share}에 trac 폴더가 생성된다. 추후에 /usr/share/trac 밑의 폴더를 사용하게 되는데
TRAC_SHARE=/usr/share/trac/htdocs, 시스템마다 이 기본 위치는 바뀔 수 있다.)
 
trac.cgi 파일 복사
/usr/share/trac/cgi-bin/trac.cgi 파일을 {APACHE_HOME}/cgi-bin/ 밑으로 복사
 
trac home폴더 및 trac에서 사용할 저장소 생성
$mkdir {TRAC_HOME}
$cd {TRAC_HOME}
$trac-admin {TRAC_HOME}/{REPO_NAME} initenv
({REPO_NAME}과 {SVN_REPO}의 이름은 달라도 상관없음)
설치 과정에 필요한 정보를 묻는 과정은 엔터로 패스
마지막 부분에 [Path to Repository] 에서 {SVN_HOME}/{SVN_REPO} 입력
#chown -R {APACHE_USER}.{APACHE_GROUP} {TRAC_HOME}
 
trac와 아파치 연동을 위한 httpd.conf 수정
<Location /cgi-bin/trac.cgi>
 SetEnv TRAC_ENV "{TRAC_HOME}/{REPO_NAME}"
</Location>
 
<Location /cgi-bin/trac.cgi/login>
 AuthType Basic
 AuthName "blablabla"
 AuthUserFile {APACHE_HOME}/conf/passwd
 Require valid-user
</Location>
 
<Directory  {TRAC_SHARE}>
 Options Indexes MultiViews
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>
 
Trac 사용중 소스 코드에 한글이 포함되는 경우 깨져서 보일 것이다.
그냥 ini파일 수정 하면 된다.
{TRAC_HOME}/conf/trac.ini
#default_charset=iso-blablabla을
default_charset=utf-8 으로 수정
 
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by gwlee

2009/03/20 08:53 2009/03/20 08:53
, , , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://thegreatgoodplace.com/tt/study/rss/response/82

Trackback URL : http://thegreatgoodplace.com/tt/study/trackback/82

Leave a comment

CVS보다 SVN이 좋은 점


Subversion은 CVS에 비해서 장점이 많다.
1. 파일명 변경이 히스토리에 남는다.(CVS는 기존 파일을 삭제한 것으로 간주해버린다)
1. 원자적 커밋(모든 파일이 커밋되면 되는거고 아니면 모두 롤백)
1. 커밋 단위별 버저닝.(CVS는 각 파일별로 버전을 메기지만 SVN은 커밋단위로 버전을 메기기 때문에, 직전 커밋상태로 모든 파일을 되돌리는 것이 가능하다)

CVS도 SVN도 한번도 안써보고 SVN을 이번에 사용하는데
위안 삼기위해... 뭐 대충 이런 장점들이 있다고 하네요.. ㅋ
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by gwlee

2009/03/16 11:42 2009/03/16 11:42
,
Response
0 Trackbacks , 0 Comments
RSS :
http://thegreatgoodplace.com/tt/study/rss/response/88

Trackback URL : http://thegreatgoodplace.com/tt/study/trackback/88

Leave a comment

블로그 이미지

gwLee's Study story

- gwlee



Site Stats

Total hits:
49886
Today:
35
Yesterday:
72