Django项目部署(阿里云)(1)--基本功能实现
新博客地址:http://muker.net/django-server.html
手头需要部署一个Django项目,前面的博客也因为偷懒也没有部署,这里记录一下部署过程。
ps:其实网上比较靠谱的说明还真不好找
服务器系统:Ubuntu14.04 32位
这里使用比较常用的apache2 和 mod_wsgi来部署
如果你也是刚开的服务器记得
sudo apt-get update
首先安装这两个软件:
sudo apt-get install apache2 libapache2-mod-wsgi
我这里的版本号:
# apachectl -v
Server version: Apache/2.4.7 (Ubuntu)
Server built: Mar 10 2015 13:05:59
接下来可以在服务器上安装一下Django并创建一个项目用作后面的测试,首先安装pip
sudo apt-get install python-pip
然后安装Django并且创建一个Django项目(自己选好创建的位置):
pip install django==1.6
django-admin.py startproject yourprojectname
我的项目地址在:/home/projects/dlsPro
Django的测试项目已经创建好了,接下来配置apache2
首先创建一个新的一个网站配置文件(vi用不习惯可以用nano):
sudo vi /etc/apache2/sites-available/sitename.conf
内容如下:
<VirtualHost *:80>
ServerName www.yourdomain.com
ServerAlias otherdomain.com
ServerAdmin muker715@aliyun.com
Alias /media/ /home/projects/dlsPro/media/
Alias /static/ /home/projects/dlsPro/static/
<Directory /home/projects/dlsPro/media>
Require all granted
</Directory>
<Directory /home/projects/dlsPro/static>
Require all granted
</Directory>
WSGIScriptAlias / /home/projects/dlsPro/dlsPro/wsgi.py
<Directory /home/projects/dlsPro/dlsPro>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
上面的配置中写的 WSGIScriptAlias / /home/projects/dlsPro/dlsPro/wsgi.py 把apache2和你的网站联系起来了
但为了让脚本找到django项目的位置,得再修改下/home/projects/dlsPro/dlsPro/wsgi.py
文件
在其中添加以下几行:
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
最后文件像这样:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dlsPro.settings")
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
接下来保存更改,我们去启用新网站:
sudo a2ensite sitename.conf
根据提示我们还需要重新载入apache2:
service apache2 reload
此时去观察首页:
竟然还是apache2的默认页面。
这时看一下/etc/apache2/sites-enabled
目录
发现有下面两个文件:
# ls
000-default.conf sitename.conf
default.conf是默认生成的,我们自己生成了新的设置之后就不再需要它了,所以删之并重新载入服务:
rm 000-default.conf
service apache2 reload