ubuntu下配置Apache+mod_wsgi+Django项目(个人测试)

科技动态 2017-06-12

经过了一个星期的摸索,查找资料以及实验,我搭建的环境基本能用(还有就是Django后台的静态文件加载的问题)

这里面只是介绍一下我的过程,因为对应Apache还不是很熟练,特别是配置文件。只能供大家参考一下。

网上的资料比较多,但是可能不适合自己,只能取其精华,但是没经验的话,不知道哪里是精华,所以就多试试吧。写这个博客,也是对自己这一段时间坚持学习的鼓励。

转发,请标记出处:http://www.cnblogs.com/if-then/p/6959730.html

环境 Ubuntu16.04LTS

Apache 2.4.25

mod_wsgi :mod_wsgi-4.5.15.tar.gz

Django :1.8

Apache 搭建:

Apache搭建有两种方式

一,下载源码http://archive.apache.org/dist/httpd/,编译安装的方式

这种方式呢,我下载的是httpd-2.4.25.tar.gz

源码安装还是要看官方文档,它对应系统有依赖包主要有 apr-util-1.5.4 、pcre-8.38,下载编译前看看文档的注意事项,少走弯路!

二,sudo apt-get install apache2

这种安装方便,但是我安装完,配置文件与源码安装的方式不一样,要在site-enable下,而且是虚拟机方式的配置文件,我网上找资料的时候,多半是看到的httpd.conf配置的,所以这个没深入看。后来由于和源码方式的有冲突,我就删除了

网上资料有的写配置这个,有的写配置httpd主配置文件。我只能不严谨的说应该差不多,^_^

安装方式还是比较简单,不多说了!只有安装完,访问127.0.0.1 能看到it's works ?还是 it works? 就行了!

安装mod_wsgi

注意: 安装这个宝贝也需要一些依赖,也要先看官方文档!

下载了mod_wsgi-4.5.15.tar.gz

解压

tar -zxvf mod_wsgi-4.5.15.tar.gz

进入目录,./configure

遇到一个问题 /bin/sh: 1: apxs: not found

百度有的说要安装httpd-devel

但在Apache网站上,只有for fedora and Centos 的rpm包

本U没有对应的包

再查查看~~~转发,请标记出处:http://www.cnblogs.com/if-then/p/6959730.html

上官方文档,也时有写的

If you are running Debian or Ubuntu Linux with Apache 2.4 system packages, regardless of which Apache MPM is being used, you would need both:

apache2 (此包应该不用,如果安装了相当于安装了一个应用服务,所以你在试的时候先装下面的dev,如果不行,再装吧)

apache2-dev

看来一切都得看官方文档的靠谱!!将这个两个用 apt-get install 安装上

再编译~~~结果还是不行~~我泪~~~

