前言: django在linux环境下的生产环境布置比较复杂,下面整理如下步骤,希望对小伙伴们有所帮助。以下为描述方便没有歧义,文件路径尽量使用绝对路径描述。具体文件操作可以cd到指定目录下操作。
目标: 在liunx系统中 使用 nginx + uwsgi +django 搭建生产环境。生成两个测试链接。一个api,一个静态文件链接。
版本信息: nginx 1.14.1 django 3.2.11 uwsgi 2.0.20 python 3.6.8 liunx系统8.0
准备:重装系统,使用putty登录,腾讯云服务器需要重置ssh密码,确保对应防火墙已经打开。我用的是8000端口
1 查看gcc版本: gcc -v
* 没有gcc的系统需要安装gcc编译器
2 安装 django,uwsgi
yum install python3-devel
pip3 install django==3.2.11
pip3 install uwsgi==2.0.20
3 查看是否安装成功:
pip3 freeze|grep -i 'uwsgi'
pip3 freeze|grep -i 'Django'
4 在/创建一个python项: django-admin startproject myserver
5 修改djannago设置:
编辑文件 /myserver/myserver/settings.py:
ALLLOED_HOSTS= [] # 列表加入云服务器公网ip
LANGUAGE_CODE = ''zh-Hans"
TIME__ZONE = 'Asia/Shanghai'
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)
STATIC_ROOT = '/myserver/static'
5 创建静态文件目录: mkdir /myserver/static
6 在django项目中增添 测试用路由和静态文件:
新建文件 /myserver/static/1.txt 编辑内容:我是来测试的
修改文件 /myserver/myserver/urls.py:
urlpatterns = [
path('test/', views.test)
]
新建文件 /myserver/myserver/views:
from django.http import HttpResponse
def test():
return HttpResponse(' 您已经成功访问到此 测试接口')
6 检查django项目是否能正常运行:
cd /myserver
python3 manage.py runserver 0.0.0.0:8000
测试接口 http://ip:8000/test http://ip:8000/static/1.txt
7 在目录 /myserver/myserer 下 新建文件 uwsgi.ini 并编辑如下:
[uwsgi]
http=0.0.0.0:8000
chdir=/myserver/
wsgi-file=/myserver/myserver/wsgi.py
process=2
threads=2
pidfile=uwsgi.pid
daemonize=uwsgi.log
master=True
9 使用uwsgi启动django: uwsgi --ini uwsgi.ini
ps aux|grep 'uwsgi' 检查是否启动成功
测试接口 http://ip:8000/test http://ip:8000/static/1.txt
10 安装nginx:yum install nginx
查看nginx版本:nginx -v
11 配置Nginx:
编辑文件: /etc/nginx/nginx.conf
在 'server' 里面的 第一个localion 里面 添加:
uwsgi_pass 127.0.0.1:8000;
include /etc/nginx/uwsgi_params;
增加一个location:location /static/ {
root /myserver;
}
*默认安装后自动启动。命令行输入nginx 则启动nginx服务
12 设置nginx反向代理:
12.1 修改文件 /myserver/myserer/uwsgi.ini:
http=0.0.0.0:8000 改成 socket=127.0.0.1:8000
12.2 重启 uwsgi:
uwsgi --stop uwsgi.pid
* ps aux|grep 'uwsgi' 检查 是否停止成功。
* 如果进程仍然在说明没有stop成功。使用kill -9 进程id关闭进程。
uwsgi --ini uwsgi.ini
* ps aux|grep 'uwsgi' 检查 是否启动成功。
* 如果有ini进程说明启动成功。没有成功检查配置文件,查看启动日志。
13 测试接口: http://ip:8000/test http://ip:8000/static/1.txt
14 接口正常说明生成环境布置成功:修改 settings.py 关闭debug (然后需要重启 uwsgi)。
15 后续维护:
修改django和uwsgi设置,需要重启uwsgi服务。
修改nginx配置后需要 重启nginx服务。
谢谢观看,欢迎有兴趣的小伙伴一起交流学习。
本文详细介绍了如何在Linux系统中使用Nginx、uWSGI和Django搭建高性能的生产环境。通过一步步的操作指南,包括安装依赖、创建项目、配置uWSGI和Nginx,最终实现API接口和静态文件的访问。文章适用于Python后端开发者和Linux系统管理员。
809

被折叠的 条评论
为什么被折叠?



