Mac下Django通过WSGI部署到Apache
2014-05-04 18:58
731 查看
Python菜鸟一枚 为了部署这个项目忙活了半天 晕头转向的最终终于成功了 特此记录
Mac将Django通过uwsgi部署到apache详细介绍
我的Mac OSX是10.9的
Mac下自带了apache2
安装位置为/etc/apache2
默认的的一个项目根目录为 /Library/WebServer/Documents
mac下apache2的bin目录中的命令比如 apxs 都在系统的/usr/sbin下 并不在apache的目录下
将Django项目部署到Apache下首先要下载mod_wsgi(mod_python是一样的但是官方推荐使用wsgi)编译出一个mod_wsgi.so文件放到/etc/apache2/modules目录下
(modules这个目录在我电脑上是没有的所以我自己新建了一个名为modules的文件夹)
mod_wsgi的下载方式有很多种 我这里是在mac下 所以使用的是mac下的安装方式之一
我先下载了一个homebrew 地址为http://brew.sh/ 按照目前官方上的方式直接在命令行输入
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 就可以安装成功
然后直接输入 brew install mod_wsgi 就可以直接安装 但是如果你的mac电脑没有安装Xcode盒commandlinetools 是一定会失败的
因为brew会先获取到一个C语言的包并通过commandlinetools的make命令将其打包成mod_wsgi.so文件所以在这之前一定要先安装Xcode在安装commandlinetools
注意顺序要先安装Xcode在安装commanglinetools
OK 即使到了这一步 输入brew install mod_wsgi依然会失败大概的输出如下
可是这个命令实际上并不在这个目录下所以才会失败 可以通过软连接的方式解决该问题 比如
而编译好的mod_wsgi.so就会出现在/usr/local/Cellar的目录下将其拷贝到/etc/apache2/modules的目录下第一步就完成了
下一步呢就是修改.etc/apache2/httpd.conf
在最底部加上
LoadModule wsgi_module /etc/apache2/modules/mod_wsgi.soWSGIScriptAlias / "/Applications/Developer/worspace/workspace_python/template_02/template_02/wsgi.py"
#上面红色部分是我的项目中wsgi.py的路径一般通过pycharm创建的django的项目会自动生成<Directory "/Applications/Developer/worspace/workspace_python/template_02/">
# 这里配置的则是我的项目路径 这两个地方都要替换成自己的项目路径Order Deny,AllowAllow from all</Directory>ServerName 127.0.0.1:80
我的wsgi.py文件如下
另外还有一点要配置的地方是在settings.py中
os.path.realpath(os.path.pardir)+'/template_02/templates' 否则会找不到你的模板 因为这里的os.path.realpath(os.path.pardir)获得的值会为空
原因是啥我也不太清楚 希望有知道的朋友帮忙讲解下
如果以上的配置都和我弄得一模一样那么现在在命令行输入
sudo apachectl start
然后再浏览器中输入127.0.0.1:80既可以访问到自己的项目 这里最好将settings.py中的DEBUG设置为true这样方便自己查看错误信息
还有一点是 如果apache服务器无法启动 可以到/var/log/apache2目录下查看日志信息这个真的很有用 我有些错误就是在这里找到之后才得以解决的
Mac将Django通过uwsgi部署到apache详细介绍
我的Mac OSX是10.9的
Mac下自带了apache2
安装位置为/etc/apache2
默认的的一个项目根目录为 /Library/WebServer/Documents
mac下apache2的bin目录中的命令比如 apxs 都在系统的/usr/sbin下 并不在apache的目录下
将Django项目部署到Apache下首先要下载mod_wsgi(mod_python是一样的但是官方推荐使用wsgi)编译出一个mod_wsgi.so文件放到/etc/apache2/modules目录下
(modules这个目录在我电脑上是没有的所以我自己新建了一个名为modules的文件夹)
mod_wsgi的下载方式有很多种 我这里是在mac下 所以使用的是mac下的安装方式之一
我先下载了一个homebrew 地址为http://brew.sh/ 按照目前官方上的方式直接在命令行输入
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 就可以安装成功
然后直接输入 brew install mod_wsgi 就可以直接安装 但是如果你的mac电脑没有安装Xcode盒commandlinetools 是一定会失败的
因为brew会先获取到一个C语言的包并通过commandlinetools的make命令将其打包成mod_wsgi.so文件所以在这之前一定要先安装Xcode在安装commandlinetools
注意顺序要先安装Xcode在安装commanglinetools
OK 即使到了这一步 输入brew install mod_wsgi依然会失败大概的输出如下
/usr/sbin/apxs -c -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -DENABLE_DTRACE -DMACOSX -DNDEBUG -DNDEBUG -DENABLE_DTRACE -Wc,'-arch x86_64' mod_wsgi.c -Wl,-F/System/Library/Frameworks -framework Python -u _PyMac_Error /System/Library/Frameworks/ -arch x86_64 -ldl -framework CoreFoundation /usr/share/apr-1/build-1/libtool --silent --mode=compile /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/local/include -I/usr/include/apache2 -I/usr/include/apr-1 -I/usr/include/apr-1 -arch x86_64 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -DENABLE_DTRACE -DMACOSX -DNDEBUG -DNDEBUG -DENABLE_DTRACE -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo env: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc: No such file or directory apxs:Error: Command failed with rc=65536 . make: *** [mod_wsgi.la] Error 1这里在make的时候会去找
/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc这个命令
可是这个命令实际上并不在这个目录下所以才会失败 可以通过软连接的方式解决该问题 比如
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
将其指向其真正的目录下这样在编译时就不会报错了
而编译好的mod_wsgi.so就会出现在/usr/local/Cellar的目录下将其拷贝到/etc/apache2/modules的目录下第一步就完成了
下一步呢就是修改.etc/apache2/httpd.conf
在最底部加上
LoadModule wsgi_module /etc/apache2/modules/mod_wsgi.soWSGIScriptAlias / "/Applications/Developer/worspace/workspace_python/template_02/template_02/wsgi.py"
#上面红色部分是我的项目中wsgi.py的路径一般通过pycharm创建的django的项目会自动生成<Directory "/Applications/Developer/worspace/workspace_python/template_02/">
# 这里配置的则是我的项目路径 这两个地方都要替换成自己的项目路径Order Deny,AllowAllow from all</Directory>ServerName 127.0.0.1:80
我的wsgi.py文件如下
""" WSGI config for template_02 project. It exposes the WSGI callable as a module-level variable named ``application``. For more information on this file, see https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/ """ import os,sys import django #红色标记的这句是额外加进来的这里要添加的是项目路径 sys.path.append('/Applications/Developer/worspace/workspace_python/template_02') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "template_02.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() #application = django.core.handlers.wsgi.WSGIHandler()
另外还有一点要配置的地方是在settings.py中
TEMPLATE_DIRS = ( '/Applications/Developer/worspace/workspace_python/template_02' + '/templates', )这里要设置成绝对路径不能使用以下这种方式
os.path.realpath(os.path.pardir)+'/template_02/templates' 否则会找不到你的模板 因为这里的os.path.realpath(os.path.pardir)获得的值会为空
原因是啥我也不太清楚 希望有知道的朋友帮忙讲解下
如果以上的配置都和我弄得一模一样那么现在在命令行输入
sudo apachectl start
然后再浏览器中输入127.0.0.1:80既可以访问到自己的项目 这里最好将settings.py中的DEBUG设置为true这样方便自己查看错误信息
还有一点是 如果apache服务器无法启动 可以到/var/log/apache2目录下查看日志信息这个真的很有用 我有些错误就是在这里找到之后才得以解决的
相关文章推荐
- Mac Apache Django WSGI 部署
- 通过django-wsgi部署在apache上碰到的问题和解决方法
- django apache 通过wsgi部署
- Linux下安装Apache并以mod_wsgi方式部署django站点
- 使用WSGI在Apache服务器中部署Django项目实例
- ubuntu python3.5 django1.8.5 apache2.4 wsgi mysql部署django项目
- Django+wsgi+Apache+Ubuntu 部署相关
- Apache+mod_wsgi部署Django
- Python2.7 Django1.8 CentOS7 Apache2.4 mod_wsgi4.4.21 环境下部署
- Linux+Django+Python+Wsgi配置过程 Linux下配置Apache+Mod_Wsgi+Django环境 部署django项目
- 使用mod_wsgi将django部署到apache
- Linux下安装Apache并以mod_wsgi方式部署django站点
- windows环境下部署django mod_wsgi apache
- 在window上部署python Django项目 采用apache+mod_wsgi方案
- fedora20 下 django1.6+python3.3 部署到 wsgi 和apache2.4
- 用mod_wsgi在Apache上部署Django
- apache+django+mod_wsgi 部署实践
- python&Django&mariadb&Apache&mod_wsgi 环境部署
- Ubuntu 服务器上Apache + WSGI 部署Django项目
- apache&mod_wsgi&django部署多个项目