我试图在AWS上部署一个django应用程序,其中我有一个运行nginx / uwsgi的EC2实例,另一个EC2实例,我已经安装了MySQL 5.5。 都属于默认组(启用SSH,HTTP,HTTPS和MYSQL)。 最后,我会分组数据库和应用程序/ Web服务器,但现在我想让应用程序工作。 我的django数据库设置如下所示: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db', 'USER': 'db_user', 'PASSWORD': 'db_pwd', 'HOST': '<public dns of MySQL EC2 instance(tried also private ip)>', 'PORT': '3306', } } 每次我尝试运行syncdb我得到以下错误: _mysql_exceptions.OperationalError:(1130,“Host'ip-xx-xx-xx-xxx.ec2.internal'不允许连接到这个MySQL服务器”) 请注意,当我在与应用程序的Web /应用程序服务器相同的EC2实例中设置MySQL时。 在这种情况下我的设置文件数据库设置如下所示: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db', 'USER': 'db_user', 'PASSWORD': 'db_pwd', 'HOST': '', […]
我有两台服务器,一台Dev服务器和一台Production服务器。 Production服务器运行一个活的Django站点,而Dev服务器有一个Django项目的副本。 我使用Dev服务器在Django站点上工作,进行改进,修复错误等。一旦我对Dev版本的工作方式感到满意,我将从Dev服务器移动整个Django目录,并replaceProduction上的相同目录服务器。 两台服务器不在同一个局域网中,所以这个过程并不简单。 目前为止我还有一些问题。 移动整个目录是费力和费时的 如果我只修改了一些文件,甚至更换一些文件比整个目录更繁琐,因为项目越来越大,我担心我会错过一些东西 移动东西后,我经常遇到许可问题 这是非常低效的,而且由于时间不够,我没有想出一个新的方法。 现在只是失控,我需要解决这个问题。 我想我需要移动到这个过程的GIT存储库。 但我的问题是,我将如何设置这一切呢? 我是否将Production服务器上的存储库托pipe起来,从Dev服务器上拉出来,做功,然后提交? 然后,我会从Production服务器(相同的服务器回购托pipe)拉运行当前的工作版本? 我是否在Dev Server上托pipe回购,从同一台服务器上提取回购,然后将Production版本拖到Production服务器上? 我应该在不同于Production服务器和Dev服务器(第三台服务器)的服务器上托pipe回购吗? Django有什么特别的考虑和回购,我需要担心? 谢谢您的帮助 :)
当试图使用djangoconfiguration将django应用程序部署到heroku时,我不断收到错误: ValueError:无法设置configuration“config.settings.Production”:秘密值“SECRET_KEY”未设置 但是,当我运行heroku config:get SECRET_KEY ,我得到了一个结果。 这是相同的价值,设置它。 我在我的本地环境中随机生成一个string,并通过运行heroku config_set SECRET_KEY=ASFASDF将该string设置为环境值SECRET_KEY heroku config_set SECRET_KEY=ASFASDF 我的settings.py文件的适当的行是: SECRET_KEY = values.SecretValue() 我不明白为什么djangoconfiguration似乎不能拿起这个特定的环境variables…
在本教程之后 ,我能够在AWS EC2实例(运行Ubuntu 16.04)上的virtualenv中设置Django,Gunicorn和nginx,然后继续创build一个Upstart文件来“守护”整个事物。 激活virtualenv后,我检查了: Django的工作 – 我能够通过运行以下端口8000访问我的Django项目: ./manage.py runserver 0.0.0.0:8000 当访问mydomain.com:8000我被默认的Django页面所欢迎。 Gunicorn工作&能够服务Django应用程序 – 我能够通过从我的项目的文件夹(用我的实际项目名称replace项目名称)运行此Django应用程序访问: gunicorn –bind 0.0.0.0:8000 projectname.wsgi:application 当这次访问mydomain.com:8000时,欢迎页面再次迎来了我的欢迎页面,当将/admin追加到URL的末尾时,我能够看到login屏幕减去 CSS(因为Gunicorn没有意识到静态CSS文件,现在可以根据教程确定)。 从这里我开始创build下面的systemd文件(当masterfolder用来显示所有动作发生的文件夹时, myuser是我的系统用户( ubuntu ,因为这是一个Ubuntu实例): [Unit] Description=gunicorn daemon After=network.target [Service] User=myuser Group=www-data WorkingDirectory=/home/myuser/masterfolder ExecStart=/home/myuser/masterfolder/myvirtualenv/bin/gunicorn –workers 3 –bind unix:/home/myuser/masterfolder/projectname.sock$ [Install] WantedBy=multi-user.target` 我遇到了两个问题: 没有任何套接字正在创build – 检查nginx日志文件之外,以及在 virtualenv(不完全确定为什么他们是相同的,顺便说一句)我看到了同样的错误: 2017/01/17 15:12:43 [crit] 12403#12403: *3 connect() to unix:/home/myuser/masterfolder/projectname.sock failed (2: […]
我为一本杂志做了一个django网站,在mag.org/django-sitefind它。 旧网站仍然位于mag.org/httpdocs(由mediatemple托pipe)。 我希望它能够打到www.mag.org,打开django站点(就像目前的情况一样,在conf文件中configuration),而archive.mag.org命中则为httpdocs服务旧站点,是,它是由Apache而不是mod_python。 这是可能通过mod重写,或mod别名? 由mediatemple dv主持。 httpd.conf被plesk重写; 对于每个域/子域,httpd.conf访问仅限于单个vhost.conf。 我只需要[/mag.org/subdomains/archive/conf/vhost.conf]中的一个简单的[DocumentRoot /var/www/vhosts/mag.org/httpdocs]。 现在mag.org指向由mod-python提供的django站点,而archive.mag.org指向由apache提供服务的httpdocs文件夹。 (我最初发布这个堆栈溢出,但我认为它更适合于serverfault。)
我从Django的数据库查询开始需要1-2秒,我无法弄清楚为什么。 不要太大的网站,每秒约1-2个请求(打Django;静态文件只是由nginx提供)。 让我困惑的是,我可以使用debugging模式复制Django shell中的缓慢。 但是,当我在sql提示符下发出完全相同的查询时,它们很快。 查询返回大约需要一秒钟,但是当我检查connection.queries时,它报告的时间低于10毫秒。 下面是一个例子(来自Django shell): >>> p = PlayerData.objects.get(uid="100000521952372") >>> a = time.time(); p.save(); print time.time() – a 1.96812295914 >>> for d in connection.queries: print d["time"] … 0.002 0.000 0.000 我怎样才能找出这额外的时间在哪里? 我在守护进程模式下使用Apache + mod_wsgi,但是这也只发生在django shell中,所以我认为它不是与apache相关的。
我有一个VPS服务器上的Django应用程序(128MB RAM)当我用python manage.py runserver启动它,它的工作原理是完美的,但如果我尝试通过Apache / mod_wsgi使用它,很快就会导致主要的放缓(点击几下随机链接在我的网页上),似乎耗尽内存。 这甚至发生在“hello world”应用程序中。 但它有点奇怪,因为它运行良好wit. manage.py runserver任何想法? /var/log/apache2/error.log —————————– [Wed Feb 10 00:00:40 2010] [error] [client 65.55.37.202] File does not exist: /var/www/robots.txt [Wed Feb 10 00:01:22 2010] [error] [client 65.55.37.202] File does not exist: /var/www/file [Wed Feb 10 00:02:32 2010] [warn] child process 2023 still did not exit, sending a SIGTERM […]
我不知道如何在Nginx / fastcgi的非根目录下部署一个django站点,比如localhost:8080 / myproject /而不是localhost:8080 /; 我所见过的所有例子都假定Apache或者站点的根目录。 这里是我的nginx.conf的相关部分: server { listen 8080; server_name localhost; location /myproject/ { # host and port to fastcgi server fastcgi_pass 127.0.0.1:3030; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; #fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param […]
我在Apache / mod_wsgi下的RHEL实例上运行Django,并且在为Python进程设置一些环境variables时遇到了问题。 所有组件(Apache,Python,mod_wsgi,外部库)都是从源码构build的,而不是从仓库安装的。 具体问题是对Oracle支持的支持。 我能够连接到Oracle实例没有问题,如果我自己启动Python时在命令行上设置ORACLE_HOME和LD_LIBRARY_PATH ,但我似乎无法将这些variables传递给WSGI进程。 我在Apache日志中得到的具体错误消息是: ImproperlyConfigured: Error loading cx_Oracle module: libclntsh.so.11.1: cannot open shared object file: No such file or 目录 我已经尝试在VirtualHost(使用SetEnv ),Apache的envvars文件,apache用户的.bashrc文件和.wsgi文件(使用os.environ['ORACLE_HOME']='…' )设置variables,所有没有效果。 在前三种情况下,这些variables似乎对Python没有任何作用 – 打印os.environ['ORACLE_HOME']表示没有设置值。 我也尝试从LD_RUN_PATH evn var set的源代码重buildmod_wsgi.so,根据这里的build议: http ://groups.google.com/group/modwsgi/browse_thread/thread/91dfa97330dfca2/474f818304d741d4但是,这也是无效的。 我错过了什么? 我怎样才能让这些环境成功通过? 提前致谢!
我已经在CentOS 6 x64(3.06GHz i3 540,4GB)上configuration了uWSGI和Django,它应该很容易处理2500 rq / s,但是当我运行abtesting(ab -n 1000 -c 100)时,性能在92-100 RQ /秒。 Nginx: user nginx; worker_processes 2; events { worker_connections 2048; use epoll; } uWSGI: Emperor /usr/sbin/uwsgi –master –no-orphans –pythonpath /var/python –emperor /var/python/*/uwsgi.ini [uwsgi] socket = 127.0.0.2:3031 master = true processes = 5 env = DJANGO_SETTINGS_MODULE=x.settings env = HTTPS=on module = django.core.handlers.wsgi:WSGIHandler() disable-logging […]