Tag: uwsgi

在远程主机上的Docker flask uwsgi 404

更新2 我configuration我的路由在从create_app调用的configure_blueprints。 我不想把所有的视图处理程序放在uwsgi.py中。 它们存储在单独的模块中。 def configure_blueprints(app): from .root import root_bp … blueprints = [ (root_bp, None), … ] for bp, endpoint in blueprints: app.register_blueprint(bp, url_prefix=endpoint) return app def create_app(config_fn=None): app = Flask(__name__, template_folder='../templates', static_folder='../static') … configure_blueprints(app) return app 应用程序/根/ views.py root_bp = Blueprint('root_bp', __name__) @root_bp.route('/') def root(): if not current_user.is_authenticated: return redirect('/login/') return render_template('index.html') 这里是SIMPLE_SETTINGS=app.config,instance.docker […]

无法在docker中启动uwsgi作为服务

1)我已经在/etc/uwsgi/app-enabled/demo.ini中复制了我的demo.ini文件 2)我已经安装了apt-get install uwsgi-plugin-python软件包 3)在demi.ini文件中现在添加了plugins = python,当我点击命令sudo service uwsgi status,它显示输出哪个? FROM base_image RUN apt-get -y install uwsgi COPY workspace /home/nt/workspace RUN ln -s /home/nt/workspace/backend.conf /etc/nginx/sites-enabled/backend.conf RUN ln -s /home/nt/workspace/nti-backend/environment/development.ini /etc/uwsgi/apps-enabled/ RUN pip install -r /home/nt/workspace/nti-backend/requirements.txt ENTRYPOINT sh /home/nt/workspace/startup.sh && /bin/bash

configurationNGINX以正确地将URL转发到Graphite docker映像

