토네이도 및 RabbitMQ를 사용하여 Python으로 작성된 AMQP 프로토콜 (RabbitMQ 메시지 중개인)을 기반으로하는 채팅 서버/채팅 시스템.
링크 : http://rabbitchat.readthedocs.io/en/latest/index.html
링크 : https://pypi.python.org/pypi/rabbitchat
| 작가: | Anirban Roy Das |
|---|---|
| 이메일: | [email protected] |
| 저작권 (C) : | 2017, Anirban Roy Das <[email protected]> |
전체 저작권 통지는 rabbitChat/LICENSE 파일을 확인하십시오.
Rabbitchat은 LAN에서 채팅하기 위해 로컬로 설정할 수있는 매우 간단한 채팅 서버입니다. 특정 시간에 동시에 연결된 모든 참가자들 사이의 공개 채팅 과 개인 채팅을 개별 참가자에게도 지원합니다.
AMQP 프로토콜을 사용하여 실시간 메시지 전달 시스템을 구현합니다. AMQP는 많은 언어로 구현되며 많은 소프트웨어로 구현되면 RabbitMQ는 AMQP 프로토콜을 구현하는 메시지 중개인입니다.
연결은 SOCKJS 프로토콜을 사용하여 작성됩니다. SOCKJS는 주로 JavaScript로 실시간으로 서버와 대화하기 위해 많은 언어로 구현되며, 이는 클라이언트 (브라우저) 와 서버 간의 이중 방향 연결을 만들려고합니다. 서버는 또한 SOCKJS 프로토콜도 구현해야합니다. 따라서 Tornado 서버에서 Sockjs 프로토콜을 노출시키는 Sockjs-Tornado 라이브러리를 사용합니다.
먼저 WebSocket 연결을 만들려고 시도하고 실패하면 Ajax , 긴 폴링 등과 같은 다른 전송 메커니즘으로 떨어집니다. 연결이 설정된 후, Tornado Server ** (Sockjs-Tornado) **는 AMQP Python 클라이언트 라이브러리 Pika를 사용하여 AMQP 프로토콜을 통해 RabbitMQ 에 연결됩니다.
따라서 연결은 웹 브라우저 에서 토네이도 에서 Rabbitmq 에서, 그 반대도 마찬가지입니다.
| SOCKJS-CLIENT : | 고급 WebSocket JavaScript 클라이언트 |
|---|---|
| 폭풍: | 비동기 파이썬 웹 라이브러리 + 웹 서버 |
| 양말-토네이도 : | 토네이도 용 Sockjs WebSocket 서버 구현 |
| AMQP : | 메시지 지향 미들웨어에 사용 된 사전 메시지 대기 프로토콜 |
| 피카 : | AMQP Python 클라이언트 라이브러리 |
| RabbitMQ : | AMQP를 구현하는 메시지 중개인 |
| pytest : | 멋진 테스트 디스코버리가있는 파이썬 테스트 라이브러리 및 테스트 러너 |
| Pytest-Flask : | Pytest Library를 사용하여 Fask 앱을 테스트하기 위해 Flask Apps 용 Pytest 플러그인. |
| Uber의 테스트-더블 : | Mock Library의 좋은 대안 인 Python 용 이중 라이브러리 테스트 |
| Jenkins (선택 사항) : | 자체 주최 CI 서버 |
| Travis-Ci (선택 사항) : | 오픈 소스 ProJecs 용 호스팅 된 CI 서버 |
| 도커 : | 더 나은 DevOps를위한 컨테이너화 도구 |
설치에는 두 가지 유형이 있습니다. PIP에서 설치하고 로컬 컴퓨터에서 응용 프로그램을 직접 실행하여 Rabbitchat을 바이너리로 사용합니다. 다른 방법은 Docker에서 응용 프로그램을 실행하는 것입니다. 따라서 Docker 사용 사례에 대한 또 다른 설치 단계가 있습니다.
GIT를 통한 비밀 및 기밀 데이터 누출을 공개 GitHub Repo로 보호하려면 git-secrets 확인하십시오.
이 GIT 비밀 프로젝트는 실수로 비밀 누출을 방지하는 데 도움이됩니다.
기술 사양에 언급 된 많은 기술이 있지만 의존성은 단지 2입니다. 이것이 Docker의 힘입니다.
1 단계 - Docker를 설치하십시오
Devops 및 Scripts와 관련된 모든 것이 언급되어 Docker를 사용하기위한 개발 환경 설정과 함께 언급 된 또 다른 Github 프로젝트를 따르십시오.
- 프로젝트 : https://github.com/anirbanroydas/devops
2 단계 - 제작을 설치하십시오
# (Mac OS) $ Brew 설치 Automake # (우분투) $ sudo apt-get 업데이트 $ sudo apt-get install make
3 단계 - 종속성을 설치하십시오
다양한 스크립트에서 사용될 로컬 개발 기계에 다음 종속성을 설치하십시오.
$ PIP 설치 Rabbitchat
위의 종속성이 위 명령에 의해 설치되지 않으면 아래 단계를 사용하여 하나씩 설치하십시오.
1 단계 - PIP 설치
PIP 설치 방법을 따르십시오. 그들 중 하나는 시스템에 PIP를 설치하는 데 도움이 될 수 있습니다.
- 방법 1 -https: //pip.pypa.io/en/stable/installing/
- 방법 2- http://ask.xmodulo.com/install-pip-linux.html
- 방법 3-
brew install python설치 한 경우 PIP는 이미 Python과 함께 설치되어 있습니다.2 단계 - 토네이도를 설치하십시오
$ pip 설치 토네이도3 단계 - Sockjs -Tornado를 설치하십시오
$ PIP 설치 SOCKJS-TARNADO4 단계 - Pika를 설치하십시오
$ pip 설치 pika5 단계 - RabbitMQ를 설치하십시오
Mac사용자를 위해1. Brew 설치 RabbitMq
$ Brew 설치 RabbitMq
- RabbitMQ를 구성 하고이 링크를 따르십시오.
Ubuntu/Linux사용자 의 경우1. RabbitMQ 응용 프로그램 저장소를 활성화합니다
$ echo "deb http://www.rabbitmq.com/debian/ 테스트 메인">> /etc/apt/sources.list2. 패키지의 확인 키를 추가하십시오
$ wget -o http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt -key add-3. 위에서 새로 추가하여 소스를 업데이트하십시오.
$ apt-get 업데이트4. 마지막으로 RabbitMQ를 다운로드하여 설치하십시오
$ sudo apt-get 설치 RabbitMQ-Server
- RabbitMQ를 구성 하고이 링크를 따르십시오.
CI 설정 (Travis, Jenkins)에서 프로젝트를 사용하는 경우 Github 로의 푸시마다 Travis 빌드 또는 Jenkins 파이프 라인을 설정할 수 있습니다. Travis는 .travis.yml 파일을 사용하고 Jenknis는 Jenkinsfile 사용하여 작업을 수행합니다. 이제 Travis를 사용하는 경우 Travis 특정 설정 명령을 실행하고 Jenkins의 경우 Jenkins 특정 설정 명령을 먼저 실행하십시오. 두 가지를 모두 사용하여 성능을 비교할 수 있습니다.
설정 키는 모든 환경 변수가 내보낸 .env 파일의 값을 읽습니다. 그러나 env 파일이 아닌 예제 파일 .env 알 수 있습니다. env 파일을 .env 로 복사하고 실제 값으로 실제 변수를 변경/수정 하십시오.
.env 파일은 기밀 데이터의 누출을 방지하기 위해 .gitignore 파일에 언급되어 있기 때문에 GIT에 대해 칭찬되지 않습니다.
설정 명령을 실행하면 많은 보안 키가 표시됩니다. 진행하기 전에 구성 파일에 복사하십시오.
참고 : 이것은 한 번의 설정입니다. 참고 : scripts/ 디렉토리 내부의 설정 스크립트를 확인하여 암호화 된 키가 제공되는 환경 변수를 이해하십시오. 참고 : 보안 키를 .travis.yml 또는 Jenkinsfile 에 복사하는 것을 잊지 마십시오.
참고 : env 의 사본을 .env 파일로 수행하고 실제 값으로 .env 의 변수 값을 변경하려면 travis-setup.sh 또는 jenknis-setup.sh 스크립트를 편집하고 직접 값을 업데이트 할 수 있습니다. 스크립트는 scripts/ 프로젝트 레벨 디렉토리에 있습니다.
중요 : 원격 서버에 배포하기 전에 로컬 컴퓨터에서 travis-setup.sh 스크립트 또는 jenkins-setup.sh 스크립트를 실행해야합니다.
이 단계는 환경 변수를 암호화하여 API 키, Docker 기반 키, 특정 키 배포와 같은 기밀 데이터를 보호합니다.
$ Travis Setup을 만듭니다
이 단계는 환경 변수를 암호화하여 API 키, Docker 기반 키, 특정 키 배포와 같은 기밀 데이터를 보호합니다.
$ jenkins setup을 만듭니다
사용법에는 두 가지 유형이 있습니다. PIP에서 설치하고 로컬 컴퓨터에서 응용 프로그램을 직접 실행하여 Rabbitchat을 바이너리로 사용합니다. 다른 방법은 Docker에서 응용 프로그램을 실행하는 것입니다. 따라서 Docker 사용 사례에 대한 또 다른 사용 단계 세트.
위의 종속성을 설치하고 선택 사항 (CI 서버를 사용하지 않는 경우) 또는 필요한 (CI 서버를 사용하는 경우) CI 설정 단계를 실행 한 후 다음 명령을 실행하여 사용하십시오.
로컬 개발 기계에서 앱을 실행하고 테스트하거나 원격 시스템에서 직접 실행하고 테스트 할 수 있습니다. 생산 환경에서 실행하고 테스트 할 수도 있습니다.
아래 명령은 개발 환경에서 시작됩니다. 프로덕션 환경에서 시작하려면 접미사 -prod 모든 Make Command.
예를 들어, 일반 명령이 make start 되면 생산 환경의 경우 make start-prod 사용하십시오. 생산 환경에서 실행하려는 각 명령 으로이 수정을 수행하십시오.
예외 : 테스트 명령에 위의 방법을 사용할 수 없으며 모든 환경마다 테스트 명령이 동일합니다. 또한 make system-prune 명령은 생산 별 변형이없는 독립형입니다 (모든 환경에서 동일하게 유지됨).
Applcation을 시작하십시오
$를 깨끗하게하십시오 $ 빌드를 만듭니다 $ 시작합니다 # 또는 $ docker -compose up -d
응용 프로그램을 중지하십시오
$ 중지하십시오 # 또는 $ docker-compose 정지
응용 프로그램을 제거하고 청소하십시오
$를 깨끗하게하십시오 # 또는 $ docker -compose rm -포스 -v $ echo "y"| Docker System Prune
깨끗한 시스템
$ System Prune을 만듭니다 # 또는 $ echo "y"| Docker System Prune
전체 응용 프로그램 로그를 확인합니다
$ 확인 로그를 만듭니다 # 또는 $ docker-compose logs-follow-- 테일 = 10
Python 앱의 로그 만 확인하십시오
$ check-logs-app를 만듭니다 # 또는 $ docker-compose logs-follow-- 테일 = 10 Identidock
PIP를 통해 Rabbitchat을 설치 한 후 다음 명령을 사용하여 사용합니다.
RabbitMQ 서버
1. Mac 사용자 의 경우
# 정상적으로 시작하십시오 $ rabbitmq-server # 백그라운드에서 실행하려는 경우 $ rabbitmq-server-분리 # Brew Rervices 사용 시작 (TMUX에서 작동하지 않음) $ Brew Services RabbitMQ 시작
2. Ubuntu/LInux 사용자 의 경우
# 정상적으로 시작하십시오 $ rabbitmq-server # 백그라운드에서 실행하려는 경우 $ rabbitmq-server-분리 # 서비스 사용을 시작합니다 $ Service RabbitMQ-Server 시작 # 서비스 사용을 중지합니다 $ Service RabbitMQ-Server 정지 # 서비스를 사용하여 다시 시작합니다 $ Service RabbitMQ-Server 재시작 # 상태를 확인합니다 $ Service RabbitMQ-Server 상태
Rabbitchat 서버를 시작하십시오
$ rabbitchat [옵션]
옵션
| --포트: | 채팅 서버가 시작되는 포트 번호 |
|---|
예
$ rabbitchat -Port = 9191
Rabbitchat 서버를 중지하십시오
서버를 중지하려면 Ctrl+C 클릭하십시오.
참고 : 테스트는 Docker 메소드를 사용 하여만 수행됩니다. 어쨌든 Docker 메소드 또는 독립형 메소드를 사용하여 응용 프로그램을 실행하는지 여부는 중요하지 않습니다. 테스트는 그것과 무관합니다.
이제 테스트가 프로젝트의 주요 거래입니다. 아래 명령에 언급 된대로 make 명령을 사용하여 여러 가지 방법으로 테스트 할 수 있으며,이 명령은 모든 것을 자동화하며 어떤 테스트 라이브러리 또는 프레임 워크가 사용되는지, 직접 또는 docker 컨테이너를 통해 테스트가 발생하는지 또는 tox 사용하여 다른 가상 환경 일 수 있습니다. 알려진 것은 아무것도 필요하지 않습니다.
반면에 테스트를 잘 제어하려면 pytest 명령을 사용하거나 tox 명령을 통해 다른 Python 환경에서 실행하거나 docker-compose 명령을 사용하여 Differetn 테스트를 실행하여 직접 실행할 수 있습니다.
그러나 Make 명령을 실행하는 것은 Lawasy The Go To Strategy 및이 프로젝트에 대한 권장 접근법입니다.
참고 : docker 컨테이너를 사용하지 않는 곳에 Tox는 직접 사용할 수 있습니다. make 명령을 사용하여 테스트를 실행하는 데 사용하는 테스트 Contianers 내에서 tox 실행하려고 시도 할 수 있지만 Dockerfile 변경하고 python2.7 , python3.x 와 같은 모든 python 종속성을 설치 한 다음 docker 컨테이너 내부에서 tox 명령을 실행 한 다음 현재 테스트 컨테이너 내부에서 실행하는 pytest 명령을 실행해야합니다.
경고 : Make 명령을 직접 사용하는 유일한 경고는 tox 사용하지 않는다는 것입니다. 단일 python 환경 인 Nameley python 3.6 에서만 프로젝트를 테스트하는 것입니다.
모든 것을 테스트합니다
$ 테스트
Make를 사용하지 않고 다른 방법에는 많은 명령을 작성해야합니다. 따라서 Make 명령을 선호합니다
단위 테스트를 수행합니다
$ 테스트 단위를 만듭니다
구성 요소 테스트를 수행합니다
$ 테스트 구성 요소를 만듭니다
계약 시험을 수행합니다
$ 테스트 계약을 만듭니다
통합 테스트를 수행합니다
$ 테스트 통합을합니다
End to End (E2E) 또는 시스템 또는 UI 수락 또는 기능 테스트를 수행하려면
$ test-e2e를 만듭니다 # 또는 $ 테스트 시스템을 만듭니다 # 또는 $ test-ui-accepance를 만듭니다 # 또는 $ 테스트 기능을 만듭니다