基于 Ubuntu 搭建 Django 站点-云服务器玩法在线实验

[复制链接]
查看: 361|回复: 0
发表于 2020-4-15 21:40:07 | 显示全部楼层 |阅读模式
实验内容
Django 是一个用 Python 开发的开源 Web 应用框架,采用 MVC 模式。本实验带您搭建一个最简单的 Django 站点,并使用 uwsgi 和 nginx 作为 Web 服务器。

免费在线实验地址:点击进入
实验资源:云服务器,没有云服务器的朋友推荐1折抢购:69元/年的阿里云服务器、或者99元/年的腾讯云服务器

软件环境:
Ubuntu 16.04.1 LTS 64 位

一、安装 django
安装 pip
  1. sudo apt install python-pip -y
复制代码
使用 pip 安装 django
  1. sudo pip install django==1.11
复制代码

二、创建 Hello World 应用并启动 Web 服务器
创建项目
  1. cd /data
  2. sudo django-admin startproject helloworld
复制代码
定位到 /data/helloworld 目录

修改配置文件
修改 /data/helloworld/helloworld/settings.py 文件权限为其它人可写
  1. sudo chmod 666 /data/helloworld/helloworld/settings.py
复制代码
编辑 /data/helloworld/helloworld/settings.py

将 ALLOWED_HOSTS = [] 修改为 ALLOWED_HOSTS = ["<您的 CVM IP 地址>"] ,这样可以允许通过 ip 访问

在实际运营中一般要改为对应的域名

启动 django 自带的 Web 服务器
  1. cd helloworld
  2. sudo python manage.py runserver 0.0.0.0:8080
复制代码
使用浏览器访问
  1. http://<您的 CVM IP 地址>:8080/
复制代码
看到如下页面,表示 django 服务已经部署成功


三、创建简单的页面
关闭 Web 服务器
按 Ctrl + C 关闭 Web 服务器

创建 views.py
创建文件 /data/helloworld/helloworld/views.py ,并修改权限为其它人可写
  1. sudo touch /data/helloworld/helloworld/views.py
  2. sudo chmod 666 /data/helloworld/helloworld/views.py
复制代码
添加视图函数
编辑 /data/helloworld/helloworld/views.py

添加如下内容:
  1. # -*- coding: utf-8 -*-

  2. from django.http.response import HttpResponse

  3. def hello(request):
  4.     user = request.GET.get('user')
  5.     if not user: user = 'world'
  6.     return HttpResponse('hello %s' % user)
复制代码
按 Ctrl + S 保存

修改 urls.py 文件权限
修改 /data/helloworld/helloworld/urls.py 文件权限为其它人可写
  1. sudo chmod 666 /data/helloworld/helloworld/urls.py
复制代码
添加路由配置
编辑 /data/helloworld/helloworld/urls.py


  1. urlpatterns = [
  2.     url(r'^admin/', admin.site.urls),
  3. ]
复制代码
修改为
  1. import views

  2. urlpatterns = [
  3.     url(r'^admin/', admin.site.urls),
  4.     url(r'^hello', views.hello),
  5. ]
复制代码
按 Ctrl + S 保存

测试 url 访问是否正常
再次启动 Web 服务器
  1. sudo python manage.py runserver 0.0.0.0:8080
复制代码
使用浏览器访问下面两个 url
  1. http://<您的 CVM IP 地址>:8080/hello
  2. http://<您的 CVM IP 地址>:8080/hello?user=test
复制代码
关闭 Web 服务器
按 Ctrl + C 停止 Web 服务器

四、部署 uwsgi 和 nginx
使用 pip 安装 uwsgi
  1. sudo pip install uwsgi
复制代码
配置 uwsgi
创建文件 /data/helloworld/uwsgi.ini ,并修改权限为其它人可写
  1. sudo touch /data/helloworld/uwsgi.ini
  2. sudo chmod 666 /data/helloworld/uwsgi.ini
复制代码
编辑 /data/helloworld/uwsgi.ini
输入以下内容,并保存
  1. [uwsgi]
  2. chdir = /data/helloworld
  3. module = helloworld.wsgi
  4. socket = 127.0.0.1:8080
  5. master = true
  6. vhost = true
  7. no-site = true
  8. workers = 2
  9. reload-mercy = 10     
  10. vacuum = true
  11. max-requests = 1000   
  12. limit-as = 512
  13. buffer-size = 30000
  14. pidfile = /tmp/uwsgi.pid
  15. daemonize = /tmp/uwsgi.log
复制代码
启动 uwsgi
  1. export PYTHONPATH=/usr/local/lib/python2.7/dist-packages
  2. uwsgi --ini /data/helloworld/uwsgi.ini
复制代码
安装 nginx
  1. sudo apt-get install nginx -y
复制代码
添加 nginx 配置文件
创建文件 /etc/nginx/sites-enabled/helloworld.conf ,并修改权限为其它人可写
  1. sudo touch /etc/nginx/sites-enabled/helloworld.conf
  2. sudo chmod 666 /etc/nginx/sites-enabled/helloworld.conf
复制代码
编辑 /etc/nginx/sites-enabled/helloworld.conf
输入以下内容,并保存
  1. server {
  2.     listen       80;
  3.     server_name  <您的 CVM IP 地址>;

  4.     charset utf-8;

  5.     location / {
  6.         uwsgi_pass 127.0.0.1:8080;
  7.         include /etc/nginx/uwsgi_params;
  8.         client_max_body_size      10m;
  9.     }

  10.     client_body_timeout  3m;
  11.     send_timeout   3m;
  12.     proxy_send_timeout 3m;
  13.     proxy_read_timeout 3m;
  14. }
复制代码
重启 nginx 服务
  1. sudo systemctl restart nginx
复制代码

五、测试 nginx + uwsgi + django 是否工作正常
测试页面是否能够正常访问
使用浏览器测试下面的 url 是否可以正常访问
  1. http://<您的 CVM IP 地址>/hello
复制代码


腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )