Django 上线部署 nginx +uswgi

Posted 青春叛逆者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 上线部署 nginx +uswgi相关的知识,希望对你有一定的参考价值。

使用上传文件软件连接阿里云服务器公网IP

在root根目录下找到var在里面新建一个www文件目录,把自己的项目传进去,本次传的是博客项目

先更新一下:apt-get update
安装git:apt-get install(不安装无法下载虚拟环境的pyenv)
安装编辑器:apt-get install vim
安装数据库:apt-get install mysql-server (需要输入数据库密码)
      apt-get install libmysqlclient-dev
安装redis : sudo apt-get install redis-server
安装nginx:apt-get install nginx

安装虚拟开发环境

pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。pyenv官方地址https://github.com/pyenv/pyenv-installer
 安装pyenv,在命令行下键入:
 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
 #默认安装到当前用户的工作目录下的.pyenv,我们可以查看一下
cd ~
ls -la
将安装路径写入~/.bashrc
将以下三条语句写入 ~/.bashrc (每个人的都不一样,上面安装后最后出现的三句话就是)
sudo vim .bashrc
跳到文件末端
shift+G
按o
export PATH="/home/zhu/.pyenv/bin:$PATH" 
eval
"$(pyenv init -)"
eval
"$(pyenv virtualenv-init -)"
按esc
按 :x

source  ~/.bashrc  #配置立刻生效
$echo $PATH #如果路径第一个结尾是shims则表示成功 
/home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims
:/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin
:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 
更新一下 pyenv update 
列出pyenv中所有可用的python版本 pyenv versions
可以看到系统没有任何编译工具,我们需要下载python
安装python
 ```shell
  #1.在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:
  $ sudo apt-get install libc6-dev gcc
  $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

  #2. 安装python
  $ pyenv install 3.6.6 -v  #-v 以日志模式显示安装过程
  #因为pyenv会自动到github上下载,速度超慢,所以一般会选择使用curl或者wget下载到~/.pyenv/cache下,然后再用pyenv安装,下面是可选的安装模式
  $ cd ~/.pyenv
  $ sudo mkdir cache
  $ wget -c http://mirrors.sohu.com/python/3.6.6/Python-3.6.6.tar.xz -P  ~/.pyenv/cache/
  $ pyenv install 3.6.6 -v(一定要用这个安装python)

  #3.更新pyenv数据库
   $ pyenv rehash

  #4.列出所安装的python版本
    $ pyenv versions

  #5.切换python版本
  $ pyenv  global 3.6.6

  #6.验证版本
   $ python
  ```
 安装virtualenv(可选)

  如果是python3以上,安装完pyth就已经安装了virtualenv,就不用安装了

  ~~~
  #安装
  $ pip install virtualenv

  #或者,如果提示版本不匹配,可以使用--upgrade参数
  $ sudo pip install --upgrade virtualenv
  ~~~


- 使用virtualenv创建项目的虚拟环境

**一个项目创建一个virtualenv的虚拟环境**,在这个环境中,可以用pip安装项目所需的库,不会影响其他项目。切记一个项目一个虚拟环境,否则可能会发生莫名的错误。

~~~
#1.首先创建项目目录
$ sudo mkdir -p myproject/blog
cd myproject/blog

#2.创建项目的虚拟环境
#用法:pyenv virtualenv python版本号 虚拟环境名
$ pyenv virtualenv 3.6.6 env3.6.6  #注意版本号必须是已经安装的,否则会报错

#3.切换到虚拟环境
python@ubuntu:/myproject/blog$ pyenv activate env3.6.6

(env3.6.6) python@ubuntu:/myproject/blog$  # (env3.6.6)表示该项目处于虚拟环境中

#验证
(env3.6.6) python@ubuntu:/myproject/blog$ python
Python 3.6.6 (default, Mar 29 2018, 10:33:37) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

#4. 切出虚拟环境
(env3.6.6) python@ubuntu:/myproject/blog$ pyenv deactivate env3.6.6
~~~
切换到你上传的项目目录
cd /var/www/django_blog
如果你没有退出虚拟环境就不用切换了,如果退出了就重新激活
pyenv activate env3.6.6
pip install django==1.11.16
pip install pymysql
pip install pillow
pip install django-tinymce
插入你所有需要的包,不然最后会有报错

这些是我需要的包

pip install uwsgi
编辑uwsgi配置文件
 sudo vim uswgiconf.ini
[uwsgi]
   socket = 0.0.0.0:8000 # uwsgi的监听端口
# 指向项目根目录
  chdir =  /var/www/django_blog
   # wsgi.py所在位置
  wsgi-file = django_blog/wsgi.py
   module = django_blog.wsgi
   # 虚拟开发环境位置(一定要改成你自己的虚拟环境目录)  virtualenv = /root/.pyenv/versions/env3.6.6
   
   master = true
   #处理器数
   processes = 1
# 线程数
   threads = 4
#启动一下看看有没有报错
uwsgi uswgiconf.ini
可以看一下下面是没有报错的
然后ctrl +c结束程序配置nginx

新建并配置
sudo vim /etc/nginx/sites-available/myblog

配置内容
server {
        listen 80;
        server_name www.olnyou.cn;(你自己的域名)
        location / {
                uwsgi_pass      127.0.0.1:8000; 
           include uwsgi_params; 
           uwsgi_param UWSGI_SCRIPT django_blog.wsgi;
           
                uwsgi_param UWSGI_CHDIR  /var/www/django_blog;
        }
        
        location /static {
                alias /var/www/django_blog/static/;(静态文件位置)
        }
   }
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/myblog myblog#建立软连接
ll
如下图没有飙红证明没有问题

 

#重启nginx
service nginx restart
最好把你的数据库也上传上来,后面要用到
上传阿里云短信验证,先给他建一个文件目录,如下图

cd  
cd duanxinyanzheng/dysms_python
ls
python setup.py install
mysql -uroot -p
输入密码
创建你自己的数据库
create database blog;
exit

找到你的数据。进行数据恢复 
mysql -uroot -p blog2 <blog2.sql
切换到你的项目目录
cd /var/www/django_blog/
启动uwsgi
uwsgi uswgiconf.ini

现在登录你的网址就可以访问了,有不懂的欢迎交流。

以上是关于Django 上线部署 nginx +uswgi的主要内容,如果未能解决你的问题,请参考以下文章

nginx + uswgi +django

Plasm部署智能合约——nginx反代转发plasm节点服务——2021.6.2

Plasm部署智能合约——nginx反代转发plasm节点服务——2021.6.2

Django Nginx反代 获取真实ip

部署Nginx+Tomcat负载均衡群集

CentOS下实现Flask + Virtualenv + uWSGI + Nginx部署