글 작성자: 근삼이

본 글은 PyCharm Enterprise, Docker를 활용하였으며,
본 문서의 기능을 테스트하기 위해서는 PyCharm Enterprise의 기능이 필요합니다.


Server Setting

필요요소

  • Docker가 설치된 리눅스 서버

본래 PyCharm remote server의 기능을 이용하기 위해서는 SSH서버, python 인터프리터 만 정상적으로 설치되고 실행 된다면 상관없다. 하지만 본 내용은 해당 기능을 간편하게 테스트 해보기 위한 자료로, 미리 구성 된 환경을 이용하기 위해 Docker가 필요하다.

Python server 환경 실행

다음 도커 명령어를 실행하여 미리 구성된 파이썬 환경을 구동한다. 해당 도커 이미지에는 SSH서버, Django 프레임워크를 비롯하여 기본적인 Django 웹 서버를 구동할수 있는 환경이 구성되어 있다.

docker run -dit -p 2222:22 -p 8888:80 --rm --name pycharm-test geunsam2/django:test

22포트 : SSH 서버
80포트 : Django 웹서버 이다.
위의 예시 명령어를 통해 외부로 노출되는 포트는 2222 , 8888 이므로 본인의 포트 여유 상황에 맞게 명령어를 수정하여 실행할 수 있다.
(위의 포트들을 변경하여 실행하게 되면, 이후 진행되는 실습에서 본인이 수정한 포트를 적용하여 실습해야 한다.)

구동 확인

#bash

docker logs pycharm-test

컨테이너가 정상적으로 구동 되었다면 다음과 같은 출력이 나온다.

#출력예시

Performing system checks...

System check identified no issues (0 silenced).
May 14, 2020 - 11:26:12
Django version 1.8.2, using settings 'sample.settings'
Starting development server at http://0:80/
Quit the server with CONTROL-C.

테스트 페이지에 직접 접속하여 확인도 가능하다.

  • 접속 url : http://<server-ip>:8888

여기까지 되었다면, 서버쪽 테스트 준비가 완료되었다.

Client Setting

환경세팅

원격 서버의 인터프리터를 사용할 프로젝트를 생성 한다.

아래 이미지를 이용하여 새로운 인터프리터 생성을 진행한다.

SSH Interpreter를 선택하고, 표시 된 부분에 값을 입력한다.

  • Host: Remote Server의 IP주소 (ex: 220.70.71.231)
  • Port: Remote Server의 SSH 포트 (ex: 22)
  • Username: Remote Server의 SSH 유저이름 (테스트환경: root)

처음 접속시 키교환을 위한 경고 메시지가 뜨면 Yes를 클릭한다.

Password에 ssh 접속 암호(테스트환경: test1234 )를 입력한다.

대상 서버의 사용할 python 인터프리터의 경로를 지정한다.
(Execute code using this interpreter with root privileges via sudo에는 체크하지 않는다.)

인터프리터 부분이 바뀐것을 확인하고, Remote project location 에 프로젝트가 존재하거나 위치시킬 경로(테스트환경: /project )를 입력하고 Create를 누른다.

방화벽 관련한 경고 메시지가 뜨면, 아래와 같이 클릭하고, Contigure Automatically를 선택한다.

아래와 같이 프로젝트 폴더에서 오른쪽 마우스 → Deployment → Sync with Deployed... 기능을 이용하여 원격 서버의 소스와 로컬 소스를 동기화 한다.

PyCharm에서 수정한 내용을 서버에 자동으로 동기화 시키기 위해 다음 설정을 한다.

Tools → Deployment → Automatic Upload (always)를 선택한다.

자동 업로드 설정까지 완료되면, 환경세팅은 완료되었다.

구동 확인

sample → pycharmtest → views.py 파일의 내용을 수정하고 저장(ctrl+s) 해본다.

#views.py

from django.http import HttpResponse

def index(request):
    #Edit here
    return HttpResponse("Edit Success!!")

웹페이지를 갱신하여 수정사항이 반영된 것을 확인한다.

EOF

반응형