如何让 Uwsgi 与 wagtail (django) 一起工作

How to get Uwsgi working with wagtail (django)

我正在努力跟上鹡鸰的速度。我 运行 在远程服务器上安装它。我已经安装了一个虚拟环境,然后我切换到虚拟环境并按照这里的步骤安装了 wagtail:http://docs.wagtail.io/en/v1.9/getting_started/tutorial.html

  1. pip install wagtail
  2. wagtail start rocker
  3. cd rocker
  4. pip install -r requirements.txt
  5. python manage.py migrate
  6. python manage.py createsuperuser

指南中的下一步是通过 运行ning 测试安装是否有效:

python manage.py runserver

我无法使用远程服务器执行此操作,而且服务器上已经有一个 Django 应用程序 运行ning(使用 uwsgi)。

所以我现在正尝试通过 uwsgi 连接到这个 wagtail 应用程序。

使用启动现有应用程序的字符串作为模板,我修改了它以将套接字绑定到 wagtail 应用程序:-

uwsgi --chdir=/opt/rocker/rocker --module=rocker.wsgi:application --env DJANGO_SETTINGS_MODULE=rocker.settings --master --pidfile=/tmp/rocker.pid --socket=/opt/rocker/core.sock --processes=5 --uid=www-data --gid=www-data --harakiri=20 --max-requests=5000 --vacuum --home=/opt/rocker --daemonize=/var/log/uwsgi/rocker.logroot@caspium:/etc/init.d#

但是应用程序没有启动...uwsgi 日志中的错误说明如下:-

*** Operational MODE: preforking ***
Traceback (most recent call last):
  File "./rocker/wsgi.py", line 18, in <module>
    application = get_wsgi_application()
  File "/opt/rocker/local/lib/python2.7/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
    django.setup(set_prefix=False)
  File "/opt/rocker/local/lib/python2.7/site-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/opt/rocker/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/opt/rocker/local/lib/python2.7/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/opt/rocker/local/lib/python2.7/site-packages/django/conf/__init__.py", line 116, in __init__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
**django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.**
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 4617)
spawned uWSGI worker 1 (pid: 4622, cores: 1)
spawned uWSGI worker 2 (pid: 4623, cores: 1)
spawned uWSGI worker 3 (pid: 4624, cores: 1)
spawned uWSGI worker 4 (pid: 4625, cores: 1)
spawned uWSGI worker 5 (pid: 4626, cores: 1)

django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

我对此进行了研究,发现 Django: ImproperlyConfigured: The SECRET_KEY setting must not be empty 建议添加

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings.local")

manage.py 中,我做到了。这没有解决任何问题。

我还发现了这个 ,它说你需要一个在 settings.py

中指定的密钥

然而wagtail项目中没有settings.py

我创建了一个并添加了一个密钥,但仍然出现错误。

有人可以建议我如何解决这个问题,这样我就可以 运行 uwsgi 连接到 wagtail,并测试它是否正常工作。

谢谢

在 Wagtail 基础项目结构中,settings.py 被拆分为 settings 目录中的几个文件 - 有关详细信息,请参阅 http://docs.wagtail.io/en/v1.9/reference/project_template.html#django-settings。放置 SECRET_KEY 的最佳位置是 settings/local.py,因为您希望它不受版本控制。

问题出在以下文件中:

/opt/rocker/local/lib/python2.7/site-packages/django/conf/global_settings.py

这里指定了一个Secret Key = ''

我添加了一个密钥,并且应用程序 运行 可以与 Uwsgi

经过这么多次尝试后对我有用的是删除整个 settings/ 文件夹并创建一个适当的 settings.py 文件。如果来自@Wagtail 的你们想要分开设置...你可以这样做 https://simpleisbetterthancomplex.com/tips/2016/11/01/django-tip-19-protecting-sensitive-information.html