基于django开发的网站部署


本文使用云服务器+djngo+uwsgi+nginx的方式实现网站的搭建,主要侧重代码部署

环境

python 3.8
nginx 1.18.0 (Ubuntu)
MySQL 8.0.26-0ubuntu0.20.04.2
django 3.2.6
uwsgi 9.3.0
阿里云服务器ubuntu20.04

前期准备

1.项目文件
本地测试无问题的项目文件
本人的文件结构如下

project
├─api
│  ├─migrations
│  │  └─__pycache__
│  ├─static
│  │  ├─css
│  │  ├─img
│  │  └─js
│  ├─templates
│  └─__pycache__
├─backend
│  └─__pycache__
└─static
    ├─css
    ├─img
    └─js

2.云服务器
本文使用白嫖来的阿里云服务器

实现原理

nginx监听特定的端口将请求转发给uwsgi处理,完成后再由nginx发回给用户

云服务器配置

1.安装nginx
ubuntu下直接使用

sudo apt-get install nginx

然后可以直接

nginx 

停止

nginx -s stop

重启

nginx -s restart

nginx默认监听80端口,此时可以直接在浏览器输入云服务器ip,回车后可以看到
在这里插入图片描述
说明nginx已经成功启动
如果无法访问检查一下
nginx的端口是否被占用
云服务器是否开放了80端口

安装uwsgi

1.升级源

sudo apt update
sudo apt upgrade

2.安装python
安装依赖包,若没有依赖包后面的uwsgi安装会报错

apt-get install python3.8-dev

安装pip

sudo apt install python3-pip

安装uwsgi
安装好依赖后直接

python3-pip install uwsgi

即可

配置uwsgi和nginx

配置uwsgi
在项目根目录下创建uwsgi.ini文件
此处使用vim

vim uwsgi.ini

若没有vim先安装

sudo apt install vim

按i进入输入模式

[uwsgi]
socket = 127.0.0.1:8001
chdir=/home/server/backend
module=backend.wsgi

按ESC后按:wq回车保存退出
参数说明
socket为nginx和uwsgi的内网通信
这里要保证和后面nginx的配置中的转发位置保持一致
chdir为项目所在的目录
moudle是django自己生成的wsgi文件,指明即可
还有其他参数读者可以自行添加,这里从简故不做深入
这里有个坑
如果使用nginx转发请求的话要使用socket
不然nginx的请求转发不到uwsgi
局域网可以使用

[uwsgi]
http = host:port
chdir=/home/server/backend
module=backend.wsgi

使用配置文件启动uwsgi
先安装一个实用的小工具

sudo apt install screen

创建一个新终端

screen -S name

name是你自定义的名字
cd到项目目录然后启动uwsgi

uwsgi uwgi.ini
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x55bd7feebf40 pid: 107105 (default app)
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 107105, cores: 1)

启动成功
按Ctrl + A + D即可回到主命令行
如果前面使用的是http的配置方法
回到主命令行后直接

curl host:port

是可以看到nginx的欢迎页面的

nginx配置

配置文件似乎是有好几个位置,这里就用一个方便一点的
nginx的配置文件在/etc/nginx/nginx.conf

vim /etc/nginx/nginx.conf

在http中添加和修改配置参数如下

   server {
    listen      80;
    server_name 自己的云服务器公网IP;
    charset     utf-8;
    client_max_body_size 75M;

    location / {
        uwsgi_pass  127.0.0.1:8001;
      	# 刚才在uwsgi.ini中设置的host和port
        include     /etc/nginx/uwsgi_params;
        uwsgi_read_timeout 15;

    }
            location /static {
        # 指定静态文件存放的目录
        alias  /home/server/project/static;
	}
}

如果不指明静态文件的存放目录会出现静态文件(css、img、js)等无法访问
保存后重启nginx

nginx -s restart

此时在浏览器输入自己的公网ip,回车
在这里插入图片描述
成功访问django
出现这个页面是因为在settings.py里面

DEBUG = True

关闭以后就看不到该页面了
此时的uwsgi

 [pid: 107190|app: 0|req: 1/1] 
	ip手动打码 
 {42 vars in 770 bytes}
 [Wed Dec 22 23:11:15 2021] 
 GET /api/ip => generated 103 bytes in 106 msecs 
 (HTTP/1.1 200) 5 headers in 158 bytes (1 switches on core 0)

项目地址
项目还没结题
测试账号就先不给了
DEBUG开着读者可以自己试探

一些坑

如果要使用nginx,uwsgi.ini内要使用socket
如果nginx出现502 bad gateway的话
可能是uwsgi没有启动或者没有正确配置
建议检查一下uwsgi和nginx配置文件里的host和port
提交form表单时候出现csrf ***报错的时候
1.在HTML源码中加入{csrf token}
2.在settings.py中注释掉django.middleware.csrf.CsrfViewMiddleware即可

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

参考了很多大佬的blog,这里简单的做一下记录

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于基于Django的花店网站设计与实现的开发,我可以为您提供以下开发步骤: 1. 环境搭建:首先需要安装PythonDjango,可以使用pip命令进行安装。安装完成后,可以使用Django提供的命令行工具创建一个新的项目。 2. 数据库设计:根据网站需求和功能设计数据库模型,可以使用Django提供的ORM框架来设计数据库模型。在设计数据库模型时,需要考虑各种实体之间的关系,例如花卉和订单之间的关系。 3. 网站界面设计:根据需求和功能设计网站界面,可以选择使用Django提供的默认模板或者自定义模板。可以使用Bootstrap等前端框架来实现网站的响应式设计。 4. 功能实现:根据需求和功能实现网站的各种功能,例如用户注册和登录、花卉信息的展示和在线销售功能、订单管理等。可以使用Django提供的视图函数和模板来实现网站的各种功能。 5. 测试和优化:在完成网站开发之后,需要进行测试和优化,确保网站能够正常运行和满足用户需求。可以使用Django提供的测试工具进行测试,并根据测试结果对网站进行优化。 6. 部署上线:在测试和优化完成后,可以将网站部署上线,可以选择使用Django提供的部署工具,或者选择其他云服务商进行部署。 总之,基于Django框架可以轻松地设计和实现一个高效、稳定的花店网站。在开发过程中,需要充分考虑用户需求,并且注意网站的设计和功能实现。同时,需要进行测试和优化,确保网站能够正常运行和满足用户需求。最后,需要将网站部署上线,让用户可以方便地访问和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值