我将在Ubuntu Server上使用uwsgi为django项目提供服务,但该项目无法运行。
我正在使用python 3.6,但uwsgi向我显示它是2.7
我将默认python更改为python3.6,但uwsgi仍然无法正常工作。
这是我的命令:
uwsgi --http :8001 --home /home/ubuntu/repository/env --chdir
/home/ubuntu/repository/project -w project.wsgi
这是错误消息:
*** Starting uWSGI 2.0.18 (64bit) on [Tue Jun 4 21:03:58 2019] ***
compiled with version: 5.4.0 20160609 on 04 June 2019 11:39:14
os: Linux-4.4.0-1079-aws #89-Ubuntu SMP Tue Mar 26 15:25:52 UTC 2019
nodename: ip-172-31-18-239
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /home/ubuntu/repository/charteredbus
*** running under screen session 1636.sbus ***
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /home/ubuntu/repository/charteredbus
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 15738
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :8001 fd 4
spawned uWSGI http 1 (pid: 8402)
uwsgi socket 0 bound to TCP address 127.0.0.1:39614 (port auto-assigned) fd 3
Python version: 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
Set PythonHome to /home/ubuntu/repository/env
ImportError: No module named site
答案 0 :(得分:0)
日志表明没有名为site的模块
ImportError:没有名为站点的模块
我认为网站是Django应用。 您是否在INSTALLED_APPS(settings.py)中注册了这个
否则,您可能需要注册您的应用程序。 (网站应用中的apps.py)
请帮助我。
碧玉
答案 1 :(得分:0)
不幸的是,必须使用与您的virtualenv匹配的python版本来编译uWSGI。这意味着:如果uWSGI是使用python 2.7编译的,则不能在virtualenv(以及Django应用)中使用python 3.6。
幸运的是,有一些方法可以解决此问题:
第一个非常简单。您需要做的就是在启动脚本中更改uWSGI二进制文件的路径,以指向安装在virtualenv中的uWSGI。 (如果您要使用systemd启动uWSGI,我建议使用systemd用户单元。只是不要忘记运行loginctl enable-linger
)
第二个并不那么复杂。首先,您必须安装没有python插件的uWSGI,然后为所需的所有python版本安装单独的插件。除此之外,您还可以找到here。如果您正在使用uWSGI,则系统软件包存储库中可能已有准备好的插件。
答案 2 :(得分:0)
对于那些不能(或未能)按照@GwynBleidD 提到的第二个选项构建与语言无关的 uwsgi 二进制文件的人,您还可以构建一个单独的独立 uwsgi 二进制文件,绑定到不同的 python 插件,通过:
保留之前构建的 uwsgi 二进制文件
通过在 Header always set Strict-Transport-Security "max-age=63072000;"
Header set X-Content-Type-Options "nosniff"
#Restrict iframe to example.com and same-origin only
Header always append X-Frame-Options ALLOW-FROM=https://example.com
Header always append X-Frame-Options "SAMEORIGIN"
Header set Cache-Control "no-cache, no-store, no-transform"
Header set Pragma "no-cache"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy: "strict-origin-when-cross-origin"
Header set Feature-Policy: "fullscreen 'self'"
Header set x-permitted-cross-domain-policies "none"
中运行 make clean
来清理以前的构建
例如在/PATH/TO/UWSGI_SOURCE_FOLDER
中运行命令YOUR_PYTHON_VERSION uwsgiconfig.py --build
/PATH/TO/UWSGI_SOURCE_FOLDER