2016-08-09 611 views
2

그래서이 Python 피라미드 기반 응용 프로그램이 있고 개발 워크 플로는 기본적으로 변경된 파일을 프로덕션 영역에 직접 업로드하는 것이 었습니다.Python 피라미드 프로젝트의 개발 인스턴스 만들기

출시가 가까 이서 분명히 더 이상 작동하지 않을 것입니다.

필자는 연결 문자열과 development.ini를 편집하고 개발 인스턴스를 보조 데이터베이스로 지정할 수있었습니다.

이제 작업을 수행 할 수있는 곳에서 프로젝트의 다른 복사본을 만드는 방법을 알아 내고 변경 사항을 실제로 적용해야합니다.

처음에는 프로젝트 디렉토리의 복사본을 다른 위치로 만들고 새로운 위치를 가리키는 다른 인수로 실행할 수 있다고 생각했습니다. 그것은 작동하지 않았다.

그런 다음 기본적으로 myproject-dev라는 완전히 새로운 프로젝트를 설정했습니다.

나는 pcreate를 사용한 다음 setup.py를 개발 한 다음 프로젝트에서 내 development.ini를 복사하고 myproject 대신 myproject-dev에 대한 다양한 참조를 신중하게 편집했습니다. 그런 다음 는 initialize_myproject-dev_db 마지막으로

/var/www/projects/myproject/development.ini, 나는 모든 것이 제대로 작동하는지 멋진 피라미드 시작 페이지를 얻을.

나는 그저 프로젝트 디렉토리의 모든 것을 날려 버리고 메인 프로젝트 파일을 복사 할 수 있다고 생각했지만 많은 것들이 그렇지 않다는 것을 알았을 때 내 위장 구덩이에서 그 느낌을 얻었다. 정적 URL처럼 작동합니다.

필자는 포함 된 myproject와 정적 URL을 참조하고 있으며, 누가 그 밖에 알고 있는지를 알고 있습니다.

이 아이디어가 효과가 없을 것이라고 생각합니다. 지금은 포기했습니다.

사람들이 파이썬 피라미드 프로젝트의 개발 인스턴스를 설정하는 방법에 대한 아이디어를 누구에게 줄 수 있습니까?

+0

'/ var/www/projects/myproject/development.ini' 경로가 걱정됩니다 - http://yoursite.com/projects/myproject/development.ini로 이동하면 나에게 표시됩니다. 해당 파일의 내용, 데이터베이스 암호 및 모든 내용? – Sergey

+0

아니요, 저는 PHP에서 왔으며 저에게 의미가있는 위치였습니다. 나는 그것이 정말로 어디에서든지 갈 수 있다는 것을 알게되었습니다. Python 가상 환경에 대한 전체 경로를 사용하여 모든 것을 실행하고 있습니다. 모든 것이 WSGI에 의해 제공되며 WSGI 서버를 실행하지 않고는 아무 것도 얻을 수 없습니다. –

답변

2

먼저해야 할 일은 버전 관리가 프로젝트의 경우입니다. 자식을 사용하는 것이 좋습니다.

개발할 때 응용 프로그램의 변경 사항을 관리 할 때 얻을 수있는 이점 외에도 개발자 간 또는 프로덕션 배포시 복사본을 쉽게 공유 할 수 있습니다. 사실, 생산은 단지 귀하의 개발 인스턴스와 마찬가지로 프로젝트의 git clone 일 수 있습니다.

둘째, 파이썬 라이브러리 경로에 프로젝트를 설치해야합니다. 이것이 모든 importinclude이 작동하는 방법입니다.

virtualenv 또는 pew과 함께 가상 환경을 만들어 다른 시스템 및 다른 응용 프로그램과 "격리"되도록하는 것이 좋습니다.

프로젝트에 setup.py 스크립트가있을 수 있습니다. 그렇지 않은 경우 create one. 그런 다음 프로덕션에 pip install . 또는 pip install -e .으로 프로젝트를 설치하십시오.여기

+0

팁을 가져 주셔서 감사합니다. 나는 실제로 소스 컨트롤에있는 프로젝트를 가지고 있고 모든 파이썬 라이브러리는 가상 환경에 설치되어있다. myproject.models.users에서 myproject.models.meta 수입 DBSession 에서 이 myproject.models에서 사용자 를 가져옵니다 문제는 내가 오기 모델을있을 때, 예를 들어, 다양한 장소에서 프로젝트 이름을 참조해야한다는 것입니다 $ {request.static_url (myproject라는 : 정적/관리자/CSS/main.css가 ')} 난 그냥 배포 중에 통과 및 검색 및 교체를 시작할 수 없습니다 .users 정적 참조에 직원에게 또한 과를 가져 내 코드. –

+0

@JeremyT : 각각 별도의 가상 환경이 필요하기 때문에 각각의 개별 myproject 모듈 (및 앱이 사용하는 다른 라이브러리의 다른 버전)을 가질 수 있습니다./virtualenv에/대신에'zc.buildout'을 볼 수 있습니다. 또한 git을 통해 배포하는 대신 'fabric'을 살펴보십시오 – Sergey

+0

@ Sergey는 그 점을 두려워했지만 의미가 있습니다. 그 가상 환경을 설정하는 데 영원히 걸렸습니다. –

1

내가 내 마지막 피라미드 응용 프로그램 관리 방법은 다음과 같습니다

내가 가진를 모두 development.iniproduction.ini. 로컬 개발을위한 다른 하나, 우리의 "테스트"시스템을위한 것, 그리고 프로덕션을위한 것 중 하나는 실제로 다른 하나에 development.local.ini을 가지고있었습니다. 버전 관리를 위해 git을 사용했고 프로덕션 배포를위한 기본 분기를 사용했습니다. 내 찌르다 서버에서 나는 가상 환경 등을 만들었고 내 메인 브랜치를 가져 와서 production.ini 설정 파일을 사용하여 실행했다. 업데이트는 기본적으로 virtualenv로 돌아가서 repo에서 최신 업데이트를 가져온 다음 피라미드 서버를 다시 시작하는 것과 관련이 있습니다.