阿里云Ubuntu安装Django+Nginx+uwsgi避开所有坑

Python环境

  • Python升级问题
    Ubuntu默认安装了Python2.7和Python3.5,其中因为一些原因没有运行起来Django,我以为是Python版本问题,后来查阅资料发现3.5几乎兼容所有Django的版本,但是不支持Django3,所以不用升级可以直接安装Django2。升级Python3.7的之后出现某个库缺失的报错,安装完成之后又重新编译了一遍,由于忘记清理之前的安装包,后面再重新安装Django时会有问题
    升级Python
    _sqlite3库缺失
    pip3 intsall django==2.2
  • OpenSSL模块问题
    在安装secrets模块时报错OpenSSL没有安装,但是pip3 install OpenSSL无果,找了很多博客终于找到了安装的命令,太坑了也
    pip3 install pyOpenSSL
  • 依赖库
    sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev
    sudo apt-get install liblzma-dev libffi-dev libc6-dev
    sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev
    sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
  • Unable to locate package python3-pip
    sudo apt-get update
  • Error: Not Found for url:的解决方法
    换源

搭建Django框架

  • pip3 install django

创建项目

django-admin start project xxx

  • 修改xxx/settings.py中的ALLOWED_HOSTS 改为 [’*"]
  • 运行hello django项目
    python3 manage.py runserver 0.0.0.0:8000
    0.0.0.0是指对所有ip开放,端口记得要在阿里云的安全组里开放
  • 访问http://ip:8000可以看到Django的首页

实现接口

  • 创建Django app
    python3 manage.py startapp xx
  • 在setting.py里面添加app接口
    INSTALL_APPS中添加‘xx’
  • 在project中设置路由将url转发给接口处理

uwsgi配置

  • 安装uwsgi
    pip3 install uwsgi
  • 配置Django项目的uwsgi.ini,在根目录新建uwsgi.ini文件
[uwsgi]
# django项目监听的socket文件(可以使用端口代替)
socket = ./calculator.sock
# django项目所在目录
chdir = .
# django项目wsgi文件
wsgi-file = ./calculator/wsgi.py

master = true
processes = 2
threads = 4
vacuum = true

# 通过touch reload可以重启uwsgi服务器
touch-reload = ./reload
# 日志输出
daemonize = calculator.log
  • 运行uwsgi服务
    uswgi --ini uwsgi.ini
    touch reload

在宝塔面板安装Nginx

  • 直接在服务器手动安装Nginx也比较简单,但是由于我的域名申请ssl证书有点问题,所以直接借助于宝塔面板的ssl申请
  • 在宝塔面板安装Nginx
  • 在网站添加站点,申请ssl证书,把项目目录移到站点的根目录下,其实也可以直接在这边搭建Django,因为我是后来才换成了宝塔Nginx,所以就把项目移过来了
  • 添加配置
    在配置文件中添加
location ~ ^/calculate {
        uwsgi_pass unix:/www/wwwroot/ts.tcualhp.cn/calculator/calculator.sock;
        include uwsgi_params;

你可能感兴趣的:(阿里云Ubuntu安装Django+Nginx+uwsgi避开所有坑)