昨天配置了一天的 django 和 wsgi ,记录一下
1.安装apache
===========
首先在 http://httpd.apache.org/docs/2.4/install.html 中把requirments 中的东西先 装好,有些需要安装 -dev 的版本。
这一步弄好后接下来基本没什么问题 ./configure 中 --prefix =PREFIX 不加的话就是默认安装 到/usr/local/apache2
2.安装mod_wsgi
=================
接下来是mod_wsgi,昨天有半天的时间都是在战mod_wsgi的安装。
首先,为了指定mod_wsgi 用python3,需要使用
./configure --with-python=/usr/bin/python3
如果你发现无法识别apached的地址,那么就要指定你的安装地址(PREFIX),我是默认安装的,所以地址是/usr/local/apache2/bin/apxs
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/bin/python3
好了,接下来应该会报告错误,
/usr/bin/ld: cannot find -lpython3.3
官方文档的解决方案 点击打开链接
主要是关于python3 的库是否共享和是否是以64位编译的,如果共享了而且是64位的(fedora20 64bit应该都满足这样),那么解决方案是你需要作一个连接。
我碰到的就是需要作连接的问题,应为wsgi默认寻找 /usr/lib64/python3.3/config 下的libpython3.3.so
很不幸,第一,python3.3 目录下 的是config-3.3m.
第二,config-3.3m 下没有连接到libpytho3.so 的软连接。
解决方案:
显而易见了,第一,在config-3.3m 下建立连接到 /usr/lib64/libpython3.so 的软连接,文件的名字应该叫 libpython3.3.so
sudo ln -s /usr/lib64/libpython3.so ./libpython3.3.so
然后 在python3.3目录下,
sudo ln -s /usr/lib64/python3.3/config-3.3m ./config
这样 就能找到库了
接下来跟着官方文档安装完成。
3.部署django
事实上,跟着django的教程作点击打开链接
我遇到的最多的问题是,打开网页后403 Forbdden。
首先,强烈建议要部署的项目不要放在/home/ 里面,一方面是位安全考虑,一方面是我在/home/下的东西全都是403.
wsgi 官方文档中放置项目的地址是
/usr/local/www/
另外,我高不懂
Using mod_wsgi daemon mode
Alias /static/ /path/to/mysite.com/static/
<Directory /path/to/mysite.com/static>
Require all granted
</Directory>
像这样的东西,要按照你的static的存放的地址来,比如我的wsgi.py地址是/usr/local/www/learn/learn/wsgi.py
Alias /static/ usr/local/www/learn/learn/static/
<Directory usr/local/www/learn/learn/static/>
Require all granted
</Directory>
另外关于admin的static 的问题,在settings.py 里加上
STATIC_ROOT ='usr/local/www/learn/learn/static/'
>>shell python3 manage.py collectstatic
admin 用到的static 文件将存放在static/admin下。
>>shell sudo chmod -R 777 usr/local/learn/