Вдохновленный поисковой системой Facebook Bunnylol. Версия, которая в настоящее время открыта на GitHub, довольно старая и имела некоторые старые зависимости, поэтому я подумал, что было бы легче просто написать более современный. Этот по -прежнему довольно простой и, скорее всего, имеет дыры в области безопасности, с которыми я столкнулся позже. Просто хотел получить что -то с земли, и я добавлю больше возможностей для функций.
Посетите ссылку на настройку, используя эту версию, которую я хочу.
Список поддерживаемых в настоящее время команд
g [insert query] Поиск Googlep [insert class number] Сделайте поиск площади, вроде персонализированного только для Джека лолfb [insert query] поиск в Facebook. по умолчанию на домашней странице FBcpp [insert query] Поиск синтаксических терминов CPP на cppreference.comw [insert query] Ищет Википедию, по умолчанию на английской странице Википедииyt [insert query] сделать поиск на YouTube. Если запрос проходит, по умолчанию на домашнюю страницу YouTubegm [insert number from 0-n where n = number of gmail accounts - 1] открывает Gmail. Если не указан аргумент, открывает первую учетную запись. Может открыть альтернативные счета с аргументамиhelp возвращает список полезных команд Я думаю, что расширение этого довольно интуитивно понятно. Просто добавьте новые методы в класс команд. Это может быть немного запутанным, потому что все происходит в файле jack_bunny.py , я, вероятно, модулизую это позже, когда у меня будет время.
Я разместил это на сервере Amazon EC2, настроенный с Nginx и стрельцом, поэтому я пройду по ступеням, через которые я прошел.
Первым шагом является клонирование этого репо на сервере, на котором вы хотите запустить, и загрузить все зависимости. Все они должны быть в файле requirements.txt , поэтому что -то вроде pip3 install -r /path/to/requirements.txt должно работать. Если вы столкнетесь с любыми проблемами, единственные библиотеки Python, которые это действительно использует, - это flask и wikipedia поэтому загрузка их должна решить любые проблемы.
Есть дополнительные пакеты, которые вам нужны для размещения этого. Первый - это nginx . Чтобы установить это, вы можете просто использовать sudo apt-get install nginx . Нам также нужно будет установить gunicorn , и для этого вы можете использовать pip3 install gunicorn .
Идея, лежащая в основе этого, заключается в том, что мы будем использовать gunicorn , чтобы запустить это на местном хосте в каком -то неиспользованном порту. Затем мы будем использовать nginx в качестве обратного прокси, чтобы он передаст запрос, который он получил, gunicorn а затем gunicorn подаст это nginx , который будет предоставлен пользователю.
Итак, как мы это сделать?
Сначала мы хотим, чтобы gunicorn бег. Команда для запуска gunicorn jack_bunny:app -p jack_bunny.pid -D . В этой команде jack_bunny представляет имя файла без приложения .py , а app представляет собой приложение Flask. Мы добавляем тег -D так, чтобы он будет работать в заднем плане, даже когда мы заканчиваемся. -p jack_bunny.pid сохраняет процесс_ида в этом файле, поэтому, если вы хотите убить этот процесс, вы можете просто убить -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;
}
}
Затем я создал здесь символическую ссылку.
$ sudo ln -s
/etc/nginx/sites-available/jack_bunny
/etc/nginx/sites-enabled/jack_bunny
После перезапуска nginx вы должны быть полезны!
Если вы столкнетесь с некоторыми проблемами конфигурации nginx , проверьте журналы ошибок, чтобы увидеть, что может пойти не так. Одна вещь, с которой я столкнулся, было имя моего сервера, была слишком длинной, и это дало мне ошибку имени хэша сервера. Я решил это, добавив линию server_names_hash_bucket_size 128; В мой файл конфигурации nginx здесь /etc/nginx/nginx.conf .
На сервере есть множество способов развернуть приложение Flask, поэтому не нужно это делать. Я только что нашел это самым быстрым способом. Для справки, это руководство, с которым я следовал, оно довольно подробно.