我正在我从头开始设置的Ubuntu 8.10服务器上部署我的django站点.我对此完全陌生,所以可能有很多我错过的东西,但很高兴找到了我的方式来部署一个网站.
我的最后一个障碍:
我收到postgresql的身份验证错误
[Sun Apr 19 18:44:05 2009] [error] [client 124.254.102.127]
mod_wsgi (pid=30304): Exception occurred processing WSGI script '/home/acacian/webapps/acacian/deploy/acacian.wsgi'.
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/handlers/wsgi.py", line 241, in __call__
response = self.get_response(request)
File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/core/handlers/base.py", line 73, in get_response
response = middleware_method(request)
File "/home/acacian/webapps/pinax-env/src/django-openid/django_openid/consumer.py", line 383, in process_request
if self.session_key in request.session:
File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/contrib/sessions/backends/base.py", line 43, in __contains__
return key in self._session
File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/contrib/sessions/backends/base.py", line 172, in _get_session
self._session_cache = self.load()
File "/usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg/django/contrib/sessions/backends/db.py", line 16, in load
expire_date__gt=datetime.datetime.now()
File …Run Code Online (Sandbox Code Playgroud) 我之前因为postfix而安装了python.然后我安装了Django.接下来,我尝试安装mod_wsgi来部署Django应用程序.我收到此错误:
make:***[mod_wsgi.la]错误1
显然这是由于旧版本的python.我试图安装更新版本的python,但我仍然遇到同样的问题.这是我安装的:
/usr/lib/python2.4/ /usr/lib/python2.5
我试图指定在运行Make for mod_wsgi时使用哪个python安装.
有任何想法吗?
谢谢.
我正在尝试部署一个Django项目,并使用Apache2与mod_wsgi.以下是我的Apache conf文件中的相关行:
WSGIScriptReloading On
WSGIDaemonProcess myprojectcom
WSGIReloadMechanism Process
WSGIProcessGroup myprojectcom
WSGIApplicationGroup myprojectcom
WSGIPassAuthorization On
WSGIScriptAlias / /home/myproject/myproject/deploy/deploy.wsgi
Run Code Online (Sandbox Code Playgroud)
我已经为许多其他部署使用了非常类似的conf文件,但这是我第一次收到以下错误:
/etc/apache2/sites-available$ sudo /etc/init.d/apache2 restart
Syntax error on line 8 of /etc/apache2/sites-enabled/myproject.com:
Invalid command 'WSGIReloadMechanism', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
Run Code Online (Sandbox Code Playgroud)
但是,我没有看到任何语法错误.我在Ubuntu上,使用libapache2-mod-wsgi包.可能有什么不对?
我正在尝试安装并启动一个简单的CherryPy服务器作为Windows服务.
这是脚本:(删除了一些行来缩短它.当从命令行手动执行时它完全正常工作)
app = AdminMediaHandler(django.core.handlers.wsgi.WSGIHandler())
logged_app = TransLogger(app)
server = wsgiserver.CherryPyWSGIServer( ('127.0.0.1', 8632), logged_app, server_name='localhost', numthreads=20 )
try:
server.start()
except KeyboardInterrupt:
server.stop()
Run Code Online (Sandbox Code Playgroud)
我正在使用sc.exe安装和启动服务.安装顺利,但我似乎无法启动该服务.
使用的命令是:(注意路径中有空格,虽然我用双引号处理它,并且在binPath通过命令行手动执行其字符串时正在工作)
> sc.exe create "ServiceName" binPath= "\"C:\Path to Python\python.exe\" \"C:\Path to CherryPy Script\cherryserver.py\""
> sc.exe start "ServiceName"
Run Code Online (Sandbox Code Playgroud)
无论是尝试使用GUI sc.exe还是通过services.mscGUI 启动服务,我都会收到此错误:
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
Run Code Online (Sandbox Code Playgroud)
据我所知,这是因为python.exe没有实现Windows服务API.
我不希望.exe使用py2exe从脚本创建一个.
我发现 …
我有以下 json 对象数据,我如何使用 python 来获取"BuildId"和第二个"ftp" (注意:它在 内"ArchiveLocation")值?
{"BuildId":"4c53575f-36f48a7f1f37",
"EventId":1,
"ArchiveLocations":
[
{
"archive_server":"CA",
"ftp":"ftp://ABC1.com/2011_V2/2011.4.103.002",
"dfs":"\\\\ABD\\dfs\\Department\\2011.4.103.002"
},
{
"archive_server":"CT",
"ftp":"ftp://ABC2.com/2011_V2/2011.4.103.002",
"dfs":"\\\\ABD.com\\dfs\\Department\\2011.4.103.002"
}
]
}
Run Code Online (Sandbox Code Playgroud) 我今天收到了以下关于 Django 1.5 错误的电子邮件。我相信我已经正确设置了 ALLOWED_HOSTS。有人试图探测我的网站是否存在漏洞......?或者我错过了什么?我询问探测的原因是因为使用了 scanproxy.net 主机。
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 92, in get_response
response = middleware_method(request)
File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py", line 57, in process_request
host = request.get_host()
File "/usr/local/lib/python2.7/dist-packages/django/http/request.py", line 72, in get_host
"Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host)
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): www.scanproxy.net
<WSGIRequest
path:/p-80.html,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{},
META:{'CONTENT_TYPE': 'text/html',
'DOCUMENT_ROOT': '/var/django/projects/Portfolio',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的问题.例如:我需要根据给定的字符串导入一个模块,我使用类似的东西
string = 'testmodule'
module = __import__(string)
Run Code Online (Sandbox Code Playgroud)
它有效.现在我需要从给定字符串中调用该模块中的函数
return module.function()
Run Code Online (Sandbox Code Playgroud)
需要像以下一样工作:
string = 'function'
module = 'testmodule'
return module.string()
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用exec,而我现在正在使用它
string = 'function'
module = 'testmodule'
exec('ret = ' + module + '.' + string + '()')
Run Code Online (Sandbox Code Playgroud)
但是如何在不使用该exec方法的情况下完成它,因为它太慢了?
我继承了一个使用 CGI 脚本的代码库。据我所知,它们效率很低,因为每次收到请求时它们都会分叉一个新进程。我目前正在尝试将它们转换为 WSGI,但我对以下内容感到困惑:
WSGI 和 CGI 在代码方面有何不同?我知道该应用程序必须是可调用的,但除此之外,我不确定还需要做什么来更改它。
我如何衡量我所看到的效率提升随着变化而明显的变化?
其他可能有用的信息是我将使用 Apache 和 mod_wsgi。
如果我可以提供任何其他信息,请告诉我。
如他们的文档所述,我已经在Ubuntu 14.04上安装了mod_wsgi 。虽然我没有从Apache得到任何错误或任何东西,但是我的Django设置不起作用(不知道为什么这样),所以我想重新开始并使用libapache2-mod-wsgi。
但是,我不知道如何卸载mod_wsgi。对这个问题的一个更一般的问题的答案建议尝试make uninstall在这种情况下不起作用。
make -n install 给我以下输出:
/usr/bin/apxs2 -c -I/usr/include/python2.7 -DNDEBUG -D_FORTIFY_SOURCE=2 -Wc,-g -Wc,-O2 src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/lib -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm
/usr/bin/apxs2 -i -S LIBEXECDIR=/usr/lib/apache2/modules -n 'mod_wsgi' src/server/mod_wsgi.la
Run Code Online (Sandbox Code Playgroud)
卸载该程序到底要做什么?
谢谢!
编辑:我正在使用mod_wsgi-4.5.3。
我一直在这样跑uwsgi:
uwsgi --ini CMS_uwsgi.ini
Run Code Online (Sandbox Code Playgroud)
它曾经可以工作。但是,uwsgi几周后,我尝试再次运行,现在出现此错误:
uwsgi: error while loading shared libraries: libpython3.4m.so.1.0:
cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不确定为什么现在会出现此错误。可能是因为最近我做了
sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
删除曾经作为依赖安装但不再存在的已安装软件包(如此处所述https://askubuntu.com/questions/187888/what-is-the-correct-way-to-completely-remove-an -应用)。
我试图通过运行找到它:
find -name "libpython3.4m.so.1.0"
Run Code Online (Sandbox Code Playgroud)
但它没有返回任何东西。关于如何解决此问题的任何想法?
我正在使用Lubuntu。
我必须安装mod_wsgi在 Apache 2.4 中。我在过去两个小时内搜索了该mod_wsgi.so文件,但什么也没找到。
在哪里可以找到 Windows 上适用于 Python 3.6 的 Apache 2.4 的此文件?
我尝试自己编译它,但出现一些错误。系统不能包含 ap_config.h ...
Apache 应用程序上的 Django mod_wsgi在 Ubuntu 20.04 和以前的版本中使用下面提到的配置工作正常,但是当我在 Ubuntu 22.04 中执行相同的配置时,它会收到403 Forbidden error。错误日志中的权限被拒绝:mod_wsgi 。
我尝试更改所有文件的权限,但不起作用,
阿帕奇配置:
<VirtualHost *:80>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /home/ubuntu/mydjango/mydjango>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
alias /static /home/ubuntu/mydjango/static
<Directory /home/ubuntu/mydjango/static>
Require all granted
</Directory>
WSGIDaemonProcess myapp python-home=/home/ubuntu/mydjango/venv python-path=/home/ubuntu/mydjango
WSGIProcessGroup myapp
WSGIScriptAlias / /home/ubuntu/mydjango/mydjango/wsgi.py
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
阿帕奇错误日志:
Current thread 0x00007fb606719780 (most recent call first):
<no Python frame>
[Sun Jun 05 05:59:07.594727 2022] [wsgi:warn] [pid 37044:tid 140419768883072] (13)Permission denied: mod_wsgi (pid=37044): Unable to …Run Code Online (Sandbox Code Playgroud) 完整脚本:
import pprint
def application(environ, start_response):
start_response('200 OK', [('content-type', 'text/html')])
aaa = ['a','b','c']
pprint.pprint(aaa)
Run Code Online (Sandbox Code Playgroud)
如果我要在终端上运行它,那就是......
>>> import pprint
>>> aaa = ['a','b','c']
>>> pprint.pprint(aaa)
['a', 'b', 'c']
>>>
Run Code Online (Sandbox Code Playgroud)
你可以看到它工作正常.但是通过wsgi-script它不起作用.
error_log中:
TypeError:'NoneType'对象不可迭代
BTW是"pprint"PHP中的"print_r()"等价?