Facebook의 Bunnylol 검색 엔진에서 영감을 얻었습니다. 현재 GitHub에서 열려있는 버전은 꽤 오래되었고 오래된 의존성이 있었기 때문에 더 현대적인 것을 작성하는 것이 더 쉽다고 생각했습니다. 이것은 여전히 매우 기본적이며 나중에 나중에 달리는 보안 구멍이있을 가능성이 높습니다. 그냥 지상에서 무언가를 꺼내고 싶었고 더 많은 기능을 추가 할 것입니다.
내가 호스팅하는이 버전을 사용하여 설정하려면 링크를 방문하십시오.
현재 지원되는 명령 목록
g [insert query] Google 검색p [insert class number] Piazza Search, Jack Lol을 위해 개인화fb [insert query] Facebook에서 검색합니다. FB 홈페이지의 기본값cpp [insert query] cppreference.com에서 구문 CPP 용어 검색w [insert query] 검색 Wikipedia, 기본적 인 Wikipedia 페이지yt [insert query] YouTube 검색을 만듭니다. 쿼리가 전달되지 않으면 기본값은 YouTube 홈페이지로 나타납니다.gm [insert number from 0-n where n = number of gmail accounts - 1] Gmail을 엽니 다. 논쟁이 제한되지 않으면 첫 번째 계정을 개방합니다. 인수로 대체 계정을 열 수 있습니다help 사용 가능한 명령 목록을 반환합니다 나는 이것을 확장하는 것이 현재 매우 직관적이라고 생각합니다. 명령 클래스에 새로운 방법을 추가하십시오. jack_bunny.py 파일에서 모든 일이 일어나고있는 원인이 될 수 있습니다. 시간이있을 때 나중에 이것을 모듈화 할 것입니다.
Nginx 및 Gunicorn으로 구성된 Amazon EC2 서버에서 이것을 호스팅하여 내가 통과 한 단계를 살펴 보겠습니다.
첫 번째 단계는이 repo를 서버에서 실행하려는 서버에서 복제하고 모든 종속성을 다운로드하는 것입니다. 이들은 모두 requirements.txt 파일에 있어야합니다 pip3 install -r /path/to/requirements.txt 와 같은 것이 작동해야합니다. 문제가 발생하면 실제로 사용하는 유일한 파이썬 라이브러리는 flask 와 wikipedia 이므로 다운로드하면 문제를 해결해야합니다.
이 호스팅에 필요한 추가 패키지가 있습니다. 첫 번째는 nginx 입니다. 이것을 설치하려면 sudo apt-get install nginx 사용할 수 있습니다. 또한 gunicorn 설치해야하며이를 위해 pip3 install gunicorn 사용할 수 있습니다.
이에 대한 아이디어는 gunicorn 사용하여 일부 미사용 포트에서 LocalHost에서이를 실행한다는 것입니다. 그런 다음 nginx 리버스 프록시로 사용하여 gunicorn 에게받은 요청을 끄고 gunicorn 은이를 사용자에게 제공 할 nginx 에 제공합니다.
그래서 우리는 어떻게해야합니까?
먼저 우리는 gunicorn 달리기를 원합니다. 실행 명령은 gunicorn jack_bunny:app -p jack_bunny.pid -D 입니다. 이 명령에서 jack_bunny .py 없는 파일 이름을 나타내고 app Flask 앱을 나타냅니다. 우리는 -D 태그를 추가하여 폐쇄 할 때에도 백그라운드에서 실행되도록합니다. -p jack_bunny.pid 는 process_id를이 파일에 저장 하므로이 프로세스를 죽이려면 -9를 죽일 수 있습니다.
이제 우리는 여전히 로컬로만 실행되기 때문에 nginx 설정해야합니다.
처음 으로이 새 구성 파일을 /etc/nginx/sites-available/jack_bunny 에서 만들었습니다
# /etc/nginx/sites-available/jack_bunny
# Redirect www.[insert server name].com to [insert server name].com
server {
server_name www.[insert server name].com;
rewrite ^ http://[insert server name].com/ permanent;
}
# Handle requests to [insert server name].com on port 80
server {
listen 80;
server_name [insert server name].com;
# Handle all locations
location / {
# Pass the request to Gunicorn
proxy_pass http://127.0.0.1:8000;
# Set some HTTP headers so that our app knows where the
# request really came from
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
그런 다음 여기에 Symlink를 만들었습니다.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
nginx 다시 시작한 후에는 가면 좋을 것입니다!
nginx 구성 문제가 발생하면 오류 로그를 확인하여 무엇이 잘못 될 수 있는지 확인하십시오. 제가 실행 한 한 가지는 서버 이름이 너무 길어서 서버 해시 이름 오류가 발생했습니다. 선 server_names_hash_bucket_size 128; 내 nginx config 파일에 /etc/nginx/nginx.conf .
서버에 플라스크 앱을 배포하는 방법에는 여러 가지가 있으므로 Oyou는이 작업을 수행 할 필요가 없습니다. 방금 이것이 가장 빠른 방법이라는 것을 알았습니다. 참고로 이것은 내가 따르는 가이드입니다. 매우 상세합니다.