报错如下

  1. /usr/bin/ld: /usr/local/lib/libpython2. 7.a(abstract.o): relocation R_X86_64_
  2. 32 against `a local symbol' can not be used when making a shared object; rec
  3. ompile with -fPIC

这是要重新安装python2.7而且重新编译 用-fPIC参数(这里注意,安装的时候如果你用的是sqlite3的数据库,这里就一块弄了,否则django应用都起不来,先安装一个sudo apt-get install libsqlite3-dev,这样再./configure --prefix=/usr/local/ CFLAGS=-fPIC , make的时候就不会提示

Python build finished, but the necessary bits to build these modules were not found:

_bsddb _sqlite3
_tkinter ........

需要单独安装的这个提示了)

我因为这个和sqlite3安装的事情,多安装了好几遍python2.7 因为时个老电脑1cpu2核的,结果编译耗费了老久时间了~~~~

命令如下 进入python源码目录下

./configure --prefix=/usr/local/ CFLAGS=-fPIC ### ps:--enable-optimizations 这个参数可加可不加,加上的话make的时间长,我经过多次的话,后来在 test_logging 的过程就报错了,网上没查到,可能跟我的主机名有关,但不确定)

make

sudo make install

安装完的路径为 /usr/local/lib/下的python2.7

然后再安装mod_wsgi

安装完后,会在Apache 安装目录/usr/local/apache24/下的文件夹modules中存在 mod_wsgi.so,(主要就是为了它!!,网上有说下载so文件,拷贝到这个文件夹下,但我没找到哪里下载)

到此安装算成功了,但是我们还是测试一下,看可以用不

在 /usr/local/apache24/cgi-bin/下 建立一个测试脚本 test.wsgi(名字随便,叫wsgi.py更好吧,因为Django就是用这个呢!)

def application(environ, start_response):

status = '200 OK'

output = 'Hello World!'

response_headers = [('Content-type', 'text/plain'),

('Content-Length', str(len(output)))]

start_response(status, response_headers)

return [output]

以上脚本在官网上也有,我是在谁的博客里复制了一份。复制粘贴的时候,检查一下格式是否符合python

然后配置 sudo vi /usr/local/apache24/conf/httpd.conf

找到一堆 LoadModule XXXXXXX的地方,增加一条

LoadModule wsgi_module modules/mod_wsgi.so

在 ScriptAlias /cgi-bin/ " /usr/local/apache24/
cgi-bin/" #当然了 注意 路径
可能不一样

加上

ScriptAlias /test "

/usr/local/apache24/cgi-bin/test.wsgi" #起了一个test的别名指向这个文本

,可以在浏览器里访问http://127.0.0.1/test

如果出现Hello World!,就成功了,如果没有,再加一窜下面的访问控制权限的!

Require all granted

到这,环境应该就没问题了,希望你能够顺利到这!

安装Django项目

这里要先说的是,我对与配置文件还不是很熟悉,怎么配置是最小及最优还不是很了解,只能说是能用

到这呢,就只是配置文件的事情了,如果你的python加载模块都正常的话,如果不正常,你看缺少什么模块就加什么,用pip安装很简单,但是pip建议还是源码安装吧

还有就是不要装多个python,就留一个就行了。

这里面主要先改一下

DocumentRoot "/usr/local/apache24/htdocs" 路径换成你的Django的路径,

指向项目目录,不要指向应用下,如 /usr/app/mystie/

mysit

├── dbshell.bat

├── db.sqlite3

├── manage.py

├── migrate.bat #bat文件是我在window上编写程序时写的,可以忽略!

├──

mysit

├── __init__.py

├── __init__.pyc

├── settings.py

├── settings.pyc

├── urls.py

├── urls.pyc

├── wsgi.py

└── wsgi.pyc

├── news
#我的model view等文件目录

├── static #静态文件的文件目录

└── syncdb.bat

上面的路径很重要,就是写路径的问题了,我DocumentRoot改成下面 DocumentRoot "/usr/app/mysit"

#紧邻的文件夹就改成这个,指向应用的目录,下面的目录都是相对于DocumentRoot的

Options Indexes FollowSymLinks ExecCGI

AllowOverride None

Require all granted

里面配置这些就可以了 ,注意,网上说2.2版本和2.4版本的授权命令是不一样的,所以你如果查询了好多,会看到allow from all,这个是2.2的等同于 Require all granted在这条ScriptAlias /test " /usr/local/apache24/cgi-bin/test.wsgi"语句下,插入下面的语句,指定django项目的wsgi.py

WSGIScriptAlias / "/usr/app/mysit/mysit/wsgi.py" ###wsgi.py 不用做任何改动,网上好多要加路径的,我觉得既然django就支持这个方式,应该不用动的!

再加一段允许访问的权限,如下,(我没明白为什么还要再给一遍,或者为什么不行,因为是相对于DocumentRoot了啊???)

Require all granted

因为我的static放在/usr/app/mysit下的static目录了,所以再加个权限,(我真不知道为什么还加,我就是因为这个问题,弄了2晚上)

AllowOverride None

Options all

Require all granted

而且我前面的已经加了一个 /mysti的权限了!!!

到此,我访问127.0.0.1/index就可以访问我的程序了,(小问题是登后台,没有样式,并且sqlite3还是访问不了,目前还没解决,先把步骤写了)好了,就写到这吧,互相学习

转发,请标记出处:http://www.cnblogs.com/if-then/p/6959730.html

您可能感兴趣的

Django学习(2)数据宝库 数据库是一所大宝库,藏着各种宝贝。一个没有数据库的网站,功能有限。在Django中,支持的数据库有以下四种: SQLite3 MySQL PostgreSQL Oracle 其中SQLite3为Django自带数据库,无需安装。Django要求MySQL版本4...
Canonical想要将Ubuntu Snappy带到Android平台:新版支持动态文件更新... 面向Ubuntu以及其他支持的GNU/Linux操作系统,Canonical于今天发布了Snapd 2.27版本更新。新版中最值得关注的新功能就是为广泛的Android设备带来Ubuntu Snappy技术支持,允许部署事务型更新(transactional updates),即只需更新旧版与新版...
Shotwell 0.27.0发布,有许多新功能 Gnome照片管理软件Shotwell已经释出了新的0.27.0主要版本,具有许多新功能,错误修复,性能改进和翻译更新。 Shotwell 0.27.0的新功能: 删除F-Spot导入支持 用于测试图像转换的命令行实用程序 加快颜色变换。 Bump GTK...
Advanced Session Tomcat vs. Pivotal tc Server Could anyone advise as to the pros and cons of using Pivotal tc Server as opposed to just vanilla T...
Using the PythonAnywhere API: an (open source) hel... With the beta launch of ourAPI, we want to start making it possible for people to do more scripted things with PythonAnywhere. Our starter for ...
0
博客园-原创精华区

责编内容来自:博客园-原创精华区 (本文源链)
阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。