项目准备及项目发布

一、配置404页面及500页面

  • 1、创建一个页面及创建视图函数
  • 2、配置路由

    # 配置404及500页面
    handler404 = 'user.views.error404'
    handler500 = 'user.views.error500'
    

二、项目的修改

  • 1、在settings.py中关闭debugger模型

    DEBUG = False
    
  • 2、在settings.py中设置可访问的

    ALLOWED_HOSTS = ['*']
    
  • 3、配置静态文件路径

    • 1.settings.py中配置

      STATICFILES_ROOT = os.path.join(BASE_DIR, 'static/')
      
    • 2.配置url地址

      from django.urls import path, include, re_path
      from django.conf import settings
      from django.views.static import serve
      
      urlpatterns = [
          re_path(r'^static/(?P<path>.*)', serve, {"document_root": settings.STATICFILES_ROOT}),
      ]
      

三、测试代码

  • 1、将本地虚拟环境的依赖环境包导出一份

    pip3 freeze > requirements.txt
    
  • 2、代码上传到服务器上(可以采用git方式或者推荐使用本地同步到服务器,参考下一章节)

  • 3、进入服务器的虚拟环境安装包

    pip3 install -r requirements.txt
    
  • 4、创建数据库

    create database 数据库名 charset utf8;
    
  • 5、进入虚拟环境生成数据库文件

    python manage.py makemigrations
    python manage.py migrate
    
  • 6、启动测试代码在服务器的情况

    python manage.py runserver 0.0.0.0:8000
    
  • 7、测试uwsgi

    uwsgi --http 0.0.0.0:8000 --module 项目名.wsgi
    

四、关于三个文件的内容

  • 1、收集项目中全部的静态文件

    python manage.py collectstatic
    
  • 2、uwsgi_params文件,直接拷贝放到项目里面就可以,拷贝地址

  • 3、在项目目录下创建一个项目名称_nginx.conf的配置文件

    # 配置uwsgi的访问的
    
    upstream django {
        # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
        server 127.0.0.1:8001; # for a web port socket (we'll use this first)
    }
    
    # 配置nginx的请求
    
    server {
        # the port your site will be served on
        listen      8000; # 端口号
        # the domain name it will serve for
        server_name 1**.**.156.230; # 域名或者ip地址
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        # 媒体的存放路径
        location /media  {
            alias /home/login_pro/media;  # 你项目中的媒体存放路径(在本项目中创建一个media,使用pwd查看当前的位置)
        }
    
        location /static {
            alias /home/login_pro/static; # 你项目中静态文件的存放路径
        }
    
        # Finally, send all non-media requests to the Django server.
        location / {
            uwsgi_pass  django;
            include     /home/login_pro/uwsgi_params; # 上一步你存放的uwsgi_params路径
        }
    }
    
  • 4、在项目下创建一个uwsgi.ini文件

    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    chdir = /home/login_pro
    # Django's wsgi file
    wsgi-file = login_pro/wsgi.py
    # 虚拟机的全路径
    home = /var/env/django_env
    
    # process-related settings
    # master
    master = true
    # maximum number of worker processes
    processes = 10
    # the socket (use the full path to be safe,这个地方的端口号要和上面(项目名称_nginx.conf)监听的一样
    http = :8001  
    # ... with appropriate permissions - may be needed
    chmod-socket = 664
    # clear environment on exit
    vacuum = true
    

五、配置nginx及发布项目

  • 1、删除文件/etc/nginx/sites-enabled里面的default文件

    cd /etc/nginx/sites-enabled
    rm -rf default
    
  • 2、将项目里面的项目名_nginx.conf的文件移到/etc/nginx/sites-enabled里面

    cd /home/login_pro
    mv login_pro_nginx.conf /etc/nginx/sites-enabled
    # 或者可以创建软连接(类似window系统中的创建桌面快捷方式)
    sudo ln -s 需要创建快捷方式的文件 创建到那个位置
    
  • 3、启动测试(如果uwsgi.ini文件不是在本项目下前面要加地址)

    uwsgi --ini uwsgi.ini
    
  • 4、客户端浏览器测试

六、补充说明一(解决端口被占用)

  • 1、杀死端口

    lsof -i :9000 # 查看9000号端口
    (djangodemo)root@iZ941w016mwZ:/home/djangodemo/test02# lsof -i :9000
    COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
    nginx   21572   root    7u  IPv4 2549884      0t0  TCP *:9000 (LISTEN)
    nginx   21573 nobody    7u  IPv4 2549884      0t0  TCP *:9000 (LISTEN)
    nginx   21574 nobody    7u  IPv4 2549884      0t0  TCP *:9000 (LISTEN)
    nginx   21575 nobody    7u  IPv4 2549884      0t0  TCP *:9000 (LISTEN)
    nginx   21576 nobody    7u  IPv4 2549884      0t0  TCP *:9000 (LISTEN)
    
    # 杀死进程释放端口
    
    sudo kill -9 21572 21573 21574 21575 21576
    
  • 2、查看某一个程序的进程

    ps aux | grep 程序名称(nginx/mysql)
    

七、关于uwsgi命令补充

  • 1、关闭全部的进程

    killall  -9 uwsgi(nginx)
    
  • 2、启动uwsgi

    # 测试用
    uwsgi uwsgi.ini
    # 后台启动
    nohup uwsgi uwsgi.ini &
    
  • 3、查看当前uwsgi的位置

    which uwsgi
    

八、参考文档

九、部署项目的代码代码下载

results matching ""

    No results matching ""