poolc라는 단어를 빼고 싶어서 다음과 같은 작업을 수행하고 싶다.
(일단 현재 상정하고 있는 배포 시나리오는 ndm 서버 추가 뿐이지만 확장 가능하면 더 좋으니까 그것도 고려를 한다)
1단계. yuzuki 라는 계정을 생성해서 사용한다.
어떤 host를 쓰더라도, /home/yuzuki/workspace/Yuzuki 같은 디렉토리를 사용하면 큰 문제 없을 것이다. 이것은 적용하기도 쉽고, 소스 하나로 여러 서버에 배포할 수 있으므로 일단의 문제는 해결한다. 고칠 것은 저 두 파일 뿐이고 나머지는 내가 수행하는 운영상의 변화 뿐. 여기까진 금방 한다.
2단계 Plan A. dpkg 배포할 수 있도록 한다
nginx의 케이스를 보면 대략 이런식으로 사용하고 있다.
nginx 라는 계정을 생성하고
/usr/sbin/ 에 nginx 실행파일, /etc/nginx/ 에 설정파일, /usr/share/nginx에 리소스파일들을 박고 /etc/init.d/ 에 서비스 등록을 한다.
/var/run/nginx.pid 에 pid를 보관하고 /var/log/nginx/ 에 로그를 남김.
mysql의 경우를 보면 데이터는 /var/lib/mysql 같은 곳에 저장하면 될 것 같다
이를 종합해서 Yuzuki에 적용한다 치면 대략 이렇게 되지 않을까 싶다.
yuzuki 라는 계정을 생성
prerequisite들을 apt-get으로 받아옴 (python-dev 등등)
/usr/share/yuzuki/env 에 virtualenv 설정, pip -r requirements.txt
프로젝트 내의 파일들을 /usr/share/yuzuki/ 안으로모조리 복붙
yuzuki_install.py를 실행하여 db 초기세팅 (인스톨 과정 중 사용 db 결정 및 정보입력 해야함)
/usr/bin/yuzuki 로 main.py의 심볼릭 링크 생성
mkdir /var/log/yuzuki, 로그를 여기에 쓰도록 지정함.
mkdir /var/lib/yuzuki 사용자 업로드 파일을 여기에 쓰도록 지정함.
/etc/init/ 에 yuzuki.conf 등록한 뒤 service start.
해결해야할 점.
index, about, favicon을 지금처럼 "poolc" "ndm" 같은 설정 기반으로 서빙하게 하면 안된다. poolc에 특수하게 사용되는 내용 자체는 따로 레포를 둬서 관리할 수 있게 변경해야 함.
yuzuki로 로그인 할 일 없을 테니 sudoer 파일은 없어도 될듯
설치 위치를 다르게 하면 다른 위치를 참조하게 하도록 설정파일을 템플리팅 하는 식으로 처리하나? 어떤 애들 소스코드 설치하고 그러면 /usr/local/bin 쪽에 깔리던데 이런 거 할 줄 모른다. 알아봐야 됨.
2단계 Plan B. distribute나 setuptools 같은 python 배포 체계를 이용한다.
문서 읽고 찾아보다가 재미없어서 때려 치웠다. 이런 웹페이지 같이 customizing이 가능해야 하는 케이스는 찾기가 쉽지 않은듯. 그래도 dpkg로 배포하는 것보단 쉽지 않을까 싶긴 하다.
c.f. 1 https://github.com/TintypeMolly/Yuzuki/blob/master/misc/yuzuki.conf c.f. 2 https://github.com/TintypeMolly/Yuzuki/blob/master/misc/yuzuki_sudoer
이 스크립트를 보면 디렉토리 참조를 다음과 같이 하고 있다.
이것을 좀 더 일반적인 장소(e.g.
/var
,/usr
)로 옮기고,poolc라는 단어를 빼고 싶어서 다음과 같은 작업을 수행하고 싶다. (일단 현재 상정하고 있는 배포 시나리오는 ndm 서버 추가 뿐이지만 확장 가능하면 더 좋으니까 그것도 고려를 한다)
1단계. yuzuki 라는 계정을 생성해서 사용한다.
어떤 host를 쓰더라도,
/home/yuzuki/workspace/Yuzuki
같은 디렉토리를 사용하면 큰 문제 없을 것이다. 이것은 적용하기도 쉽고, 소스 하나로 여러 서버에 배포할 수 있으므로 일단의 문제는 해결한다. 고칠 것은 저 두 파일 뿐이고 나머지는 내가 수행하는 운영상의 변화 뿐. 여기까진 금방 한다.2단계 Plan A. dpkg 배포할 수 있도록 한다 nginx의 케이스를 보면 대략 이런식으로 사용하고 있다.
nginx
라는 계정을 생성하고/usr/sbin/
에 nginx 실행파일,/etc/nginx/
에 설정파일,/usr/share/nginx
에 리소스파일들을 박고 /etc/init.d/ 에 서비스 등록을 한다./var/run/nginx.pid
에 pid를 보관하고/var/log/nginx/
에 로그를 남김.mysql의 경우를 보면 데이터는
/var/lib/mysql
같은 곳에 저장하면 될 것 같다 이를 종합해서 Yuzuki에 적용한다 치면 대략 이렇게 되지 않을까 싶다.yuzuki
라는 계정을 생성/usr/share/yuzuki/env
에 virtualenv 설정,pip -r requirements.txt
/usr/share/yuzuki/
안으로모조리 복붙yuzuki_install.py
를 실행하여 db 초기세팅 (인스톨 과정 중 사용 db 결정 및 정보입력 해야함)/usr/bin/yuzuki
로main.py
의 심볼릭 링크 생성mkdir /var/log/yuzuki
, 로그를 여기에 쓰도록 지정함.mkdir /var/lib/yuzuki
사용자 업로드 파일을 여기에 쓰도록 지정함./etc/init/
에yuzuki.conf
등록한 뒤 service start.해결해야할 점.
/usr/local/bin
쪽에 깔리던데 이런 거 할 줄 모른다. 알아봐야 됨.2단계 Plan B. distribute나 setuptools 같은 python 배포 체계를 이용한다.
문서 읽고 찾아보다가 재미없어서 때려 치웠다. 이런 웹페이지 같이 customizing이 가능해야 하는 케이스는 찾기가 쉽지 않은듯. 그래도 dpkg로 배포하는 것보단 쉽지 않을까 싶긴 하다.