LINUX.ORG.RU

Почему во Flask порты 8080 и 80 ведут себя так по разному??? - Сайт на Фласк с обычным портом хотелось бы...

 , , , ,


1

1

На VPS делаю страничку «Hello Word», согласно рецептам авторов фреймворка flask, см. напр. http://flask.pocoo.org/docs/quickstart/ .

Если ничего не менять в этом коде от создателей flask, то в браузере прекрасно открывается моя страница, но лишь для корявых URL вида 111.222.333.444:5000 - ибо порт 5000 для Falsk- по умолчанию.

{вот сам код from flask import Flask app = Flask(__name__)

@app.route('/') def hello_world(): return 'Hello World!'

if __name__ == '__main__': app.run() }

а вот то, как предлагают его изменить для любого порта, отличного от 5000, - просто изменит app.run() на: app.run(host='46.246.28.26',port = 8080)

так вот, если порт 8080 сделать- работает. А если порт сделать 80, то получаю:

... .......$ python2.7 test.py * Running on http://my_IP_address:80/ Traceback (most recent call last): File «fla.py», line 13, in <module> app.run(host='46.246.28.26',port = 80) File «/home/ny/flaskvps/flaskvps/local/lib/python2.7/site-packages/flask/app.py», line 739, in run run_simple(host, port, self, **options) File «/home/ny/flaskvps/flaskvps/local/lib/python2.7/site-packages/werkzeug/serving.py», line 617, in run_simple inner() File «/home/ny/flaskvps/flaskvps/local/lib/python2.7/site-packages/werkzeug/serving.py», line 599, in inner passthrough_errors, ssl_context).serve_forever() File «/home/ny/flaskvps/flaskvps/local/lib/python2.7/site-packages/werkzeug/serving.py», line 408, in make_server passthrough_errors, ssl_context) File «/home/ny/flaskvps/flaskvps/local/lib/python2.7/site-packages/werkzeug/serving.py», line 334, in __init__ HTTPServer.__init__(self, (host, int(port)), handler) File «/usr/lib/python2.7/SocketServer.py», line 419, in __init__ self.server_bind() File «/usr/lib/python2.7/BaseHTTPServer.py», line 108, in server_bind SocketServer.TCPServer.server_bind(self) File «/usr/lib/python2.7/SocketServer.py», line 430, in server_bind self.socket.bind(self.server_address) File «/usr/lib/python2.7/socket.py», line 224, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 13] Permission denied ....$

все что я хочу- чтобы мой скрипт срабатывал просто при указании сайта/IP в Url, без указания через двоеточие порта.

Я просто хочу сдлелать так чтобы сайт открывался без явного указания порта в браузере. ????

socket.error: [Errno 13] Permission denied ....$

Думаю, дело в этом.

Погугли «flask port 80 permission denied»

P.S. А вообще негоже так айпишники свои выставлять...

alozovskoy ★★★★★
()

емнип с 0 по 1024 порт требуют прав рута. запускайте флягу за прокси, которым может быть и апач и нгинкс и чероки.

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities

Именно.

http://ru.wikipedia.org/wiki/Порт_(TCP/IP)#.D0.9D.D0.BE.D0.BC.D0.B5.D1.80.D0.... В большинстве UNIX-подобных операционных систем прослушивание портов с номерами 0—1023 (почти все из которых зарегистрированы) требует особых привилегий.

strangeman ★★★★
()

