2016-12-19 2 views
3

내 LED 표시 등에 대한 컨트롤이있는 Raspberry Pi에서 플라스크 웹 응용 프로그램을 호스팅합니다. 파이썬을 루트 사용자로 사용하여 서버를 실행할 때 모두 훌륭하게 작동하지만 아파치 mod_wsgi를 사용하여 배포하는 데 어려움을 겪고 있습니다. htttps를 사용하고 싶기 때문에 배포하는 것이 필요하지만 아파치는 루트 권한으로 서버를 운영하는 것을 허용하지 않는 것 같습니다. 플라스크 서버에 가져온 라이브러리를 통해 조명을 제어하려면 루트가 필요합니다.루트 권한이있는 플라스크 응용 프로그램 배포

루트 권한으로 플라스크 서버를 배치 할 수있는 방법이 있습니까? 그렇지 않으면 배포하지 않고도 https (letsencrypt.org에서)를 사용할 수 있습니까? 이 문제를 해결할 수있는 다른 방법이 있습니까?

답변

2

보안상의 이유로 웹 서버를 루트로 실행하지 않습니다. 암호 없음 -

  1. 가 등 /의 sudoers /로 웹 사용자를 추가

    대신, 내가하는 것이 좋습니다. 이상적으로는 루트로 실행할 명령 만 허용하십시오.

  2. 은 당신이 회전에이 포장하는 경우, 내가 /etc/sudoers.d/youpackage

    에서 sudo는 정의를 둘 것,

당신이 언급 [명령] 배포를 sudo를 명령을 실행

다른 옵션은 응용 프로그램을 분할하고 일종의 메시징 시스템을 사용하는 것입니다. 데이터베이스 테이블에 행이 있거나 rabbit mq과 같은 메시징 서버를 사용하는 것입니다 (다른 서버가 있지만 설치가 매우 쉽습니다) . root로 실행되는 별도의 프로세스는 실제 조명을 켜고 끕니다. 프론트 엔드는 "light off"와 같은 메시지를 보내고 다른 프로세스 (루트로 실행 중일 수 있음)는 필요할 때 메시지를 받게됩니다. 이 방법의 장점은 웹 프로세스에 루트 권한이 없으며 구멍이 있어도 손상이 제한된다는 것입니다.

+0

"sudo [command]"명령을 실행할 때 서브 프로세스 호출로 조명 제어를 수행하거나 sudo를 사용하여 서버를 시작해야한다는 의미입니까? – Xergiok

+0

루트로해야 할 일이 확실하지 않습니다. 명령/셸 스크립트를 호출한다고 가정했습니다. 보안상의 이유로 웹 서버를 루트로 사용하지 마십시오. 또 다른 옵션은 당신을 분할하고 어떤 종류의 메시징을 사용하는 것입니다. 데이터베이스 테이블이나 토끼 mq와 같은 메시징 서버를 사용하고 다른 프로세스를 루트로 실행하는 것입니다. 프론트 엔드는 단순히 "light off"와 같은 메시지를 보내고 다른 프로세스는 그것을 픽업합니다. –

+0

/dev/mem에 액세스해야하는 파이썬 LED 라이브러리가 있습니다. 일반적으로 그냥 가져 와서 사용하지만 전체 서버를 루트로 실행해야합니다. 라이트 사이드에서 웹 사이드를 분리하는 아이디어는 논리적으로 보입니다. 프로세스 간 의사 소통을 연구 할 것입니다. 감사! – Xergiok