Articles of python

使用Gunicorn,Nginx和Django的URLparsing错误

我只有在使用Gunicorn时才会出现一个奇怪的错误: 我有一个设置Nginx的+ Django项目与以下configuration: location / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header SCRIPT_NAME /; } 当我使用django开发服务器(1.7.5)时,使用: ./manage.py runserver 127.0.0.1:8080 一切工作正常。 但是当我跑步 gunicorn -b :8080 –forwarded-allow-ips="*" –proxy-allow-from="*" app.wsgi 我只收到404错误(Django接收请求,因为我有debugging信息)。 这些错误是很奇怪的,因为variablesurlpatterns ( https://github.com/django/django/blob/1.7.5/django/views/debug.py#L1102 )没有设置。 我只获取原因variables( https://github.com/django/django/blob/1.7.5/django/views/debug.py#L1119 )设置为: {u'path': u'x/'} 正如我所要求的http://domain.something.com/x/ 最让人困扰的是django自带的基本服务器工作正常… 🙁

nginx + uwsgi +虚拟环境。 里面有什么?

看起来像一个简单的问题,但我找不到它在任何地方。 我看到的每一个教程都会略有不同,而且我确信我已经看到了两种方法。 在我的开发环境中,python,flask以及我的应用程序的所有其他依赖项都进入了虚拟环境。 在configuration生产环境时,Nginx和uWSGI是否进入虚拟环境? 谢谢!

Nginx WebSocket代理不断获得HTTP 301redirect

我一直试图让Nginx的WebSocket代理在过去的几天工作,但对我来说,我无法得到它的工作。 我遵循这里的官方指南,并使用Python的websockets模块作为服务器,并使用npm包作为客户端。 从wscat直接连接到Python WebSocket后端工作正常(从浏览器连接也是如此)。 但是,只要我在Nginx中进行分层,它就不能正常工作,并继续给我一个标准的HTTP 301redirect。 使用Nginx代理的cURLdebugging输出: $ curl 'http://test.ws:8080/websocket' \ > -H 'Pragma: no-cache' \ > -H 'Origin: http://localhost:8080' \ > -H 'Accept-Encoding: gzip, deflate, sdch' \ > -H 'Sec-WebSocket-Version: 13' \ > -H 'Sec-WebSocket-Key: V15bszpaQ+8Vq7mWR6NQbQ==' \ > -H 'User-Agent: Mozilla/5.0' \ > -H 'Upgrade: websocket' \ > -H 'Cache-Control: no-cache' \ > -H […]

对django的urls.py的更改不反映在网上

我使用NGINX和UWSGI运行Django应用程序。 我的URL模式曾经是这样的: urlpatterns = [ url(r'^$', views.index), url(r'^binaryQuestionApp/',include('binaryQuestionApp.urls')), url(r'^pointlocations/',include('pointlocations.urls')), url(r'^attributesFromPointsApp/',include('attributesFromPointsApp.urls')), url(r'^admin/', admin.site.urls), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 但是,我想将其改变为: urlpatterns = [ url(r'^$', views.index), url(r'^collections/',views.collections), ## new line ## url(r'^binaryQuestionApp/',include('binaryQuestionApp.urls')), url(r'^pointlocations/',include('pointlocations.urls')), url(r'^attributesFromPointsApp/',include('attributesFromPointsApp.urls')), url(r'^admin/', admin.site.urls), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 然而,推这之后,我的服务器(和.py文件确实在服务器上更改)我一直得到Django的404页面: Using the URLconf defined in data_collection_project.urls, Django tried these URL patterns, in this order: ^$ ^binaryQuestionApp/ ^pointlocations/ ^attributesFromPointsApp/ […]

为什么我的uWSGI找不到我的Django应用程序?

我在这个论坛上经历了许多类似的问题,但是我的问题仍然在我心中。 我的项目布局 /home/django/apps |- movehere_env <— Virtualenv. Everthing, including uwsgi is installed in it. |- movehere_store |- settings.py |- apps |- Other project stuff |- prod <— Stores settings for prod env |- uwsgi.ini <— uwsgi ini file |- wsgi.py <— Python code which has the Django application. uwsgi.ini [uwsgi] socket = /tmp/movehere_store_uwsgi.sock chdir = […]

Flask + uwsgi + nginx:TypeError:…不需要参数(给出2)

我用nginx在ubuntu 12.04 homerserver上安装了uwsgi,并尝试testing一个简单的Flask-App: from flask import Flask app = Flask(__name__) @app.route('/') def application(): return 'Hello World!' if __name__ == '__main__': app.run() 与python app.py它的作品。 但不能用uwsgi –socket 127.0.0.1:3031 –file /srv/www/test/app.py –callable application –catch-exceptions 我只是得到这个错误TypeError: application() takes no arguments (2 given) ,不知道为什么。 这两个论点来自哪里? 这是我的uwsgi.conf: 1 description "uWSGI Emperor" 2 start on runlevel [2345] 3 stop on runlevel [06] […]

无法在同一台服务器上运行2个不同的应用程序

这是我的nginxconfiguration server { listen 80; server_name site.com; location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; uwsgi_param UWSGI_PYHOME /var/www/site/env; uwsgi_param UWSGI_CHDIR /var/www/site; uwsgi_param UWSGI_MODULE app; uwsgi_param UWSGI_CALLABLE app; } location /site2 { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; uwsgi_param UWSGI_PYHOME /var/www/site2/env; uwsgi_param UWSGI_CHDIR /var/www/site2; uwsgi_param UWSGI_MODULE app; uwsgi_param UWSGI_CALLABLE app; } } 当我访问site.com时,有时我从/ var / www / site2和其他时间从/ var […]

uWSGI进程丢失了Django会话

我只是浪费了几个小时没有一个真正的解决scheme,这里是问题:我login到Djangopipe理员,并立即或几次点击后,我被抛出。 我在所有的设置和configuration中查找了一会儿。 目前唯一的线索是来自uwsgi日志文件,例如: www.example.com [pid: 20047|app: 0|req: 1120/2060] 217.9.101.34 () {42 vars in 841 bytes} [Thu Jul 18 15:27:35 2013] GET /admin/ => … www.example.com [pid: 20047|app: 0|req: 1122/2063] 217.9.101.34 () {40 vars in 786 bytes} [Thu Jul 18 15:27:37 2013] GET /admin/auth/ => … www.example.com [pid: 20047|app: 0|req: 1124/2066] 217.9.101.34 () {40 vars in […]

部署Django,supervisorctlexception终止

我正在尝试部署Django。 所以把所有东西安装在一个干净的VPS。 我能够使用独angular兽运行服务器,但我试图使用supervisord。 所以我跟着这个教程跟过去一样,但是现在当我用sudo supervisorctl start uniprogress我得到一个错误,说uniprogress: ERROR (abnormal termination) 。 在下面你可以find日志文件。 文件:/opt/myapps/logs/gunicorn_supervisor.log Starting uniprogress as uniusr 2014-04-24 04:54:30 [18053] [INFO] Starting gunicorn 18.0 Traceback (most recent call last): File "/opt/myapps/uniprogress/../bin/gunicorn", line 9, in <module> load_entry_point('gunicorn==18.0', 'console_scripts', 'gunicorn')() File "/opt/myapps/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 71, in run WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run() File "/opt/myapps/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 143, in run Arbiter(self).run() File […]

Djangofile upload与nginx / gunicorn – 媒体权限

我试图让我的Django站点的用户通过模型上的FileField上传文件(通常是PDF)到我的服务器。 但是,当我试图使用由我的模型生成的上传字段时,我一直运行到“Errno 13 Permission Denied”。 在四处搜寻时,我发现了很多潜在的解决scheme,但到目前为止还没有能够正常工作。 这是我第一次真正的部署,我可能会困惑自己。 作为参考,我在Ubuntu 14.04,Django 1.6和gunicorn + nginx上。 现在,我的媒体根目录位于我的项目目录中: BASE_DIR = os.path.dirname(os.path.dirname(__file__)) MEDIA_ROOT = os.path.join(BASE_DIR, "media/uploads") 错误表明正确的目录有问题,所以它是正确的位置。 我试图chown -r媒体目录到www-data:www-data没有成功。 我戳了一下,找出用户正在运行python进程,并试图将“他”作为所有者 – 没有工作。 我把它翻转回原来的所有者和组( root:root ),并尝试将chmod -r改为755和770,这两者也未能解决问题。 如果我chmod -r到777,那么一切都“有效” – 但这不是我想暴露的原因明显的原因。 我的静态文件正在从我的项目根目录(/ var / www / mysite / static)以外的目录收集和正确的服务,所以我试着移动媒体文件夹,并重复上述所有步骤 – 相同的结果。 如何让我的媒体文件夹安全地接受我的用户的上传和下载,而不必将这个安全漏洞打开? 谢谢!