标签: mod-wsgi

如何找到我的服务器正在使用的 Python 可执行文件?

我是 Linux 新手。

我正在管理一个(Linux - Apache - mod_wsgi - Django)服务器,其中有多个 Python 安装。该站点目前正在运行,但我想找出使用​​哪个 Python 可执行文件来运行它。我知道这不是默认的。

另外,mod_wsgi 如何知道要使用哪个 Python 安装?该.wsgi脚本没有shebang行。

linux python django mod-wsgi apache-2.2

2
推荐指数
1
解决办法
6165
查看次数

我的第一个“生产”debian 服务器配置

我已经使用 Debian 一年了,主要是作为我公司内部服务器的发行版。现在我正在制作一个公共电子商务网站,我计划为此目的在数据中心使用专用的 Debian 服务器。我将接受信用卡付款并将它们直接传输到银行网关,而不存储任何 CC 信息。

我将使用 Django 1.1.1、mod_wsgi、Apache2 来运行 django 和 nginx 来提供静态媒体服务。

  • 你认为这是一个很好的设置吗?
  • 您建议以服务器配置的名义采取哪些安全措施?任何建议、最佳实践和教程的链接将不胜感激:)

debian nginx django mod-wsgi apache-2.2

2
推荐指数
1
解决办法
672
查看次数

如何让 mod_wsgi 只处理 Apache 下的某些 URL?

我有一个处理“/admin/”和“/myapp/”的 Django 应用程序。所有其他请求都应该由 Apache 处理。

我试过使用 LocationMatch 但后来我不得不写一个负正则表达式。我已经尝试过带有 /admin/ 前缀的 WSGIScriptAlias,但是 wsgi_handler 收到了 /admin/ 部分被切断的请求。

有没有更干净的方法让 mod_wsgi 只处理某些请求?

mod-wsgi apache-2.2

2
推荐指数
1
解决办法
1386
查看次数

从linux进程表中查找apache的站点

我正在使用 Ubuntu 服务器,当我运行时,ps aux我得到以下进程表http://pastebin.com/NJsASBek,因为我们可以看到 apache 进程显示如下:

www-data 26487 0.0 0.9 245476 14920 ? SL 17:32 0:00 /usr/sbin/apache2 -k 开始

其中 2687 是 PID。我怎么知道我启用的网站属于那个过程?

这就是我的 apache 站点的定义方式http://pastebin.com/mcew79sH当然,如果需要,我愿意编辑我的 apache 站点。

linux ubuntu mod-wsgi ps apache-2.2

2
推荐指数
1
解决办法
492
查看次数

找不到 API 模块结构 `mod_wsgi'

我正在努力设置Trac使用wsgi,并且在使 mod_wsgi 工作时遇到了麻烦。我下载并安装了 mod_sgi。

[框]# apachectl configtest

httpd:/etc/httpd/conf/httpd.conf 的第 214 行语法错误:无法在文件 /etc/httpd/modules/mod_wsgi.so 中找到 API 模块结构“mod_wsgi”:/etc/httpd/modules/mod_wsgi .so:未定义符号:mod_wsgi

httpd.conf 的第 214 行:

LoadModule mod_wsgi modules/mod_wsgi.so
Run Code Online (Sandbox Code Playgroud)

这是在文件系统上找到的 mod_wsgi.so:

[box]# locate mod_wsgi.so
/usr/lib64/httpd/modules/mod_wsgi.so
Run Code Online (Sandbox Code Playgroud)

我可能会忽略什么?

trac mod-wsgi apache-2.2

2
推荐指数
1
解决办法
1万
查看次数

我如何知道我的每个 apache 站点使用的内存量?

当我运行时,ps aux我得到以下进程表http://pastebin.com/NJsASBek,它显示了每个子进程使用了多少内存。我们可以看到apache进程如下所示:

www-data 26487 0.0 0.9 245476 14920 ? Sl 17:32 0:00 /usr/sbin/apache2 -k start
Run Code Online (Sandbox Code Playgroud)

其中 2687 是 PID,但我不知道它是否属于 foo1.domain.com 或 foo2.domain.com 或 fooX.domain.com 等...

我怎么知道那些 PID 显示的站点(例如 ServerName)是哪个?

这就是我的 apache 站点的定义方式http://pastebin.com/mcew79sH当然,如果需要,我愿意编辑我的 apache 站点。

linux ubuntu mod-wsgi ps apache-2.2

1
推荐指数
1
解决办法
353
查看次数

WSGI 无法访问文件,但权限正确

我正在调试MoinMoinCentOS 上抛出权限错误的问题,但我无法追踪有问题的文件/目录在哪里。

strace -vp <pid>在 apache pid 上运行;当我遇到问题时,我看到了这个:

epoll_wait(10, {{EPOLLIN, {u32=3487534344, u64=140367313734920}}}, 2, 10000) = 1
accept4(6, {sa_family=AF_INET6, sin6_port=htons(52621), inet_pton
    (AF_INET6, "::ffff:105.193.30.91", &sin6_addr), sin6_flowinfo=0, 
    sin6_scope_id=0}, [28], SOCK_CLOEXEC) = 11
## Later on...
read(7, 0x7fffa658ad7f, 1)              = -1 EAGAIN (Resource temporarily 
    unavailable)
Run Code Online (Sandbox Code Playgroud)

但是,由于 apache 已经在运行,因此我open()在称为7;的文件中没有看到对应的文件。因此我看到权限问题,但我仍然不知道哪个文件有问题。

我知道当我重生 apache 时我可以尝试捕获所有打开的文件,但我希望有一种方法可以将文件映射7到真实的文件名......有没有办法做到这一点?

编辑 1:

使用@lain 的指导,我跑了lsof | grep 266474069,但结果不清楚......

[root@lnxlmf moin]# ls -la /proc/9707/fd/7
lr-x------. 1 root root 64 Aug 28 …
Run Code Online (Sandbox Code Playgroud)

linux wsgi mod-wsgi strace apache-2.2

1
推荐指数
1
解决办法
1160
查看次数

Django 2.1 在 centos 7 上部署,使用 apache、mod_wsgi、python3 venv

我偶然发现了这个看似最相关的部署选项,因为指南似乎要么使用 python2 引用 mod_wsgi,要么在预期路径不同的基于 deb 的系统上进行部署。
所以我按照以下步骤操作:

#repos for python3.6, wsgi for python3.6
yum install epel-release centos-release-scl

#base packages
yum install python36 python36-devel httpd httpd-devel rh-python36-mod_wsgi

#python3.6 venv
cd /var/www; 
python36 -m venv django-venv
source django-venv/bin/activate
pip3 install django

#apache config to support wsgi
edit /etc/httpd/conf/httpd.conf to include
LoadModule wsgi_module modules/mod_wsgi.so
Run Code Online (Sandbox Code Playgroud)

Apache 配置服务位于 /var/www/mysite 的 django 内容

<VirtualHost *:80>
 ServerAdmin foo@mysite.com
 ServerName mysite.com
 ServerAlias www.mysite.com

 WSGIDaemonProcess mysite python-home=/var/www/django-venv/ python-path=/var/www/django-venv/lib/python3.6/site-packages
 WSGIProcessGroup mysite
 WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py

 Alias /static /var/www/mysite/static
 <Directory /var/www/mysite/mysite/static>
  Require …
Run Code Online (Sandbox Code Playgroud)

python django mod-wsgi centos7

1
推荐指数
1
解决办法
7275
查看次数

apache 上的网站太多

我有一个虚拟主机太多的服务器,大约 500 个虚拟主机,其中一半使用 SSL。

所有这些主机都使用 mod_wsgi 为 Django 应用程序提供服务。

我注意到在一定数量的虚拟主机之后,我的所有服务器都停止工作并且所有站点都崩溃了,我可以使用以下行来处理降低每个虚拟主机的线程数:

WSGIDaemonProcess my.domain python-home=/var/www/env python-path=/var/www/my_app threads=1
Run Code Online (Sandbox Code Playgroud)

apache 在达到大约 1300 个线程时崩溃(当我检查 htop 时)。apache的错误日志显示没有找到Django模块,但这不是真正的错误,因为一切正常,只是在vhosts数量过高时发生。所以我认为我在 Linux 中的进程或线程达到了某种限制。我使用的是 Ubuntu 18.04、Apache 2.4,并且有足够的 RAM 和 CPU,服务器有 4 GB 的 RAM 并且只使用了 2 GB,平均 CPU 为 10% 到 20%。

我还检查了我的线程最大限制:

cat /proc/sys/kernel/threads-max
30893
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能在不创建另一台服务器的情况下增加我的 apache 中虚拟主机的容量。

linux ubuntu django mod-wsgi apache-2.4

1
推荐指数
1
解决办法
284
查看次数

具有不同 Python 版本的 mod_wsgi+Django

我的服务器默认运行 Python 2.4,我曾经make altinstall为我的 Django webapp 安装一个备用的 Python 2.6。

但是, mod_wsgi 似乎默认使用/usr/bin/python(2.4) 而不是/usr/local/bin/python2.6.

有没有一种简单的方法可以强制 mod_wsgi 使用 Python 2.6?

python django mod-wsgi

0
推荐指数
1
解决办法
6082
查看次数

标签 统计

mod-wsgi ×10

apache-2.2 ×7

django ×5

linux ×5

python ×3

ubuntu ×3

ps ×2

apache-2.4 ×1

centos7 ×1

debian ×1

nginx ×1

strace ×1

trac ×1

wsgi ×1