本人之前写项目,都是使用的django自带的开发服务器来运行的,在开发环境尚且可以用它进行调试和测试,但不能承受许多用户同时使用的负载。所以需要将Django部署到生产级的服务器,这里选择apache。
这里记录一下我在部署apache时的流程和一些问题。我也是初次涉及,难免有一些不妥之处,仅供参考。
环境
ubtuntu 18.04
安装
sudo apt-get install apache2
# Python 2
sudo apt-get install libapache2-mod-wsgi
# Python 3
sudo apt-get install libapache2-mod-wsgi-py3
查看版本号
apachectl -v
测试apache服务器
打开浏览器输入,127.0.0.1
创建一个django项目
django-admin startproject testproj
更改端口
sudo vim /etc/apache2/ports.conf
添加:
NamevirtualHost *:8880
Listen 8880
表示VirtualHost *:8880的虚拟主机监听8880端口
添加网络配置文件
sudo vim /etc/apache2/sites-available/testproj.conf
<VirtualHost *:8880>
DocumentRoot /home/liusijia/disk/liusijia/Study/Django/testproj/testproj
<Directory /home/liusijia/disk/liusijia/Study/Django/testproj/testproj>
Require all granted
</Directory>
WSGIScriptAlias / /home/liusijia/disk/liusijia/Study/Django/testproj/testproj/wsgi.py
</VirtualHost>
修改wsgi.py文件
在wsgi.py中添加
import sys
sys.path.append(‘/home/liusijia/disk/liusijia/Study/Django/testproj
’)
sys.path.append(‘/home/liusijia/anaconda3/lib/python3.5/site-packages’)
读取配置
sudo a2ensite testsite.conf
sudo service apache2 restart
测试网站
浏览器打开127.0.0.1:8880,下图是成功的界面
到这里,明显项目已经部署到apache上了,那么下面新建一个app测试一下效果。
新建app
python manage.py startapp testapp
在testproj/setting.py INSTALLED_APP加入testapp
cd testapp
vim views.py
views.py代码:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello World!')
cd testproj
vim urls.py
urls.py:
from django.contrib import admin
from django.urls import path
from testapp import views as testapp_views
urlpatterns = [
path('admin/', admin.site.urls),
path('', testapp_views.index),
]
测试app
可以看到,我们app要做的事已经做好了(在网页上显示HW)。
That’s all.
接下来附几篇博客供参考,我遇到的问题也是在这些博客中解决的。
http://hawk.pub/x/icJ394Av.html
http://www.cnblogs.com/helloworldtoyou/p/5978977.html
https://code.ziqiangxuetang.com/django/django-deploy.html