云服务: 阿里云、腾讯云、华为云、

系统:ubuntu18.04

Python: 3.7+

Http服务器: Nginx

总结过程:

  1. 1.购买云服务器 (镜像选择推荐使用 ubuntu18.04
  2. 2.在云服务器中先测试项目(安装解决依赖和数据库等环境问题)
  3. 3.在服务器中安装uwsginginx
  4. 4.配置uwsginginx
  1. 购买阿里云服务器

  2. 链接服务器部署项目

    1. 安装python及项目所需依赖
      1. pip3 install django==2.2.*
      2. pip3 install mysqlclient # 如果未安装mysql可能会出现错误,可以先安装mysql
  1. 安装mysql数据库及配置数据

    1. apt-get install mysql-server # 安装mysql服务
    2. apt-get install libmysqlclient-dev # mysql客户端
  1. 使用navicat等工具进行远程连接mysql时的注意事项

    1. mysql默认的root用户只能本地连接,因此可以创建一个不限来源地的用户
    2. mysql服务器的配置文件中,默认只能本地连接mysql,因此可以修改配置文件 注释bind-address
    3. 检测阿里云等云服务器是否开启了 3306的端口,否则不能连接

关于wsgi和uwsg及nginx的区别和关系

wsgi:

  1. 让任意一个服务器都能搭配任意一个web框架,需要遵守wsgi的通用网关接口,就是一个协议

uwsgi:

  1. uwsgi就是实现了wsgiweb服务器,可以接受客户端的请求,并转发响应的程序。
  2. 使用uwsgi+django就可以实现一个基本的网站功能,为什么还需要nginx

nginx:

  1. nginx是一个专业的HTTP服务器,可以作为代理服务器使用。
  1. 搭建uwsgi启动项目

    1. 安装uwsgi
      pip3 install uwsgi --upgrade

    2. 安装完成后配置uwsgi.ini文件

      1. 创建uwsgi.ini文件

      2. 创建script目录,存放配置

      3. 编辑uwsgi.ini文件内容如下: 目录参考个人目录进行修改

        1. # uwsig使用配置文件启动
        2. [uwsgi]
        3. # 项目目录
        4. chdir=/var/www/bookshop
        5. # 指定项目的application
        6. module=bookshop.wsgi:application
        7. # 指定sock的文件路径
        8. socket=/var/www//bookshop/script/uwsgi.sock
        9. # 进程个数
        10. workers=5
        11. pidfile=/var/www/bookshop/script/uwsgi.pid
        12. # 指定IP端口
        13. http=0.0.0.0:8000
        14. # 指定静态文件
        15. static-map=/static=/var/www/bookshop/static/
        16. # 启动uwsgi的用户名和用户组
        17. uid=www-data
        18. gid=www-data
        19. # 启用主进程
        20. master=true
        21. # 自动移除unix Socket和pid文件当服务停止的时候
        22. vacuum=true
        23. # 序列化接受的内容,如果可能的话
        24. thunder-lock=true
        25. # 启用线程
        26. enable-threads=true
        27. # 设置自中断时间
        28. harakiri=30
        29. # 设置缓冲
        30. post-buffering=4096
        31. # 设置日志目录
        32. daemonize=/var/www/bookshop/script/uwsgi.log
        33. # 权限
        34. chmod-socket = 666
        35. chown-socket = www-data
  1. 安装nginx并进行测试
    apt-get install nginx

  2. 默认会启动80端口,可以在浏览器访问ip地址进行测试

  3. 创建项目的配置文件,或者直接修改原nginx配置文件都可以

  1. vim /etc/nginx/sites-available/webtest.conf
  1. ```shell server { listen 80; server_name django-web-bookshop; charset utf-8;

    client_max_body_size 75M;

    location / {

    1. uwsgi_pass unix:///var/www/bookshop/script/uwsgi.sock;
    2. include /etc/nginx/uwsgi_params;

    }

    location /media {

    alias /path/to/project/media;

    }

    location /static {

    1. alias /var/www/bookshop/static/;

    }

} ```

7.创建完配置文件后创建软连接
sudo ln -s /etc/nginx/sites-available/webtest.conf /etc/nginx/sites-enabled/webtest.conf

tips:如果在浏览器访问新配置未生效时,可以删除默认生效配置

rm /etc/nginx/sites-enabled/default

  1. 拷贝项目到/var/www这个目录
    cp -r /root/bookshop/bookshop /var/www/

  2. 启动uwsgi服务
    uwsgi --ini uwsgi

  3. 启动nginx,重新加载配置文件
    nginx -s reload