我有一个使用dev web服务器运行良好的项目,但是我遇到了很多问题,让它在一个带有系统apache (即通过yum安装的)旧的centos盒上运行得很好。我卸载了基于yum的wsgi (因为它确实是针对系统python2.x编译的),并且尝试使用通过pip install mod-wsgi安装的那个。(其中pip是python3 pip)。
在我进入细节之前,我只想问一下互联网我应该卸载apache并尝试从源代码构建一个新版本吗?我应该使用虚拟env吗?皮恩夫还是维图阿列夫?如果是这样的话,应该将mod安装在项目的venv或python3 (/usr/local/)的"system“位置。
似乎其他可怜的灵魂在黑暗中也有同样的一声不响 (旧的centos盒,闪亮的新python版本)。
我已经阅读了很多在线文档,比如如何使用WSGI进行部署和部署Django (Django图书),但是似乎没有人能解决这个特殊的组合。
我希望它能让我使用一个基于Debian的系统,看起来会更容易一些。
以下是我的apache版本信息:
apachectl -V
Server version: Apache/2.2.15 (Unix)
Server built: Aug 18 2015 02:00:22
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"下面是我的httpd.conf文件的一些片段:
LoadModule wsgi_module /opt/deeplogic-django/venv/lib/python3.4/site-packages/mod_wsgi/server/mod_wsgi-py34.cpython-34m.so
# lines omitted....
WSGIScriptAlias / /opt/myproject/myapp/wsgi.py
WSGIPythonPath /opt/myproject:/opt/myproject/venv/lib/python3.4/site-packages
WSGIPythonHome /opt/myproject/venv/bin
<Directory /opt/myproject/myapp>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>下面是我尝试启动apache时遇到的最新错误:
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
[Thu Sep 17 11:51:47 2015] [notice] child pid 1393 exit signal Aborted (6)感谢任何指点、建议、智慧。
发布于 2015-09-21 13:28:46
我在CentOS6.5中成功地使用了Apache和Python3.x(因为它正在工作)。下面是我使用的设置(我坚持使用Python3.3.x,Python3.4与pyodbc有问题)。
首先,安装EPEL..。
yum -y -q install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6然后阿帕奇..。
yum -y -q install httpd mod_ssl httpd-devel然后对于Python (包括一些非常常用的pre):
yum -y -q groupinstall development
yum -y -q install zlib2-devel openssl-devel sqlite-devel bzip2-devel python-devel openssl-devel openssl-perl libjpeg-turbo libjpeg-turbo-devel zlib-devel giflib ncurses-devel gdbm-devel xz-devel tkinter readline-devel tk tk-devel kernel-headers glibc libpng gcc-c++安装Python3.3.5(您可能可以使用更最新的版本):
wget 'http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tgz'
tar -xzf 'Python-3.3.5.tgz'
cd ./Python-3.3.5
CXX=g++ ./configure --enable-shared --quiet
make
make altinstall
ln -s /usr/local/bin/python3.3 /usr/bin/python3.3
echo "/usr/local/lib/python3.3" > /etc/ld.so.conf.d/python33.conf
echo "/usr/local/lib" >> /etc/ld.so.conf.d/python33.conf创建并编译mod_wsgi (同样,您可以使用更最新的版本,或者查看!):
wget "https://github.com/GrahamDumpleton/mod_wsgi/archive/4.2.8.tar.gz"
tar -xzf '4.2.8.tar.gz'
cd ./mod_wsgi-4.2.8
./configure --with-python=/usr/local/bin/python3.3
make
make install和Ubuntu相比非常迟钝,但是你有它。嗯,祝你好运!
发布于 2015-09-18 03:07:59
我在这里发现了一个非常类似的帖子,(Apache2.2.15在CentOS 6.5上)。我不把它标记为重复,因为我不确定问题/解决方案是否相同。
保重。
发布于 2015-09-18 04:44:26
几周前,我自己也尝试过同样的方法,我的vp有centos 6.7和Apache2.2,我的项目是使用python2.7和django 1.8.3开发的,我用来获得一个错误,这意味着无论我安装在虚拟中的哪个版本的python,mod_wsgi都使用默认的pythoni.epython2.6来编译它,并且在python 文档中明确提到,对于django 1.8,您需要python2.7或更高版本。
所以不管你在做什么都是不明智的!
https://stackoverflow.com/questions/32642937
复制相似问题