django 部署到 apache

安装完django之后,每次都需要通过命令来启动启动开发服务器。虽然调试和测试方便,但只能在本地运行,并且不能承受许多用户同时使用的负载。所以需要将Django部署到生产级的服务器,这里选择apache。

参考链接

  http://www.cnblogs.com/fengzheng/p/3619406.html

  http://www.jianshu.com/p/b40a4a12fff1

  http://www.ziqiangxuetang.com/django/django-deploy.html

  http://blog.chinaunix.net/uid-20940095-id-4408225.html

1. ubuntu安装apache

  sudo apt-get install apache2

2. 测试apache

打开浏览器输入,127.0.0.1

3. 建立Python与Apache的链接
sudo apt-get install libapache2-mod-wsgi      #Python2

sudo apt-get install libapache2-mod-wsgi-py3  #Python3
4. 创建django工程

cd /var/www/

sudo django-admin.py startproject mysite

5. 测试django工程

cd mysite

采用8000端口

sudo python manage.py runserver 8000

浏览器测试

6. 更改端口

sudo vi /etc/apache2/ports.conf

添加:

NamevirtualHost *:8888
Listen 8888

表示VirtualHost *:8888的虚拟主机监听8888端口

7. 添加网站配置文件

sudo vi /etc/apache2/sites-available/mysite.conf

<VirtualHost *:8888>      
    DocumentRoot /var/www/mysite/mysite      
    <Directory /var/www/mysite/mysite>          
        Order allow,deny          
        Allow from all      
    </Directory>      
  
WSGIScriptAlias / /var/www/mysite/mysite/wsgi.py
</VirtualHost>  

8. 更改django工程

sudo vi /var/www/mysite/mysite/wsgi.py

添加

import sys
sys.path.append("/var/www/mysite/")

9. 配置生效

9.1

  sudo a2ensite mysite.conf

有时候需要不使能配置。

  sudo a2dissite mysite.conf

9.2 apache服务重启

  sudo service apache2 restart

  sudo service apache2 reload

出现错误;

restarting web server apache2                                         [fail] 
 * The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 8 of /etc/apache2/sites-enabled/mysite.conf:
Invalid command 'WSGIScriptAlias', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
tony@T:/etc/apache2/sites-available$ sudo a2enmod wsgi
ERROR: Module wsgi does not exist!

解决方法:

sudo apt-get purge libapache2-mod-wsgi

sudo apt-get install libapache2-mod-wsgi
10. 登录测试

127.0.0.1:8888

11. 创建app测试

cd /var/www/mysite/

python manage.py startapp blog

sudo vi blog/views

from django.shortcuts import render

from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse("hello world")

sudo vi mysite/urls.py

from django.conf.urls import url
from django.contrib import admin 

from blog import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index),
]

访问结果。

Tony Liu

2016-10-19, Shenzhen

原文地址:https://www.cnblogs.com/helloworldtoyou/p/5978977.html