fedora20 下 django1.6+python3.3 部署到 wsgi 和apache2.4

昨天配置了一天的 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
static 的地址在 usr/local/www/learn/learn/static/
那么就应该这样写
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/'


then,
>>shell python3 manage.py collectstatic



admin 用到的static 文件将存放在static/admin下。
大概就能运行了..



4.数据库权限
我用的是sqlite3,关于python3 +mysql django 官方文档上建议可以使用mysql-for-python3,这是非官方的。我今天试了一下,怒跪...
很有可能你会没有权限写db.sqlite3
我接下来的一个晚上都在弄这个。我也是迷迷糊糊的,总之 
>>shell sudo chmod -R 777 usr/local/learn/


放弃治疗把。这样就可以用了。

5.另外
总之,sqlite3 不支持并发,平时实验一下可以,但是生产的话还是应该选用mysql 或者postgresql , 介于mysql 不太支持python3,我准备去是一下postgresql。



        

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值