不得不承认,django自带的runserver
功能确实强大,使得我们在开发的过程中可以轻松的在本地调试、查看网站。但开发是开发,做的项目总归是要部署到服务器上面去的,最近把项目部署到linux上了,这里记录一下。
官方文档:https://docs.djangoproject.com/en/1.9/howto/deployment/
我是参照着文档部署的。下面是我的环境:
ubuntu14.04.3
python2.7.6
apache2.4.7
django1.9.7
mod_wsgi4.5.3
接下来进入配置环节。
安装python-dev
默认情况下,ubuntu系统是安装了python的,不过如果只用这个python,在后面的部署过程就会出问题,先查看你的python版本,不出意外的话是2.7.x,然后额外安装一个对应的dev版。
apt-get install python2.7-dev
安装django
这个很简单,直接pip安装就行,选择好你要的版本。
pip install Django==1.9.7
安装python的mysql驱动
如果你的数据库用的是mysql,还得安装这个。
sudo apt-get install python-mysqldb
安装Apache
在ubuntu系统上,Apache是预装了的,但是它不支持apxs
的,对于之后要安装的wsgi组件来说,apxs是必须的。还得安装一个Apache的dev版。先确认你已经安装的Apache版本,我的是Apache2,所以直接运行以下命令继续安装dev版:
sudo apt-get install apache2-dev
安装编译mod_wsgi
有了上述的准备工作之后,安装mod_wsgi就不是什么问题了。
这个是官方文档:https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html
我记录一下我安装编译的步骤。
先去下载源代码:https://github.com/GrahamDumpleton/mod_wsgi/releases
我下载的是mod_wsgi-4.5.3.tar.gz。
然后上传到服务器,解压:
tar xvfz mod_wsgi-X.Y.tar.gz
PS:X,Y为你实际的文件版本,跟文件名一致即可。
解压之后,cd到对应的目录。然后运行
./configure
make
最后运行(PS:这一步是需要管理员权限的):
sudo make install
安装成功:
注意图片的第一行,说的是mod_wsgi安装的路径;还有最后一行,要给mod_wsgi.so加上对应的权限。
sudo chmod 644 /usr/lib/apache2/modules/mod_wsgi.so
配置mod_wsgi到Apache上
安装成功之后,要更改一下Apache的配置文件。编辑(不同系统下Apache配置文件不一样,有的是httpd.conf)
sudo vim /etc/apache2/apache2.conf
在文件的最后一行,加上
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
其中第三个参数,是刚才安装完的mod_wsgi.so对应的路径。
部署django项目
django项目刚开始的时候,我们一般都是运行startproject
命令来生成项目,这样做有一个好处,django会帮我们自动生成wsgi的配置文件。
首先把本地的django项目复制到服务器上,一般是/var/www/html
下,以你Apache的配置为准。
然后我们继续编辑Apache的配置文件:
sudo vim /etc/apache2/apache2.conf
在最后,添加如下内容:
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.comRequire all granted< /Files>
要注意,/path/to/mysite.com/
这个路径不要搞错,就是你项目的路径。
配置完毕,重启Apache。
sudo apachectl restart
访问网站
直接输入ip地址访问网站,发现访问不了,查看了一下Apache的error log:
from django.core.wsgi import get_wsgi_application
ImportError: No module named ‘django.core.wsgi’
后来发现,原来是权限问题,无法执行django里面的文件。心累。。
加个权限就行了。
cd /usr/local/lib/python2.7/dist-package sudo chmod a+x django
ok,项目就这么部署完毕了,如果你是正式的项目,记得把django的debug模式关掉。