поставь nginx перед ним, в фласке слушай локалхост, а в нжинксе делай перенаправление трафика типа server { listen yourdomain.com; server_name http://www.yourdomain.com yourdomain.com location / { proxy_pass localhost:80 } }

и не будет проблем с доступностью по 80 порту.

wwwsevolod
()

Я просто хочу сдлелать так чтобы сайт открывался без явного указания порта в браузере.

дык порты <1024 привилегированные, и доступны только руту. Пробрось порт как выше писали, или запускай свой питон под рутом, или дай ему право на 80й порт.

drBatty ★★
()
Ответ на: комментарий от Ubuntu1210

Сильно сомневаюсь, что nginx даст какую-то серьезную просадку в производительности, он же постоянно используется как фронтэнд при подобных ситуациях.

strangeman ★★★★
()
Последнее исправление: strangeman (всего исправлений: 1)
Ответ на: комментарий от Ubuntu1210

По-моему, наоборот — лучшим. Если что nginx нагрузку возьмёт на себя, а если ещё настроить кеширование и им же отдавать статику.

Y ★★
()
Ответ на: комментарий от alozovskoy

ок.

насчет IP- этот хостинг тормознутый, я его не продляю и ухожу с него. Странно иное- это мой первый пост на ЛОР-е, я не нашел кнопок «редактировать пост» или «удалить пост»!

странное решение. И как же мне пост отредактировать или снести???

kulibinnn
() автор топика
Ответ на: комментарий от wwwsevolod

была такая мысль. Но! опыта у меня мало, развертывать apache/nginx и т.п. опасаюсь немного из-за обилия настроек и потенциальных дыр. на vps крутится некий мой скрипт, у которого мне периодически надо смотреть результат его работы- буквально 10 цифр. Пока обживаюсь , наверное, буду результат работы просто по ssh смотреть

kulibinnn
() автор топика
Ответ на: комментарий от Y

нет... У меня стоит на этом тестовом vps «голый» Debian wheezy +Python. Нет на нем apache и т.п.

kulibinnn
() автор топика
Ответ на: комментарий от kulibinnn

ну блин, тупо ставишь ngingx, создаешь конфиг с таким содержимым что я описал и все работает

wwwsevolod
()
Ответ на: комментарий от Ubuntu1210

бред говорите, на производительности ни скажется, нжинкс фронтэндом ставят сейчас перед чем угодно, даже перед node.js, да и как он еще сможет сделать например много доменов и\или под доменов на одной машине? в смысле без фронтэндового веб сервера это сделать будет не так то уж и просто.

wwwsevolod
()
Ответ на: комментарий от drBatty

спасибо вам, добрый человек. Запустил скрипт под root-ом, все работает. Если можно вам кармы поднять и т.п- напишите как.

//Приятно удивлен доброжелательностью этого форума- это мой первый пост тут. Раньше вообще русскоязычные форумы не смотрел- в отличие от англоязычных, на вопрос КАК сделать, обычно отвечают «а зачем тебе это» и пр. лепет.//

kulibinnn
() автор топика
Ответ на: комментарий от kulibinnn

Вообще, запуск сервисов от рута это антипаттерн т.к. потенциально несёт большую угрозу безопасности. Те кто это рекомендовали пошутили.

У тебя четыре варианта: пускать на непривелигированном порту и пробрасывать трафик (хоть фаерволом, но лучше nginx), запускать от рута и сбрасывать привилегии и дать через posix capabilities CAP_NET_BIND_SERVICE (systemd это, кажись, умеет) и почитать наконец-то доки в районе http://flask.pocoo.org/docs/deploying/#deployment

true_admin ★★★★★
()
Ответ на: комментарий от Ubuntu1210

Чувствую, что это не лучшим образом скажется на производительности.

как раз наоборот. В некоторых случаях даже поможет при DDoS атаке.

drBatty ★★
()
Ответ на: комментарий от kulibinnn

Странно иное- это мой первый пост на ЛОР-е, я не нашел кнопок «редактировать пост» или «удалить пост»!

кнопка «редактировать» появится с первой звезды ЕМНИП.

drBatty ★★
()
Ответ на: комментарий от kulibinnn

Запустил скрипт под root-ом, все работает.

Вообще-то РЕШЕТО. Лучше таки фронтэнд, как тут выше писали.

на вопрос КАК сделать, обычно отвечают «а зачем тебе это» и пр. лепет.

делаешь неправильно, вот тебя и стараются уберечь от твоих ошибок. Мелкие порты постоянно атакуют, вот и их сделали защищёнными.

drBatty ★★
()
Ответ на: комментарий от kulibinnn

спасибо вам, добрый человек. Запустил скрипт под root-ом, все работает получил ачивку «Sieve Master».

GateKeeper ★★
()
27 марта 2014 г.

Ну и понаписали тут

Вообще-то, flask прекрасно интегрируется с apache2. И не надо никакой питон из-под рута запускать, глупости это все. http://flask.pocoo.org/docs/deploying/mod_wsgi/ УМВР на апаче с SSL.

horonitel ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.