Linux下Nginx+uwsgi部署Django项目
作者:tomato92
浏览量:548 点赞量:0 创建时间:2023年11月19日 17:191.启动Django项目
进入项目目录
-python manage.py runserver 0.0.0.0:8000
这样的话就可以在服务器的8000端口访问到Django项目(注意开放服务器端口,防火墙或者阿里云安全组设置开开放端口),但是速度不是很快需要配合uwsgi使用。
2.uwsgi启动
1.安装uwsgi
pip install uwsgi
2.在文件下创建uwsgi配置文件 - uwsgi.ini
文件中配置uwsgi服务
[uwsgi]
project=blog
#base = /project/blog
socket=172.19.54.124:8080
chdir = /project/blog
module = blog.wsgi:application
processes = 2
threads = 2
master = Ture
pidfile = uwsgi.pid
buffer-size = 65535
pythonpath = /program/miniconda3/envs/py3.8/lib/python3.8/site-packages
static-map = /static=/project/blog/blog/static
ip注意事项
如果是阿里云或者腾讯云等云服务器。
第三行参数ip设置是不能设置成127.0.0.1的,127.0.0.1应该替换成云服务器的内网ip。
不建议设置成0.0.0.0,可能会有风险。
http 或 socket参数
第三行参数的可以是socket,也可以是http。
如果只是使用uwsgi+django服务,可以先设置成http,这时候可以直接访问。
如果是使用uwsgi+django+nginx,这时候就要设置成socket,保持socket与Nginx中的uwsgi_pass参数设置一致.
Django静态文件设置问题
解决方案1
STATIC_ROOT这个参数,在runserver情况下是无用的,因为Django自己知道位置在哪。
在集成了django.contrib.staticfiles后,./manage.py多了一个子命令。
./manage.py collectstatic
这个子命令,会把所有STATICFILES_DIRS目录下的文件,都复制到STATIC_ROOT/srv/django/static目录下。
uWSGI也是支持静态文件的,可以通过执行时添加参数:
uwsgi --static-map /static=/srv/django/static
或者,在配置文件中添加:
static-map = /static=/srv/django/static
=前面的/static是uWSGI的URL前缀,而后面的/srv/django/static则是静态文件的路径。 这个路径,通常使用绝对路径,但也支持相对路径。
所以,生产环境部署时,解决方案一共分两步:
-
使用
collectstatic子命令,收集、复制相关静态文件。 -
启动uWSGI,其中包含
static-map配置、或--static-map参数。
解决方案2
1.访问需要设置允许的ip;
# DEBUG = True
DEBUG = False
# *允许所有
ALLOWED_HOSTS = ['127.0.0.1']
2.静态文件丢失由于DEBUG = False后,静态文件夹的路由丢失了,需要配路由; settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = 'static'
#这个是设置静态文件夹目录的路径
# STATICFILES_DIRS = (
# os.path.join(BASE_DIR, 'static'),
# )
# STATICFILES_DIRS=[os.path.join(BASE_DIR,’static’)] 这句是需要注释的
STATIC_ROOT=os.path.join(BASE_DIR,’static’) #用于处理静态文件
MEDIA_ROOT=os.path.join(BASE_DIR,’media’) # 用于处理上传的文件
主urls.py:
from django.views import static ##新增
from django.conf import settings ##新增
from django.conf.urls import url ##新增
from django.conf.static import serve
urlpatterns = [
## 静态文件夹路由
url(r'^static/(?P<path>.*)$', serve,
{'document_root': settings.STATIC_ROOT}, name='static'),
]
然后在执行静态文件收集
python manage.py collectstatic # 收集全部静态文件到STATIC_URL定义的路径内
启动uwsgi
uwsgi --ini uwsgi.ini
就可以在8080端口访问到Django项目
Nginx+uwsgi+Django启动项目
1.安装Nginx
apt-get install nginx
2.修改配置文件
/etc/nginx/nginx.conf目录下
user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
server {
listen 8000;
server_name blog;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 172.19.54.124:8080;
uwsgi_param UWSGI_SCRIPT blog.wsgi;
uwsgi_param UWSGI_CHDIR /project/blog;
}
location /media {
alias /project/blog/blog/media;
}
location /static {
alias /project/blog/blog/static;
}
}
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
#注意事项
user一定要为root
需要配置静态文件目录
启动Nginx
nginx
请先登录后回复
评论区空空如也...快来评论吧
沙发😀
2023年11月13日 16:06