我有一个通过NGINX和UWSGI在Debian上运行的Web应用程序。 我们已经开始使用在Docker容器中运行的Graphite和statsd来收集应用程序的统计信息(来自https://github.com/hopsoft/docker-graphite-statsd )。 docker集装箱有自己的NGINX服务石墨。 目前我们正在运行docker容器转发端口8081到80,并能够通过http:// example.com:8081访问Graphite。 我正在尝试通过现有的NGINX服务器为Graphite路由networkingstream量,以便我们能够在访问时使用我们build立的身份validation方法。 我希望能够通过example.com/graphite/访问Graphite,并在该目录下引用所有关联的内容。 目前example.com/graphite/转发到http:// example.com:8091/graphite/。 我想要的URL不会改变。 从那里,Graphite加载,但所有的页面元素从8091 /加载,例如http:// example.com:8091/content/js/ext/resources/images/default/sizer/s-handle.gif,而我希望通过http:// example.com/graphite/content/js/ext/resources/images/default/sizer/s-handle.gif来引用它。 当我去domain.com/graphite/admin/时,我收到我们的Web应用程序的404页面。 pipe理页面的html已经成功加载,但是我收到了https:// example.com/browser/header/和https:// example.com/composer/?404。 这里是我当前nginx.conf的相关部分: # HTTPS server server { listen 443; listen 8000; server_name $hostname; ssl on; etag on; # used in tests ssl_verify_client optional; ssl_verify_depth 2; location /graphite { rewrite ^/graphite(/.*)$ $1 break; proxy_pass http://localhost:8091; proxy_set_header HOST $host; […]

在docker + nginx + uwsgi下无法find部署的应用程序的模块

我有一个烧瓶写的项目,结构如下: -/ |- src |- __init__.py |- main.py |- module_a |- __init__.py |- … |- … |- web |- __init__.py |- web.py |- Dockerfile 文件main.py调用web/web.py定义的入口函数,以及在module_a定义的web.py调用业务函数。 它可以正常使用命令python main.py 所以我打算将它部署在docker,Dockerfile中,如下所示: FROM tiangolo/uwsgi-nginx-flask:python3.6 COPY ./src/* /app/ 在Docker中构build并运行Web应用程序,出现错误: Traceback (most recent call last): File "./main.py", line 1, in <module> from web import run File "./web.py", line 5, in <module> […]

烧瓶,uWSGI和线程产生不可重现的结果

我有一个基于flask + uwsgi(运行在docker容器中)的API。 它的input是一个文本,它的输出是一个简单的json,带有关于这个文本的数据(类似{“score”:1})。 我在5个线程中请求这个API。 在我的uwsgi.ini中我有进程= 8和线程= 2.最近我注意到一些结果是不可重复的,虽然API的源代码没有改变,没有任何代码挑起内部的随机答案。 所以我采取了相同的一组查询,并将其提交给我的API,首先是顺序,然后是反向的。 大约1%的答复不同! 当我在本地做同样的事情(没有线程和docker&只在一个线程),结果变得一样。 所以我的假设是烧瓶有时会混淆对不同线索的反应。 有人处理过吗? 我发现只有https://github.com/getsentry/raven-python/issues/923 ,但如果是这样的话,那么问题仍然没有解决,因为我明白… 所以这里是相关的代码片断: uwsgi.ini [uwsgi] socket = :8000 processes = 8 threads = 2 master = true module = web:app 要求 import json from multiprocessing import Pool import requests def fetch_score(query): r = requests.post("http://url/api/score", data = query) score = json.loads(r.text) query["score"] = […]

在docker中的django + uwsgi

在Docker中部署Django应用的最佳方式是什么? 我已经看了几个博客,并且似乎大多数例子中,每个人都试图把nginx + django + uwsgi放在一个容器中。 但容器应该只有一个进程。 所以我想在一个容器Django和uswgi和Nginx在另一个容器或主机本身。 可以请一些build议我最好的办法。 PS: – 我的Django应用程序只是提供我的REST API的结果。 我不使用我的静态内容的Django模板。 我也正在寻找使用https启用所有这些。 如果有人已经实现了类似的Django应用托pipe方式,请分享一个博客或github链接。

configuration一个uwsgi.ini文件,以便DJango项目在Docker容器中工作

我想设置uwsgi.ini文件,以便它将与泊坞窗容器一起工作。 在Dockerfile中,我公开了端口8888.下面是与此问题相关的Dockerfile的部分 : Dockerfile EXPOSE 8888 ENV DOCKER_CONTAINER=1 #CMD ["uwsgi", "–ini", "/code/uwsgi.ini"] <<< right now, this is commented out CMD ["/bin/bash"] 上面,运行uwsgi.ini文件的CMD被注释掉了,因为对我而言,它最初并不起作用。 我将CMD更改为“/ bin / bash”,以便我可以login到容器的操作系统级别。 这样做之后,我运行下面的代码: uwsgi –http 923b235d270e:8888 –chdir=/code/backendworkproj –module=backendworkproj.wsgi:application –env DJANGO_SETTINGS_MODULE=backendworkproj.settings –master –pidfile=/tmp/backendworkproj-master.pid –socket=127.0.0.1:49152 –processes=5 –uid=1000 –gid=2000 –harakiri=20 –max-requests=5000 –vacuum 一旦完成,我可以去机器上的8888端口,看到网站。 所以,总之,一切正常。 我现在面临的问题是将上面的命令转换成在uwgsi.ini文件中工作的uwgsi.ini 如果你看看上面的命令的一部分,我用: –http 923b235d270e:8888 指定一个端口。 923b235d270e与容器关联(因为127.0.0.1不起作用) 我怎样才能在uwsgi文件中正确地表示这个(和envvariables,如DJANGO_SETTINGS_MODULE),以便服务器能够正常工作? 下面是我的.ini文件。 TIA uwsgi.ini […]

运行在Docker中的uwsgi无法find初始化文件

我使用Ubuntu 14.04和Docker 1.0.1。 我有一个包含python 2.7.6和uwsgi 2.0.10的容器。 我创build了Dockerfile: FROM romeus/python MAINTAINER Me <my email> ENV REFRESHED_AT 2015-03-17 RUN pip install uwsgi RUN pip install Django RUN mkdir -p /var/www RUN mkdir -p /var/conf VOLUME ["/var/www"] ADD uwsgi.conf /var/conf/ CMD ["uwsgi", "–ini", "/var/conf/uswgi.conf"] 下面我把我的uswgi.conf: [uwsgi] http-socket = 0.0.0.0:8080 wsgi-file = /var/www/test.py processes = 4 threads = 2 […]

运行在docker(uwsgi)上的Nginx上的404

我一直在与此作斗争,无法摆脱困境。 我有一个简单的Dockerfile工作,我使用supervisord作为CMD来启动nginx和uwsgi。 它做的工作,但我回来了404。所以我做的是改为启动docker/bin/bash和手动启动和debugging ,例如: sudo docker run -t -i -p 8095:80 myimage /bin/bash 所以这是我的nginx conf(在站点可用,然后在启用站点的链接): server { listen 80; server_name 0.0.0.0; location / { include uwsgi_params; uwsgi_pass unix:/WikiRockWord2Vec/WikiRockWord2Vec.sock; } } 这是我的uwsgi ini: [uwsgi] module = wsgi master = true processes = 5 socket = /WikiRockWord2Vec/WikiRockWord2Vec.sock chmod-socket = 777 vacuum = true uid = www-data die-on-term […]

为什么不以root身份运行uwsgi实例

我正在通过uWSGI文档阅读,并警告总是避免以root身份运行uWSGI实例 。 这背后的原因是什么? 这是否是唯一的过程(除了nginx)在docker集装箱中运行,提供一个瓶子的应用程序?