Django+nginx+uwsgi上线阿里云

  • 前言

之前在阿里云上线过一次django项目,时间长了都快忘记了,今天没事做就再温习了一遍,跟着我的步骤做,一定可以上线成功!废话不多说,开整~

  • 第一步,搭建环境

1.在root用户下更新软件列表(不更新可能装不上东西)

apt update

2.安装常用软件

apt install nginx



apt install mysql-server #安装过程会弹出一个输入密码的框,这是你进入数据库的密码

apt install git
apt install vim

3.安装虚拟开发环境pyenv

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

Django+nginx+uwsgi上线阿里云
然后输入命令进入 .bashrc 进去后把刚复制的三句话放置到文件最后,wq保存退出后执行命令让它生效,此时就可以生效
1.vim .bashrcda #打开末尾添加三句话
2.source .bashrc

cd .pyenv  #进入这个文件
mkdir cache #创建cache文件
cd cache/ #进入此目录
这时需要安装python

#在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:我安装的是3.7.1版本

wget -c http://mirrors.sohu.com/python/3.7.1/Python-3.7.1.tar.xz -P  ~/.pyenv/cache/

做安装

pyenv install 3.7.1 -v
pyenv rehash

pyenv versions   
pyenv  global 3.7.1
  • 第二步,上传项目文件
    使用winscp将项目上传到/var/www下建的文件夹里
    Django+nginx+uwsgi上线阿里云
    cd blog #进入你自己项目
    接着创建一个自己的虚拟环境。用法如下:pyenv virtualenv python版本号 虚拟环境名
    pyenv virtualenv 3.7.1 blog #注意版本号必须是已经安装的,否则会报错
    切换到你创建的虚拟环境

    pyenv activate blog

切换后在命令行的最前面出现一个括号里写着你的虚拟环境
Django+nginx+uwsgi上线阿里云
然后在这个虚拟环境下安装项目所需要的包
在这里我使用了导出的requirements.txt文件
具体方法如下:
进入你项目的虚拟环境:
命令:pip freeze >requirements.txt

注意:导出的路径为绝对路径
可切换到其他环境中,再把上面文件中的包一次安装

将文件上传到服务器上
Django+nginx+uwsgi上线阿里云
workon 新环境名
然后在阿里云上的虚拟环境开始安装

pip install -r requirements.txt

然后等他安装完结束,如果有个别没有安装好的,可以单独安装一次
好了,安装完成后可以检查一下如自己的生产环境的是否一致
然后别忘了安装uwsgi

pip install uwsgi

Django+nginx+uwsgi上线阿里云

  • 第三部分,配置nginx和uwsgi
    进入自己项目根目录

    vim uwsgiconf.ini

后把下方的配置文件放到里面

#头部
[uwsgi]
 #外部访问地址,可以指定多种协议,现在用http便于调试,之后用socket  
socket = 0.0.0.0:8000 # uwsgi的监听端口
 #指向项目根目录
chdir =  /var/www/blog
 #wsgi.py所在位置
wsgi-file = /var/www/blog/my_blog/wsgi.py
module = my_blog.wsgi
 #虚拟开发环境位置(一定要改成你自己的虚拟环境目录)

#virtualenv = /root/python/.pyenv/versions/3.7.1
home = /root/.pyenv/versions/blog

plugins = python
      ​ 
master = true
      ​ 
     #处理器数
processes = 1
      ​ 
      #线程数
threads = 2

然后再配置nginx
最后的blog是自己创建的一个文件名

vim /etc/nginx/sites-available/blog
server {
      listen 80;
      server_name www.xiejianxiong.top; #这里写自己的域名
      location / {
          # 转发端口必须和uwsgiconf.ini中socket端口一致
          uwsgi_pass      127.0.0.1:8000; 
          include uwsgi_params; 
          uwsgi_param UWSGI_SCRIPT blog.wsgi; 
          # 项目的根目录
          uwsgi_param UWSGI_CHDIR  /var/www/blog;
      }
      # 静态资源所在位置
      location /static {
          alias /var/www/blog/static/;
      }
  }

然后配置nginx的软链接
进入这个目录里
Django+nginx+uwsgi上线阿里云

ln -s 目标地址 源地址

ln -s ../../../web-admin/etc/nginx-location.conf web-admin.conf

我是这样配置的 这里有个空格不要忘了

ln -s /etc/nginx/sites-available/blog blog

ll #查看结果里没有报红颜色,就成功
然后重启服务,如果不报错,就ok,如果报错,可能是语法问题

service nginx restart

然后最后一步,启动uwsgi服务器
激动人心的时候到了!!!

uwsgi uwsgiconf.ini

Django+nginx+uwsgi上线阿里云
公网*问一下,记得写对路径,参照一下自己django的url是如何配置的
Django+nginx+uwsgi上线阿里云
如果成功了的话,记得点个赞!蟹蟹