将本地环境打包成requirements.txt文件并上传之服务器。
------更新本地包---------
------更新pip版本---------
------安装SSH---------
------安装 Nginx---------
------安装 uwsgi---------
测试uwsgi
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return b'hello World'
-------修改django项目的配置文件-----------
DEBUG = False(线上的项目一定要修改成False) ALLOWED_HOSTS = ["*"] 在服务器上搭建数据库,并将项目的数据库配置改为远程数据库配置。 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'blog_django', 'HOST': '114.116.83.180', 'USER': 'root', 'PASSWORD': , 'PORT': 3306 } }
配置完成,将项目上传到Linux系统中
为你的项目创建一个uwsgi的配置文件,统一命名为uwsgi.ini,可以放在任意位置,但是为了方便查找,统一设置在项目根目录下。
[uwsgi] # Django-related settings # uwsgi这个服务监听的是9001端口,如果nginx想要向uwsgi转发请求,那么nginx必须使用8000端口发送请求。 socket = 127.0.0.1:9001 # 项目绝对路径(需要自己设置) chdir = /root/project/testweb # Django的wsgi文件相对路径(不要写绝对路径,自己设置) wsgi-file = testweb/wsgi.py # process-related settings # master master = True # 最大进程数 processes = 6 # 线程数 threads = 3 #设置此参数,有一个主进程 master=True #守护进程的方式运行,log日志存在此log文件里 daemonize=/var/log/uwsgi/blog_project.log #主进程id写入文件里 pidfile= /var/log/nginx/uwsgi.pid # ... with appropriate permissions - may be needed # chmod-socket = 664 #退出时,清理环境 vacuum = True reload-mercy = 10 # 服务 5000 个请求后重生进程 max-requests = 5000 limit-as = 512 buffer-size = 30000 # 让uwsgi服务重启,以后修改python文件都会立刻生效。 py-autoreload=1
----进入/etc/nginx/conf.d文件夹下创建django_nginx.conf文件(文件名称自定义,后缀必须是.conf)------
server { # listen 是nginx服务监听的端口,如果用户想要访问后台项目,请使用8000端口。该端口可以自定义。 # uwsgi的端口是供内部各个服务使用的。Nginx的端口是供用户使用的。 listen 8000; (这个端口就是浏览器访问项目使用的端口,必须在服务器开放这个端口。) server_name 127.0.0.1 access_log /var/log/nginx/logindemo_access.log; error_log /var/log/nginx/logindemo_error.log; charset utf-8; client_max_body_size 75M; root /aproject/blog_project;(需要自己改) location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9001;(一定要和uwsgi.ini监听的端口保持一致) uwsgi_read_timeout 60; } location /static/ { expires 30d; autoindex on; add_header Cache-Control private; alias /aproject/blog_project/static/;(需要自己改) } }
重启nginx
----通过uwsgi运行django项目------
再次通过浏览器访问项目.出现界面则表示部署正确
----------------问题-------------------
uwsgi遇到ImportError: No module named django.core.wsgi问题
如果访问出现500错误
netstat -ap | grep 8080 查看8080端口是谁在使用
kill -9 pid号 强制关闭占用端口的程序
netstat -ntlp 查看所有端口