我在 Django 生产部署中缺少什么?
What am I missing in Django production deployment?
我有以下代码用于在 CentOS 7 服务器上部署名为 deploy_project
的 Django 1.9 项目。
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "deploy_project.settings")
application = get_wsgi_application()
以上是默认生成的
httpd.conf
WSGIScriptAlias / /var/www/deploy_project/deploy_project/wsgi.py
WSGIPythonPath /var/www/deploy_project
<Directory /var/www/deploy_project/deploy_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
我的项目目录在/var/www/deploy_project
。在里面我有一个名为 Deploy
的应用程序,项目设置文件夹与项目名称相同 deploy_project
和 manage.py
文件。我还有一个 db.sqlite3
文件,因为我没有使用 MySQL,但我的应用程序只运行一个显示 Hello World 的视图。我没有使用数据库。
当我从浏览器访问服务器 IP 时,我收到一个 404 Not Found 页面,其中包含消息 The requested URL / was not found on this server.
。
项目文件夹的树输出
├── db.sqlite3
├── deploy
│ ├── admin.py
│ ├── admin.pyc
│ ├── apps.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ ├── 404.html
│ │ └── deploy
│ │ └── hello.html
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── deploy_project
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
└── manage.py
项目urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('deploy.urls')),
]
应用urls.py
urlpatterns = [
url(r'^$', views.Hello, name='hello'),
]
views.py
def Hello(request):
return render(request, "deploy/hello.html", {})
hello.html
Hello World!
我是个笨开发者,我没有重启apache服务,所以我的设置没有生效。
对于 CentOS 7,我的命令是:
sudo systemctl restart httpd
这解决了我的问题。感谢您的时间@BurhanKhalid。
我有以下代码用于在 CentOS 7 服务器上部署名为 deploy_project
的 Django 1.9 项目。
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "deploy_project.settings")
application = get_wsgi_application()
以上是默认生成的
httpd.conf
WSGIScriptAlias / /var/www/deploy_project/deploy_project/wsgi.py
WSGIPythonPath /var/www/deploy_project
<Directory /var/www/deploy_project/deploy_project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
我的项目目录在/var/www/deploy_project
。在里面我有一个名为 Deploy
的应用程序,项目设置文件夹与项目名称相同 deploy_project
和 manage.py
文件。我还有一个 db.sqlite3
文件,因为我没有使用 MySQL,但我的应用程序只运行一个显示 Hello World 的视图。我没有使用数据库。
当我从浏览器访问服务器 IP 时,我收到一个 404 Not Found 页面,其中包含消息 The requested URL / was not found on this server.
。
项目文件夹的树输出
├── db.sqlite3
├── deploy
│ ├── admin.py
│ ├── admin.pyc
│ ├── apps.py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ ├── 404.html
│ │ └── deploy
│ │ └── hello.html
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── deploy_project
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
└── manage.py
项目urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('deploy.urls')),
]
应用urls.py
urlpatterns = [
url(r'^$', views.Hello, name='hello'),
]
views.py
def Hello(request):
return render(request, "deploy/hello.html", {})
hello.html
Hello World!
我是个笨开发者,我没有重启apache服务,所以我的设置没有生效。
对于 CentOS 7,我的命令是:
sudo systemctl restart httpd
这解决了我的问题。感谢您的时间@BurhanKhalid。