300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Uwsgi+Nginx+Django部署

Uwsgi+Nginx+Django部署

时间:2022-08-04 16:44:34

相关推荐

Uwsgi+Nginx+Django部署

Django+Uwsgi+Nginx部署

这几天一直在捣腾Django部署,一只菜鸡的上山路

如果什么不对,还请多多指教。

参考:如何使用Django与uWSGI,Uwsgi文档

Linux使用的是ubuntu18.04.4版本,自带python3.6

更新Linux资源

sudo apt-get updatesudo apt-get upgrade

安装pip3

sudo apt install python3-pip # 完成之后,使用pip3 -version 查看版本则安装成功

安装uwsgi

pip3 install uwsgi # 提示没有权限,使用sudo进行安装

创建测试文件

cd /homevim test.py

test.py

def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return [b"Hello World"]

将其部署HTTP9090端口上

启动uWSGI来运行HTTP服务器/路由器,将请求传递到您的WSGI应用程序:

uwsgi --http :9090 --wsgi-file test.py

如果显示

*** uWSGI is running in multiple interpreter mode ***spawned uWSGI worker 1 (and the only) (pid: 3797, cores: 1)[pid: 3797|app: 0|req: 1/1] 123.10.3.118 () {38 vars in 827 bytes} [Mon Feb 24 08:58:53 ] GET / => generated 11 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)[pid: 3797|app: 0|req: 2/2] 123.10.3.118 () {38 vars in 769 bytes} [Mon Feb 24 08:58:53 ] GET /favicon.ico => generated 11 bytes in 0 msecs (HTTP/1.1 200) 1 headers in 44 bytes (1 switches on core 0)

则为运行成功。

如果是

# 提示端口号已被使用,如果想继续使用则找到端口的pid,然后kill掉# 最简单的就是换个端口号,用以测试thunder lock: disabled (you can enable it with --thunder-lock)probably another instance of uWSGI is running on the same address (:8000).bind(): Address already in use [core/socket.c line 769]

如果还有其他的报错,请在云管理中将端口打开

测试是否运行成功

公网ip:9090 打开页面显示Hello World则为成功

导入Django项目

在可以正常运行的情况下批量导出所需模块

pip freeze >requirements.txt

将文件放在linux的目录下进行批量导入

sudo pip3 install -r requirements.txt

创建Django存放目录,并运行

mkdir -p projkect

然后将Django项目导入

修改settings.py

DEBUG = FalseALLOWED_HOSTS = ["*"]

在项目下运行

python3 manage.py runserver 0.0.0.0:8000

然后在浏览器中输入公网ip:8000,如果正确访问则没有问题

安装Nginx

sudo apt install niginx

启动nginx

service nginx start

在浏览器中测试,输入公网ip会出现

给项目创建一个uwsgi的配置文件,以ini结尾

mysite_uwsgi.ini

[uwsgi]# Django-related settingssocket = 127.0.0.1:9001# 项目绝对路径chdir = /home/project/mysite //此处要修改 此处是你项目的路径# Django的wsgi文件相对路径wsgi-file = mysite/wsgi.py//此处也要修改 填写项目的名称# process-related settings# mastermaster= True# 最大进程数processes = 4# 线程数threads = 2#设置此参数,有一个主进程master=True#守护进程的方式运行,log日志存在此log文件里deamonize=/var/log/uwsgi/djangoProject.log#主进程id写入文件里pidfile= /var/log/nginx/uwsgi.pid# ... with appropriate permissions - may be needed# chmod-socket = 664#退出时,清理环境vacuum= Truereload-mercy = 10max-requests = 5000limit-as = 512buffer-size= 30000

注意:上述文件后的双斜杠注释在文件中是不存续存在的,只是在本文章中作为说明存在

# 检查nginx配置文件是否正确nginx -t

正确输出为:

the configuration file /etc/nginx/nginx.conf syntax is okconfiguration file /etc/nginx/nginx.conf test is sucessful

错误按照上面的提示进行修改

找到nginx的配置文件

vim /etc/nginx/nginx.conf

默认加载/etc/nginx/conf.d目录下的以.conf结尾的配置文件

# 进入conf.dcd /etc/nginx/conf.d# 创建自己的配置文件vim mysite_nginx.conf# 内容如下server {# 监听8000端口listen 8000;server_name 127.0.0.1;access_log/var/log/nginx/mysite_access.log;# 错误日志error_log /var/log/nginx/mysite_error.log;# 编码charsetutf-8;# 浏览器最大缓存client_max_body_size 75M;root /home/project/mysite;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:9001;uwsgi_read_timeout 2;}# 项目所需的静态文件location /static/ {expires 30d;autoindex on;add_header Cache-Control private;alias /home/project/mysite/static/;}# 项目所需资源文件location /media/ {expires 30d;autoindex on;add_header Cache-Control private;alias /home/project/mysite/media/;}}

配置完成,重启nginx

sudo service nginx restart

网上找的资源提示说 重启报错,但是nginx -t 不报错,需要重启服务器 --ps:这个情况我没有遇到

最后一步让uwsgi使用自定义的ini文件

uwsgi --ini /home/mysite_uwsgi/mysite_uwsgi.ini

上述需要ini配置文件的全路径

到此为全文

最后在浏览器中输入ip即可

如果报错,查看mysite_error.log,对应解决。

但是nginx -t 不报错,需要重启服务器 --ps:这个情况我没有遇到

最后一步让uwsgi使用自定义的ini文件

uwsgi --ini /home/mysite_uwsgi/mysite_uwsgi.ini

上述需要ini配置文件的全路径

到此为全文

最后在浏览器中输入ip即可

如果报错,查看mysite_error.log,对应解决。

截至到目前为止,才对Uwsgi和Nginx有一点点的了解,呜呜呜

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。